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

83

Svilupperò alcune funzionalità in grado di eseguire la scansione di vari siti Web pubblici e di elaborare / aggregare i dati su di essi. Nulla di strano è cercare indirizzi e-mail - in effetti è qualcosa che potrebbe effettivamente portare traffico aggiuntivo ai loro siti. Ma sto divagando.

Oltre a onorare robots.txt , ci sono regole o linee guida, scritte o non scritte, che dovrebbe essere seguito, al fine di (a) evitare di apparire dannoso e potenzialmente essere bandito, e (b) non causa alcun problema per i proprietari del sito / webmaster?

Alcuni esempi a cui posso pensare o meno:

  • Numero di richieste parallele
  • Tempo tra le richieste
  • Tempo tra intere ricerche per indicizzazione
  • Evitare i collegamenti potenzialmente distruttive (non voglio essere il Spider of Doom - ma chissà se questo è ancora pratico)

Questo è davvero solo lo spit-balling, però; c'è qualche saggezza collaudata là fuori che è ampiamente applicabile per chiunque intenda scrivere o utilizzare un ragno?

    
posta Aaronaught 11.07.2011 - 03:25
fonte

7 risposte

85

Oltre ad obbedire a robots.txt, obbedire nofollow e noindex in <meta> elementi e collegamenti:

  • Molti credono che robots.txt sia non il modo corretto di indicizzazione dei blocchi e, a causa di tale punto di vista, ha incaricato molti proprietari di siti di affidarsi al tag <meta name="robots" content="noindex"> per indicare ai web crawler di non indicizzare una pagina.

  • Se stai cercando di creare un grafico delle connessioni tra siti web (qualcosa di simile a PageRank), (e <meta name="robots" content="nofollow"> ) dovrebbe indicare che il sito di origine non si fida abbastanza del sito di destinazione per dargli una approvazione adeguata. Pertanto, mentre puoi indicizzare il sito di destinazione, non devi memorizzare la relazione tra i due siti.

SEO è più un'arte che una vera scienza, ed è praticato da un sacco di persone che sanno quello che stanno facendo, e un sacco di persone che leggono i riassunti esecutivi di persone che sanno quello che stanno facendo. Vi imbatterete in problemi in cui vieni bloccato dai siti per fare cose che altri siti hanno trovato perfettamente accettabili a causa di alcune regole che qualcuno ha sentito o letto in un post sul blog su SEOmoz che potrebbe essere o non essere interpretato correttamente.

A causa di questo elemento umano, a meno che tu non sia Google, Microsoft o Yahoo !, si presume che sia malizioso a meno che non sia provato diversamente. Devi fare molta attenzione a comportarti come se non fosse una minaccia per il proprietario di un sito web e agire in base a come vorresti che un crawler potenzialmente malevolo (ma auspicabilmente benigno) agisse:

  • interrompi la scansione di un sito una volta rilevato che sei bloccato: 403/401 su pagine che conosci funzionano, rallentamenti, timeout, ecc.
  • evitare di eseguire ricerche per indicizzazione esaustive in periodi di tempo relativamente brevi: eseguire la scansione di una parte del sito e tornare più tardi (pochi giorni dopo) per eseguire la scansione di un'altra porzione. Non effettuare richieste parallele.
  • evitare la scansione di aree potenzialmente sensibili: ad esempio gli URL con /admin/ ,

Anche in questo caso, sarà una battaglia in salita a meno che non ricorra a tecniche black hat come spoofing UA o mascherando di proposito i tuoi pattern di scansione: molti proprietari di siti, per le stesse ragioni sopra, bloccheranno un crawler sconosciuto a vista invece di correre il rischio che qualcuno non provi a "hackerare il loro sito". Preparati per un sacco di fallimenti.

Una cosa che potresti fare per combattere l'immagine negativa che un crawler sconosciuto sta per avere è di mettere in chiaro nella stringa user-agent chi sei:

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

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

  • Informazioni su come contattarti direttamente
  • Informazioni su ciò che il crawler raccoglie e perché lo sta raccogliendo
  • Informazioni su come disattivare e recuperare i dati eliminati

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

    
risposta data 11.07.2011 - 05:44
fonte
32

Sebbene questo non risponda a tutte le tue domande, credo che sarà di aiuto per te e per i siti che esegui la scansione.

Simile alla tecnica utilizzata per i siti web di forza bruta senza attirare l'attenzione, se si dispone di un pool sufficientemente grande di siti da sottoporre a scansione, non eseguire la scansione della pagina successiva sul sito fino a quando non si esegue la scansione della pagina successiva di tutti gli altri siti. Bene, i server moderni permetteranno riutilizzo della connessione HTTP , quindi potresti volerne fare più di uno per minimizzare il sovraccarico, ma l'idea sta ancora Non eseguire la scansione di un sito fino all'esaurimento finché non si passa al successivo . Condividi l'amore.

Per te alla fine di un giorno, puoi comunque eseguire 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 piantare fagioli nel naso , lo farà e probabilmente lo farà quindi in modo da poter prevedere mai . Detto questo, se non ti dispiace perdere la pagina occasionale valida, avere una lista nera di parole per un link che ti impedirà di seguirla. Ad esempio:

  • Elimina
  • Rimuovi
  • Aggiorna
  • Modifica
  • Modifica

Non infallibile, ma a volte non puoi semplicemente impedire alle persone di dover imparare a fondo;)

    
risposta data 11.07.2011 - 04:24
fonte
20

Il mio consiglio è di ascoltare su ciò che il sito web che stai analizzando ti sta dicendo e cambiare dinamicamente la tua scansione in reazione a ciò.

  • Il sito è lento? Scorri più lentamente in modo da non farlo DDOS. È veloce? Scansione un po 'di più, quindi!

  • Il sito sta commettendo errori? Scorri meno così non stai stressando un sito già sotto costrizione. Utilizza in modo esponenziale i tempi di ripetizione, quindi riprova meno il tempo di errore del sito. Ma ricorda di riprovare più tardi, eventualmente, in modo che tu possa vedere tutto ciò che ti manca a causa, per esempio, di un errore di una settimana su un percorso URL specifico.

  • Ottenere un sacco di 404? (ricordate, anche le nostre fantasiose pagine 404 prendono tempo sul server!) Evitate di scansionare ulteriori URL con quel percorso per ora come forse tutto ciò che manca; se file001.html - file005.html non c'è, scommetto che dollari a donuts file999.html non lo sono neanche! O forse abbassa la percentuale di tempo in cui recuperi qualcosa in quel percorso.

Penso che questo sia il luogo in cui molti crawler ingenui sbagliano profondamente, avendo una strategia robotica che li ritira indipendentemente dai segnali che stanno recuperando dal sito di destinazione.

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

    
risposta data 11.07.2011 - 12:38
fonte
19

Altri hanno menzionato alcuni dei mantra, ma lasciatemi aggiungere alcuni.

Prestare attenzione al tipo e alla dimensione del file. Non tirare questi binari enormi.

Ottimizza per alcune pagine di "elenchi di directory" tipici del server web. In particolare, consentono di ordinare 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) quando disponibile.

Limita la profondità o rileva la ricorsione (o entrambi).

Limita le dimensioni della pagina. Alcune pagine implementano i tarpits per ostacolare i bot di scartamento delle e-mail. È una pagina che carica a velocità lumaca ed è lunga terabyte.

Non indicizzare 404 pagine. I motori che vantano i maggiori indici fanno questo e ricevono in cambio l'odio meritato.

Può essere complicato, ma provare a individuare le farm di bilanciamento del carico. Se v329.host.com/pages/article.php?99999 restituisce lo stesso valore di v132.host.com/pages/article.php?99999 non raschiare l'elenco completo dei server da v001.host.com fino a v999. host.com

    
risposta data 11.07.2011 - 10:52
fonte
4

Aggiungerò solo una piccola cosa.

Copyright & altre questioni 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 di quel paese che stai memorizzando (e dove li stai memorizzando). Caso in questione i problemi con il Patriot Act degli Stati Uniti rispetto alla direttiva sulla protezione dei dati dell'UE. Un riassunto esecutivo del problema è che le aziende statunitensi devono fornire i loro dati ad es. l'FBI, se richiesto, senza informare gli utenti di ciò, dove la Direttiva sulla protezione dei dati afferma che gli utenti devono essere informati di ciò. Se link

    
risposta data 11.07.2011 - 10:37
fonte
3

Chiama il tuo webcrawler o quello o lo spider, associato al tuo nome. Questo è importante. Motori di analisi e simili cercano chi ti associa come ... spider. ;)

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

    
risposta data 11.07.2011 - 05:20
fonte
2
  • Conserva i cookie, quando richiesto, per impedire al sito Web di creare sessioni non necessarie.
  • Implementa il comportamento di analisi del collegamento, più vicino a quello del browser. Il nostro sito live riporta un sacco di "404", a causa di richieste bot per file mancanti.
risposta data 11.07.2011 - 15:26
fonte

Leggi altre domande sui tag