Limitazione dei crawler Web


8

Il mio sito Web è gestito da Google Webspiders. Google è invitato a indicizzare il mio sito, ma a volte sta interrogando un tagcloud sul mio sito più velocemente di quanto il mio server web possa produrre i risultati, facendo esaurire le risorse del mio server web.

Come posso limitare l'accesso al mio server web in modo tale che i visitatori normali non siano interessati?

robots.txt non è un'opzione perché bloccherebbe l'indicizzazione dell'intero sito.

iptables -m recent è complicato, perché alcune pagine contengono molte immagini o altri file di dati e su di esse si attivano "recenti" (in genere il mio aggregatore RSS, caricamento di immagini e feed).

iptables -m limit ha lo stesso svantaggio e, soprattutto, non sono stato in grado di essere selettivo per indirizzo IP.

Come posso limitare i visitatori che fanno aumentare troppo il carico del mio server?

Sto eseguendo apache2 sul server Ubuntu in una VM VirtualBox.


1
Puoi utilizzare gli strumenti per i Webmaster per ridurre la velocità di scansione. Consulta support.google.com/webmasters/bin/…
derobert l'

Risposte:


5

Prova il modulo Apache mod_qos . La versione corrente ha i seguenti meccanismi di controllo.

  • Il numero massimo di richieste simultanee a una posizione / risorsa (URL) o host virtuale.
  • Limitazione della larghezza di banda, ad esempio il numero massimo consentito di richieste al secondo a un URL o il massimo / minimo di kbyte scaricati al secondo.
  • Limita il numero di eventi di richiesta al secondo (condizioni di richiesta speciali). Può anche "rilevare" persone molto importanti (VIP) che possono accedere al web server senza o con meno restrizioni.
  • Riga di richiesta generica e filtro intestazione per negare operazioni non autorizzate.
  • Richiedi limitazione e filtro dei dati del corpo (richiede mod_parp).
  • Limitazioni a livello di connessione TCP, ad esempio il numero massimo di connessioni consentite da un singolo indirizzo IP o controllo dinamico keep-alive.
  • Preferisce gli indirizzi IP noti quando il server esaurisce le connessioni TCP gratuite.

Questa regola condizionale di esempio dalla documentazione dovrebbe portarti nella giusta direzione.

# set the conditional variable to spider if detecting a
# "slurp" or "googlebot" search engine:
BrowserMatch             "slurp"                  QS_Cond=spider
BrowserMatch             "googlebot"              QS_Cond=spider

# limits the number of concurrent requests to two applications
# (/app/b and /app/c) to 300 but does not allow access by a "spider"
# if the number of concurrent requests exceeds the limit of 10:
QS_LocRequestLimitMatch       "^(/app/b/|/app/c/).*$"  300
QS_CondLocRequestLimitMatch   "^(/app/b/|/app/c/).*$"  10   spider

Sembra un po 'più complicato di quanto avessi sperato un venerdì sera a godermi la birra belga ... Devo guardarla domani. Sembra promettente con il Browsermatch e le cose. Venendo a pensarci ... sarebbe bello se automaticamente qualsiasi host / useragent che richiedesse robot.txt: o) Thnx Uther
jippie

Goditi quella birra!
George M

OK, sembra abbastanza semplice. Implementato per vedere se il mio server web sarà in grado di tenere il passo ora.
jippie,
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.