web-dev-qa-db-fra.com

Comment ajouter des retards aléatoires entre les requêtes envoyées à Google pour éviter d'être bloqué dans python

J'ai écrit un programme qui envoie plus de 15 requêtes à Google à chaque itération, le nombre total d'itérations est d'environ 50. Pour les tests, je dois exécuter ce programme plusieurs fois. Cependant, en faisant cela, après plusieurs fois, Google me bloque. existe-t-il des moyens pour que je puisse tromper Google en ajoutant des retards entre chaque itération? J'ai également entendu dire que google peut réellement apprendre les pas de temps. J'ai donc besoin que ces retards soient aléatoires pour que Google ne puisse pas en trouver un motif pour apprendre mon comportement. il doit également être court pour que l'ensemble du processus ne prenne pas autant. Est-ce que quelqu'un sait quelque chose ou peut me fournir un morceau de code en python? Merci

32
Hossein

Premièrement, Google vous bloque probablement parce qu'ils n'aiment pas que vous utilisiez trop de leurs ressources. La meilleure façon de résoudre ce problème est de le ralentir, et non de retarder au hasard. Attendez une seconde après chaque demande et vous cesserez probablement d'avoir des problèmes.

Cela dit:

from random import randint
from time import sleep

sleep(randint(10,100))

dormira un nombre aléatoire de secondes (entre 10 et 100).

81
nmichaels

Puisque vous ne testez pas la vitesse de Google, trouvez un moyen de la simuler lors de vos tests (comme l'a suggéré @bstpierre dans son commentaire). Cela devrait résoudre votre problème et prendre en compte ses temps de réponse variables en même temps.

2
martineau

Vous pouvez également essayer d'utiliser quelques serveurs proxy pour empêcher l'interdiction par adresse IP. urllib prend en charge les proxys par paramètre de constructeur spécial, httplib peut également utiliser un proxy

1
seriyPS