SavytBot
Il crawler di savyt. Questa pagina dice chi è, come si comporta e come si blocca.
savyt's crawler. Who it is, how it behaves, how to block it. English below.
Chi siamo
savyt è un'app di confronto prezzi in sviluppo, e SavytBot è il crawler che usiamo per costruirla. Cosa chiede, con che frequenza e come lo si ferma sta scritto qui sotto: non c'è altro.
Lo User-Agent
Ogni nostra richiesta si presenta con questa stringa, e non con un'altra:
SavytBot/1.0 (+https://savyt-bot.alum-lab.com; bot@alum-lab.com)
Il nome prodotto, cioè quello che conta nel robots.txt, è
SavytBot.
Come bloccarci
Due righe nel vostro robots.txt, e non passiamo più:
User-agent: SavytBot
Disallow: /
Non esiste un modo di ignorarlo. Il robots.txt si legge
prima di toccare la rete: se il percorso è vietato la richiesta non parte
affatto, il programma si interrompe con un errore, e non c'è né un'opzione né una
variabile d'ambiente per proseguire. Vale anche per un divieto parziale: se volete
lasciarci una parte e chiuderne un'altra, Disallow su un percorso solo
basta.
Con che frequenza
- Al massimo una richiesta al secondo per host. È il limite del raccoglitore, e vale per host: se avete più domini non si sommano.
- Un
Crawl-delaypiù lento nel vostrorobots.txtvince. Se ne dichiarate uno più alto del nostro limite, andiamo alla vostra velocità e non alla nostra. Fra due valori diversi prendiamo il più lento. - Lo strumento di misura aspetta due secondi fra una richiesta e la successiva, sempre, anche verso host diversi.
- Timeout: da 15 a 30 secondi, secondo lo strumento: 30 per il raccoglitore, 20 per la lettura delle schede prodotto, 15 per lo strumento di misura.
Su tre indirizzi andiamo più lenti del nostro stesso limite. Sono quelli su cui apriamo il maggior numero di pagine, e su un volume del genere preferiamo pesare meno del minimo che ci siamo dati:
| indirizzo | una richiesta ogni |
|---|---|
spesaonline.conad.it | 3 secondi |
www.maurysonline.it | 2 secondi |
shop.risparmiocasa.com | 2 secondi |
Vale per l'indirizzo scritto qui e non per il dominio: gli altri indirizzi delle stesse
catene restano al limite di una richiesta al secondo. Se volete un passo diverso, per
questi o per qualunque altro, scriveteci a
bot@alum-lab.com o mettete un
Crawl-delay nel robots.txt.
Dove il server le supporta usiamo richieste condizionali
(ETag, Last-Modified): se la pagina non è cambiata ci basta
un 304 e non riscarichiamo il corpo.
Se ci dite di rallentare
Retry-Afterlo rispettiamo, in secondi o come data, su429e sui5xx: aspettiamo quello che dite voi, non il nostro tempo di attesa.- Se chiedete più di 300 secondi ci fermiamo, invece di ritentare: la corsa esce con un errore e ripasserà un altro giorno.
- Ritentativi: quattro, con attesa crescente da 1,5 secondi
(1,5 → 3 → 6). Solo su
429,500,502,503,504: un404o un403non si ritentano mai. - Lo strumento di misura non ritenta affatto.
Cosa chiediamo
Le pagine pubbliche di cataloghi, offerte e punti vendita dei supermercati del pilota di Roma. Tutto in sola lettura, mai autenticati.
Schedulato
- Cataloghi, il giovedì. Conad, Coop, Todis, Lidl, Risparmio Casa, Maury's, Eurospin e le undici insegne del gruppo GROS: le pagine di categoria e le schede prodotto.
- Offerte, il lunedì. Todis, Coop, Eurospin, Risparmio Casa, Maury's: le pagine delle promozioni della settimana.
- Volantini, una volta al giorno. Le pagine dei volantini promozionali di due catene. Le depositiamo così come sono e non ne estraiamo niente: nessun prezzo, nessuna lettura dei contenuti.
A mano, e non schedulato
- Le schede prodotto di Conad, Maury's, Risparmio Casa, Lidl e Todis, per leggere il codice a barre che la catena dichiara per il proprio articolo.
- Gli elenchi dei punti vendita, che cambiano di rado e si rileggono solo quando serve.
- Uno strumento di misura, su un perimetro di siti di supermercati. Serve a sapere se un sito risponde diversamente a un bot che dice il proprio nome, e per farlo chiede la stessa pagina due volte, una col nostro nome e una con quello di un browser. Fa al massimo tre richieste per host, in sola lettura, e delle pagine che riceve non conserva niente su disco.
- Una geocodifica una tantum degli indirizzi dei punti vendita, su
nominatim.openstreetmap.org, non più di una richiesta al secondo come la loro politica d'uso chiede. Si presenta comeSavyt/0.1e non comeSavytBot/1.0.
Fermo per nostra decisione
- Una catena il cui
robots.txtdiceDisallow: /: le chiamate sono state tolte dal codice, non disattivate. - Open Food Facts: abbiamo smesso di usarne i dati, e le funzioni che lo interrogavano ora si rifiutano di partire.
Nient'altro. Non compiliamo profili, non raccogliamo dati personali, non facciamo richieste autenticate e non proviamo a entrare da nessuna parte.
Come contattarci
Scrivete a bot@alum-lab.com: la casella è
letta da una persona. Se il nostro passaggio vi dà un problema, anche solo di carico,
ditecelo e ne parliamo. Non serve aspettare che il robots.txt faccia
effetto.
English
Who we are
savyt is an app under development, and SavytBot is the crawler we use while building it. What it requests, how often, and how to stop it is all set out below: there is nothing else.
User-Agent
Every request we make carries this string and no other:
SavytBot/1.0 (+https://savyt-bot.alum-lab.com; bot@alum-lab.com)
The product token, the one that matters in robots.txt, is
SavytBot.
How to block us
Two lines in your robots.txt and we stop coming:
User-agent: SavytBot
Disallow: /
There is no way for us to ignore it. robots.txt is read
before any network call: if a path is disallowed the request is never sent, the
program stops with an error, and there is no flag and no environment variable to carry
on. Partial rules work the same way: one Disallow path is enough.
How often
- At most one request per second, per host. That is the collector's limit, and it is per host: separate domains do not add up.
- A slower
Crawl-delayin yourrobots.txtwins. Declare a higher value than our limit and we go at your pace, not ours. Between two values we take the slower one. - The measurement tool waits two seconds between requests, always, even across different hosts.
- Timeout: 15 to 30 seconds, depending on the tool: 30 for the collector, 20 for reading product pages, 15 for the measurement tool.
On three addresses we go slower than our own limit. They are the ones where we open the most pages, and at that volume we would rather weigh less than the minimum we set ourselves:
| address | one request every |
|---|---|
spesaonline.conad.it | 3 seconds |
www.maurysonline.it | 2 seconds |
shop.risparmiocasa.com | 2 seconds |
This is per address, not per domain: the other addresses of the same chains stay at one
request per second. If you want a different pace, for these or for any other, write to
bot@alum-lab.com or put a Crawl-delay
in your robots.txt.
Where the server supports them we use conditional requests
(ETag, Last-Modified): if nothing changed, a 304
is enough and we do not re-download the body.
If you tell us to slow down
- We honour
Retry-After, as seconds or as a date, on429and5xx: we wait as long as you say, not as long as our own backoff would. - If you ask for more than 300 seconds we stop instead of retrying: the run fails and comes back another day.
- Retries: four, with increasing backoff from 1.5 seconds
(1.5 → 3 → 6). Only on
429,500,502,503,504: a404or a403is never retried. - The measurement tool never retries at all.
What we request
The public catalogue, offer and store-locator pages of the supermarkets in our Rome pilot. All read-only, never authenticated.
Scheduled
- Catalogues, on Thursdays. Conad, Coop, Todis, Lidl, Risparmio Casa, Maury's, Eurospin and the eleven GROS-group chains: category pages and product pages.
- Offers, on Mondays. Todis, Coop, Eurospin, Risparmio Casa, Maury's: the pages listing the week's promotions.
- Flyers, once a day. The promotional flyer pages of two chains. We store them as they are and extract nothing from them: no prices, no parsing of the contents.
By hand, not scheduled
- Product pages for Conad, Maury's, Risparmio Casa, Lidl and Todis, to read the barcode the chain declares for its own item.
- Store locator listings, which change rarely and are re-read only when needed.
- One measurement tool, over a perimeter of supermarket sites. It answers one question: does a site respond differently to a bot that states its own name? To do that it requests the same page twice, once under our name and once under a browser's. It makes at most three requests per host, read-only, and keeps nothing of the pages it receives on disk.
- A one-off geocoding of store addresses against
nominatim.openstreetmap.org, at no more than one request per second as their usage policy requires. It identifies asSavyt/0.1, not asSavytBot/1.0.
Stopped by our own decision
- One chain whose
robots.txtsaysDisallow: /: the calls were removed from the code, not switched off. - Open Food Facts: we stopped using their data, and the functions that queried it now refuse to run.
Nothing else. We build no profiles, collect no personal data, make no authenticated requests and do not attempt to reach anything that is not public.
Contact
Write to bot@alum-lab.com: the mailbox is
monitored. If
our visits cause you trouble, load included, tell us and we will sort it out. No need to
wait for robots.txt to take effect.