2010-10-29 9 views
14

He escrito un programa que envía más de 15 consultas a Google en cada iteración, las iteraciones totales son aproximadamente 50. Para las pruebas tengo que ejecutar esto programa varias veces. Sin embargo, al hacer eso, después de varias veces, Google me bloquea. ¿Hay alguna forma para engañar a Google y agregar demoras entre cada iteración? También he escuchado que Google puede aprender los pasos del tiempo. así que necesito que estas demoras sean aleatorias para que Google no pueda encontrar un patrón para aprender mi comportamiento. también debe ser corto, por lo que todo el proceso no requiere demasiado. ¿Alguien sabe algo, o puede proporcionarme un código en Python? GraciasCómo agregar retrasos aleatorios entre las consultas enviadas a Google para evitar ser bloqueado en python

+2

¿Qué estás haciendo para bloquear Google con más de 750 solicitudes en un corto espacio de tiempo? ¿Hay alguna forma de agrupar las solicitudes para enviar menos solicitudes? – Benn

+0

No, he desarrollado un sistema de control de calidad. y necesito los resultados de forma incremental, es por eso que tengo que enviar las consultas una por una. – Hossein

+1

quieres engañar a Google, debes estar loco, e incluso si alguien te da una respuesta aquí, el robot de Google lo tendrá ante ti :), y dijiste que era solo para probar por qué no probar con solo uno o dos consultas con un descanso o algo así ???, pero le daré una pista google bloquear su IP – mouad

Respuesta

50

En primer lugar, Google probablemente lo está bloqueando porque no le gusta cuando toma demasiados de sus recursos. La mejor manera de solucionar esto es reducir la velocidad, no retrasar al azar. Espere 1 segundo de espera después de cada solicitud y probablemente deje de tener problemas.

Dicho:

from random import randint 
from time import sleep 

sleep(randint(10,100)) 

dormirá un número aleatorio de segundos (entre 10 y 100).

+1

Un par de ideas, insertar un tiempo de espera de 1 segundo después de cada consulta aumentará el tiempo de ejecución en poco más de 12 minutos. Insertar un promedio de 50 segundos de espera después de cada consulta arrojará un aumento de más de 10 horas. Esto puede ser oneroso, incluso para las pruebas. – jball

+2

jball: Es cierto, y 'sleep' puede tomar flotantes, por lo que los números se pueden ajustar. Personalmente, me gustan más las otras respuestas como soluciones a este problema en particular, pero esto responde la pregunta para las personas que quieran insertar retrasos aleatorios en algo en el futuro. – nmichaels

+0

¿Podemos hacerlo 0.5 segundos jaja ayer no añadí un retraso y me bloquearon el uso de Google por un momento. –

2

Dado que no está probando la velocidad de Google, busque una forma de simularla cuando realice las pruebas (como sugirió @bstpierre en su comentario). Esto debería resolver su problema y factorizar el tiempo de respuesta variable al mismo tiempo.

1

También puede intentar utilizar algunos servidores proxy para evitar la prohibición por dirección IP. los proxys de soporte de urllib por el parámetro de constructor especial, httplib también puede usar el proxy

Cuestiones relacionadas