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 in sviluppo, e SavytBot è il bot che usiamo per lavorarci. La facciamo in quattro. 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.
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.
- Lo strumento di misura non ritenta affatto.
Cosa raccogliamo, oggi
- Le pagine dei volantini promozionali di una catena di supermercati, una volta al giorno. Le depositiamo così come sono e non ne estraiamo niente: nessun prezzo, nessuna lettura dei contenuti.
- Uno strumento di misura, che lanciamo a mano e non è schedulato, su un perimetro di 24 siti di supermercati. Serve a sapere se un sito risponde diversamente a un bot che dice il proprio nome. Fa al massimo tre richieste per host, in sola lettura, e delle pagine che riceve non conserva niente su disco.
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. There are four of us. 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.
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.
- The measurement tool never retries at all.
What we collect today
- The promotional flyer pages of one supermarket chain, once a day. We store them as they are and extract nothing from them: no prices, no parsing of the contents.
- One measurement tool, run by hand and not scheduled, over a perimeter of 24 supermarket sites. It answers one question: does a site respond differently to a bot that states its own name? It makes at most three requests per host, read-only, and keeps nothing of the pages it receives on disk.
Nothing else. We build no profiles, collect no personal data, make no authenticated requests and try to get into nowhere.
Contact
Write to bot@alum-lab.com: a person reads it. 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.