Real People

Добавим беспорядка

Как подсказывает здравый смысл, первый признак робота — он все делает правильно и равномерно: ходит, разговаривает и... выдерживает одинаковые паузы между запросами. Функция random_sleep позволяет внести долю хаоса в поведение краулера: она погружает программу в сон, который длится от min_seconds до max_seconds.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import random
import time
import logging

MIN_SLEEP = 5  # minimal sleep interval
MAX_SLEEP = 30 # maximum sleep interval

def random_sleep(min_seconds=MIN_SLEEP, max_seconds=MAX_SLEEP):
    '''Sleep for random interval
    '''
    if min_seconds == max_seconds:
        s = min_seconds
    else:
        s = random.uniform(min_seconds, max_seconds)
        logging.debug("Sleeping for %d sec.", s)

    time.sleep(s)

social

Яндекс.Метрика