Как добавить случайные задержки между запросами, отправляемыми в Google, чтобы избежать блокировки в python - PullRequest
25 голосов
/ 29 октября 2010

Я написал программу, которая отправляет более 15 запросов в Google за каждую итерацию, общее количество итераций составляет около 50. Для тестирования мне нужно запустить эту программу несколько раз. Тем не менее, после этого несколько раз Google блокирует меня. Есть ли способы, чтобы я мог обмануть Google, возможно, добавляя задержки между каждой итерации? Также я слышал, что Google на самом деле может узнать временные шаги. поэтому мне нужно, чтобы эти задержки были случайными, чтобы гугл не смог найти из них скороговорку, чтобы узнать мое поведение. также он должен быть коротким, чтобы весь процесс не занимал так много времени. Кто-нибудь что-то знает, или может предоставить мне кусок кода на Python? Спасибо

Ответы [ 3 ]

79 голосов
/ 29 октября 2010

Во-первых, Google, вероятно, блокирует вас, потому что им не нравится, когда вы берете слишком много их ресурсов.Лучший способ это исправить - это замедлить, а не задержать случайно.Придерживайтесь 1 секунды ожидания после каждого запроса, и вы, вероятно, перестанете иметь проблемы.

При этом:

from random import randint
from time import sleep

sleep(randint(10,100))

будет спать произвольное количество секунд (от 10 до 100).

2 голосов
/ 29 октября 2010

Поскольку вы не тестируете скорость Google, найдите способ имитировать ее во время тестирования (как @bstpierre предложил в своем комментарии)Это должно решить вашу проблему и учесть ее переменное время отклика одновременно.

1 голос
/ 29 октября 2010

Также вы можете попробовать использовать несколько прокси-серверов для предотвращения бана по IP-адресу. Прокси поддержки urllib по специальному параметру конструктора, httplib также может использовать прокси

...