Come essere un buon cittadino durante la scansione dei siti Web?


83

Svilupperò alcune funzionalità che eseguiranno la scansione di vari siti Web pubblici e elaboreranno / aggregeranno i dati su di essi. Niente di sinistro come la ricerca di indirizzi e-mail - in realtà è qualcosa che potrebbe effettivamente indirizzare traffico aggiuntivo ai loro siti. Ma sto divagando.

Oltre a onorare robots.txt, ci sono delle regole o linee guida, scritte o non scritte, che dovrei seguire per (a) evitare di apparire malizioso e potenzialmente essere bandito e (b) non causare problemi ai proprietari / webmaster del sito?

Alcuni esempi a cui riesco a pensare che potrebbero o meno avere importanza:

  • Numero di richieste parallele
  • Tempo tra le richieste
  • Tempo tra intere ricerche per indicizzazione
  • Evitare collegamenti potenzialmente distruttivi (non voglio essere il Ragno del Destino , ma chissà se questo è persino pratico)

In realtà è solo uno sputo-balling; c'è qualche saggezza provata là fuori che è ampiamente applicabile per chiunque intenda scrivere o utilizzare un ragno?


1
Sebbene le risposte di seguito forniscano un'ottima risposta su come eseguire la scansione dei contenuti in modo rispettoso, tenere presente un uso accettabile di tali contenuti dopo averli sottoposti a scansione. La ripubblicazione, in tutto o in parte, può costituire una violazione del copyright dei proprietari.
Gavin Coates,

Risposte:


85

Oltre a obbedire a robots.txt, obbedire nofollowe noindexin <meta>elementi e collegamenti:

  • Ci sono molti che credono che robots.txt non sia il modo corretto per bloccare l'indicizzazione e, a causa di quel punto di vista, hanno chiesto a molti proprietari di siti di fare affidamento sul <meta name="robots" content="noindex">tag per dire ai web crawler di non indicizzare una pagina.

  • Se si sta tentando di creare un grafico delle connessioni tra i siti Web (qualcosa di simile a PageRank), (e <meta name="robots" content="nofollow">) si suppone che il sito di origine non si fidi abbastanza del sito di destinazione per dargli un'approvazione adeguata. Pertanto, mentre è possibile indicizzare il sito di destinazione, non è necessario memorizzare la relazione tra i due siti.

La SEO è più un'arte che una vera scienza, ed è praticata da molte persone che sanno cosa stanno facendo e molte persone che leggono i riassunti delle persone che sanno cosa stanno facendo. Incontrerai problemi in cui verrai bloccato dai siti per aver fatto cose che altri siti hanno trovato perfettamente accettabili a causa di una regola che qualcuno ha sentito o letto in un post sul blog su SEOmoz che può o non può essere interpretato correttamente.

A causa di quell'elemento umano, a meno che tu non sia Google, Microsoft o Yahoo !, si presume che sia dannoso se non dimostrato diversamente. È necessario prestare particolare attenzione per comportarsi come se non si trattasse di una minaccia per il proprietario di un sito Web e agire in base a come si desidera che un crawler potenzialmente dannoso (ma si spera benigno) agisca:

  • smetti di eseguire la scansione di un sito quando rilevi di essere bloccato: 403 / 401s su pagine che conosci come lavoro, limitazione, timeout, ecc.
  • evitare scansioni esaustive in periodi di tempo relativamente brevi: eseguire la scansione di una parte del sito e tornare più tardi (qualche giorno dopo) per eseguire la scansione di un'altra parte. Non effettuare richieste parallele.
  • evitare la scansione di aree potenzialmente sensibili: /admin/ad esempio URL con al loro interno.

Anche allora, sarà una battaglia in salita a meno che non ricorra a tecniche black hat come lo spoofing UA o mascherare di proposito i tuoi modelli di scansione: molti proprietari di siti, per le stesse ragioni sopra, bloccheranno a vista un crawler sconosciuto invece di prendere la possibilità che qualcuno non stia cercando di "hackerare il proprio sito". Preparati a molti fallimenti.

Una cosa che potresti fare per combattere l'immagine negativa che un crawler sconosciuto avrà è di chiarire nella tua stringa agente utente chi sei:

Aarobot Crawler 0.9 created by John Doe. See http://example.com/aarobot.html for more information.

Dove http://example.com/aarobot.htmlspiega cosa stai cercando di realizzare e perché non sei una minaccia. Quella pagina dovrebbe avere alcune cose:

  • Informazioni su come contattarti direttamente
  • Informazioni su cosa raccoglie il crawler e perché lo sta raccogliendo
  • Informazioni su come annullare la sottoscrizione e cancellare i dati raccolti

Quest'ultima è la chiave: una buona rinuncia è come una Garanzia di rimborso ™ e segna una quantità irragionevole di buona volontà. Dovrebbe essere umano: un semplice passo (o un indirizzo e-mail o, idealmente, un modulo) e completo (non dovrebbero esserci "trucchi": opt-out significa che smetti di strisciare senza eccezioni).


18
Enorme +1 per il suggerimento di inserire informazioni chiare nell'Utente-Agente. Ho avuto il compito di esaminare attentamente i log del server web per capire chi stava eseguendo il ragno di un grosso sito, e non è divertente cercare di rintracciare chi gestisce tutti i ragni oscuri.
Carson63000,

4
È abbastanza comune inserire l'URL nel modulo (+http://example.com/aarobot.html). Non so quale sia lo scopo del +segno, ma l'ho visto spesso. Web-Sniffer lo fa, così come molti altri.
TRiG

Questa è un'ottima informazione, ma sono confuso su una cosa: fai menzione rel="noindex"come se fosse un <a>attributo, ma la pagina a cui ti colleghi lo descrive come parte dell'attributo del <meta>tag content. È entrambi, o è stato un refuso nella risposta?
Aaronaught l'

1
"La SEO è più un'arte che una vera scienza" - non è vero. Se sei un programmatore statistico, SEO è meno un'arte e più un'abilità di riconoscimento matematico. I laureati in matematica esperti in programmazione o programmatori in matematica sono molto richiesti nel settore della profilazione dei dati web.
שינתיא אבישגנת


32

Anche se questo non risponde a tutte le tue domande, credo che sarà di aiuto per te e per i siti sottoposti a scansione.

Simile alla tecnica utilizzata per forzare i siti Web di forza bruta senza attirare l'attenzione, se si dispone di un pool abbastanza grande di siti che è necessario eseguire la scansione, non eseguire la scansione della pagina successiva sul sito fino a quando non è stata eseguita la scansione della pagina successiva di tutti gli altri siti . Bene, i server moderni consentiranno il riutilizzo della connessione HTTP , quindi potresti voler fare più di uno per ridurre al minimo le spese generali, ma l'idea rimane valida. Non eseguire la scansione di un sito fino all'esaurimento fino a quando non si passa al successivo . Condividi l'amore.

Per te alla fine della giornata, puoi comunque aver eseguito la scansione di altrettante pagine, ma l'utilizzo della larghezza di banda media su un singolo sito sarà molto più basso.

Se vuoi evitare di essere il ragno del destino, non esiste un metodo sicuro. Se qualcuno vuole attaccare i fagioli nel naso , lo faranno e probabilmente lo faranno in modi che non potresti mai prevedere. Detto questo, se non ti dispiace perdere la pagina valida occasionale, disponi di una lista nera di parole per un link che ti impedirà di seguirla. Per esempio:

  • Elimina
  • Rimuovere
  • Aggiornare
  • modificare
  • Modificare

Non infallibile, ma a volte non riesci proprio a impedire alle persone di imparare nel modo più duro;)


3
Un buon consiglio per "condividere l'amore" - non l'avevo considerato affatto, anche se ovviamente a posteriori sembra ovvio.
Aaronaught l'

La tua risposta sarà quasi perfetta se menzionerai robots.txt;)
deadalnix l'

7
@deadalnix, ma robots.txtè già menzionato nella domanda e può essere assunto come presupposto.
TRiG,

20

Il mio unico consiglio è di ascoltare quello che ti sta dicendo il sito web che stai indicando e di cambiare dinamicamente la tua scansione in risposta a ciò.

  • Il sito è lento? Striscia più lentamente in modo da non DDOS. È veloce? Striscia ancora un po ', allora!

  • Il sito è in errore? Esegui la scansione meno per non stressare un sito già in difficoltà. Utilizzare tempi di ripetizione aumentando esponenzialmente, in modo da riprovare meno a lungo il sito presenta errori. Ma ricorda di riprovare più tardi, alla fine, in modo da poter vedere tutto ciò che ti manca a causa, per esempio, di un errore di una settimana su un percorso URL specifico.

  • Ricevi un sacco di 404s? (ricorda, anche le nostre fantasiose 404 pagine richiedono del tempo per il server!) Evita di eseguire la scansione di ulteriori URL con quel percorso per ora poiché forse manca tutto; se file001.html- file005.htmlnon c'è, scommetto che anche tu non hai soldi file999.html! O forse abbassa la percentuale di volte in cui recuperi qualcosa in quel percorso.

Penso che sia qui che molti ingenui crawler si sbagliano profondamente, avendo una strategia robotica che accusa lo stesso indipendentemente dai segnali che stanno tornando dal sito di destinazione.

Un crawler intelligente è reattivo nei confronti dei siti di destinazione che sta toccando.


19

Altri menzionarono alcuni dei mantra, ma lasciatemi aggiungere alcuni.

Prestare attenzione al tipo e alle dimensioni del file. Non tirare questi enormi binari.

Ottimizza per alcune tipiche pagine "elenco directory" del server web. In particolare, consentono di ordinare per dimensioni, data, nome, autorizzazioni e così via. Non trattare ogni metodo di ordinamento come una radice separata per la scansione.

Chiedi gzip (compressione al volo) ogni volta che è disponibile.

Limitare la profondità o rilevare la ricorsione (o entrambi).

Limita le dimensioni della pagina. Alcune pagine implementano tarpit per contrastare i robot che eliminano le email. È una pagina che si carica alla velocità della lumaca ed è lunga terabyte.

Non indicizzare 404 pagine. I motori che vantano indici più grandi lo fanno e ricevono in cambio un meritato odio.

Questo può essere complicato, ma prova a rilevare farm con bilanciamento del carico. Se v329.host.com/pages/article.php?99999 restituisce lo stesso di v132.host.com/pages/article.php?99999, non raschiare l'elenco completo dei server da v001.host.com fino a v999. host.com


Importanti custodie angolari!
M. Dudley,

Al giorno d'oggi, è spesso possibile rilevare contenuti duplicati intenzionalmente (ad esempio, farm con bilanciamento del carico) controllando la presenza di tag canonici.
Brian,

4

Aggiungerò solo una piccola cosa.

Copyright e altri problemi legali: so che scrivi che sono siti Web pubblici, quindi potrebbe non esserci alcun copyright, ma potrebbero esserci altri problemi legali per la memorizzazione dei dati.

Ciò dipenderà ovviamente dai dati del paese in cui si stanno memorizzando (e dove li si stanno archiviando). Caso in questione i problemi con il Patriot Act degli Stati Uniti contro la Direttiva sulla protezione dei dati dell'UE. Un riassunto esecutivo del problema è che le società statunitensi devono fornire i loro dati ad es. l'FBI, se richiesto, senza informarne gli utenti, laddove la direttiva sulla protezione dei dati stabilisce che gli utenti devono essere informati di ciò. Se http://www.itworld.com/government/179977/eu-upset-microsoft-warning-about-us-access-eu-cloud


2
"So che scrivi che sono siti Web pubblici, quindi potrebbe non esserci alcun copyright". Ogni sito Web su Internet è pubblico e ogni sito Web è protetto da copyright, se non diversamente specificato.
Gavin Coates,

3

Chiama il tuo webcrawler con quello o con il ragno, associato al tuo nome. Questo è importante. I motori di analisi e simili cercano quelli che ti associano come un ... ragno. ;)

Il modo in cui l'ho visto è tramite l'intestazione della richiesta User-Agent


Pensavo fosse di solito un "robot" o "robot" - so che Google è Googlebot.
Aaronaught l'

Buon punto. Finché si può distinguere. Probabilmente c'è un post su SO che li espone.
jcolebrand,

2
  • Conservare i cookie, quando richiesto, per impedire al sito Web di creare sessioni non necessarie.
  • Implementare il comportamento di analisi del collegamento, il più vicino a quello del browser. Il nostro sito live riporta molti "404", a causa delle richieste dei bot per i file mancanti.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.