2010-10-29 6 views
14

Ich habe ein Programm geschrieben, das bei jeder Iteration mehr als 15 Abfragen an Google sendet. Die Gesamtdurchläufe liegen bei 50. Zum Testen muss ich das ausführen Programm mehrmals. Dadurch blockiert Google mich jedoch mehrfach. Gibt es irgendwelche Möglichkeiten, so kann ich Google täuschen, indem ich Verzögerungen zwischen jeder Iteration hinzufüge? Auch ich habe gehört, dass Google die Zeitschritte tatsächlich lernen kann. also brauche ich diese Verzögerungen, um zufällig zu sein, also kann Google ein Geprassel davon nicht finden, um mein Verhalten zu lernen. Auch sollte es kurz sein, damit der ganze Prozess nicht so viel braucht. Kennt jemand etwas, oder kann mir ein Stück Code in Python zur Verfügung stellen? DankeSo fügen Sie zufällige Verzögerungen zwischen den an Google gesendeten Abfragen hinzu, um Blockierungen in Python zu vermeiden

+2

Was machst du, dass Sie Google mit mehr als 750 Anfragen in einem kurzen Zeitrahmen knallen müssen? Gibt es eine Möglichkeit, die Anforderungen zu bündeln, um weniger Anfragen zu senden? – Benn

+0

Nein, ich habe ein QA-System entwickelt. und ich brauche die Ergebnisse inkrementell, deshalb muss ich die Abfragen eins nach dem anderen schicken. – Hossein

+1

Sie wollen Google täuschen, Sie müssen verrückt sein, und selbst wenn jemand Ihnen eine Antwort hier geben wird der google Bot es vor Ihnen bekommen :), und Sie sagten, dass es nur für das Testen ist, warum nicht mit nur einem testen zwei Fragen mit einer Pause oder etwas ???, aber ich werde Ihnen einen Hinweis Google blockieren Ihre IP – mouad

Antwort

50

Zuerst blockieren Google wahrscheinlich Sie, weil sie es nicht mögen, wenn Sie zu viele ihrer Ressourcen nehmen. Der beste Weg, dies zu beheben, ist es, es zu verlangsamen, nicht zufällig zu verzögern. Halten Sie nach jeder Anfrage eine Sekunde und Sie werden wahrscheinlich keine Probleme mehr haben.

Das heißt:

from random import randint 
from time import sleep 

sleep(randint(10,100)) 

wird eine zufällige Anzahl von Sekunden (zwischen 10 und 100) schlafen.

+1

Ein paar Gedanken, die eine Wartezeit von 1 Sekunde nach jeder Abfrage einfügen, erhöhen die Laufzeit um etwas mehr als 12 Minuten. Das Einfügen einer Wartezeit von durchschnittlich 50 Sekunden nach jeder Abfrage führt zu einem Anstieg von mehr als 10 Stunden. Dies könnte sogar beim Testen lästig sein. – jball

+2

jball: True, und 'sleep' kann schweben, so dass die Zahlen abgestimmt werden können. Persönlich mag ich die anderen Antworten besser als Lösungen für dieses spezielle Problem, aber dies beantwortet die Frage für Leute, die zufällige Verzögerungen in etwas in der Zukunft einfügen möchten. – nmichaels

+0

Können wir es 0,5 Sekunden machen lol gestern habe ich keine Verzögerung hinzugefügt und ich wurde für einen Moment von Google blockiert. –

2

Da Sie die Geschwindigkeit von Google nicht testen, finden Sie eine Möglichkeit, es beim Testen zu simulieren (wie @bstpierre in seinem Kommentar vorgeschlagen hat). Dies sollte Ihr Problem lösen und die variablen Antwortzeiten gleichzeitig ausgleichen.

1

Sie können auch versuchen, einige Proxy-Server zu verwenden, um ein Verbot durch IP-Adresse zu verhindern. urllib Unterstützung Proxies durch spezielle Konstruktor Parameter, httplib kann auch Proxy verwenden