2010-10-29 2 views
14

Ho scritto un programma che invia più di 15 query a Google in ogni iterazione, le iterazioni totali sono circa 50. Per i test devo eseguire questo programma più volte. Tuttavia, facendo così, dopo diverse volte, Google mi blocca. c'è qualche modo per ingannare google magari aggiungendo ritardi tra ogni iterazione? Inoltre ho sentito che google può effettivamente imparare i timestep. quindi ho bisogno che questi ritardi siano casuali, quindi google non riesce a trovare il modo di imparare il mio comportamento. dovrebbe anche essere breve, quindi l'intero processo non richiede molto. Qualcuno sa qualcosa o può fornirmi un pezzo di codice in python? GrazieCome aggiungere ritardi casuali tra le query inviate a Google per evitare di essere bloccati in python

+2

Cosa stai facendo che hai bisogno di sbattere google con più di 750 richieste in un breve lasso di tempo? C'è un modo in cui è possibile raggruppare le richieste in modo da inviare un minor numero di richieste? – Benn

+0

No, ho sviluppato un sistema di controllo qualità. e ho bisogno dei risultati in modo incrementale, ecco perché devo inviare le query una alla volta. – Hossein

+1

vuoi ingannare google, devi essere fuori di testa, e anche se qualcuno ti dà una risposta qui il google bot lo prenderà prima di te :), e hai detto che è solo per testare perché non provare con uno solo o due query con un'interruzione o qualcosa ???, ma ti darò un suggerimento su google blocca il tuo IP – mouad

risposta

50

In primo luogo, Google probabilmente ti blocca perché non gli piace quando si prendono troppe risorse. Il modo migliore per risolvere questo problema è rallentarlo, non ritardarlo a caso. Attendi 1 secondo dopo ogni richiesta e probabilmente non avrai più problemi.

Detto questo:

from random import randint 
from time import sleep 

sleep(randint(10,100)) 

dormirà un numero casuale di secondi (tra 10 e 100).

+1

Un paio di pensieri, inserendo un'attesa di 1 secondo dopo ogni query aumenterà il tempo di esecuzione di poco più di 12 minuti. L'inserimento di una attesa media di 50 secondi dopo ogni query produrrà un aumento di oltre 10 ore. Questo potrebbe essere oneroso, anche per i test. – jball

+2

jball: Vero, e 'sleep' può prendere galleggianti, quindi i numeri possono essere sintonizzati. Personalmente, mi piace che l'altro risponda meglio alle soluzioni a questo particolare problema, ma questo risponde alla domanda per le persone che potrebbero voler inserire ritardi casuali in qualcosa in futuro. – nmichaels

+0

Possiamo farlo 0.5 secondi lol ieri non ho aggiunto un ritardo e mi è stato impedito di utilizzare Google per un momento. –

2

Poiché non stai testando la velocità di Google, trova un modo per simularlo durante i test (come suggerito da @bstpierre nel suo commento). Questo dovrebbe risolvere il tuo problema e tener conto dei tempi di risposta variabili allo stesso tempo.

1

Inoltre, è possibile provare a utilizzare pochi server proxy per impedire il divieto tramite l'indirizzo IP. proxy di supporto urllib con un parametro di costruzione speciale, httplib può usare anche il proxy