Задача: отследить, когда на сайте в календаре появится свободный слот для записи. Когда этот слот появится, никому не известно (может завтра, а может через месяц).
Написал парсер на python с MechanicalSoup. Начал тестировать запуск с 4-мя прокси, 4-мя разными user-agent (выбираются случайным образом при запуске) и таймаутом сначала в 2 минуты + случайное число от 1 до 60 секунд, затем с таймаутом в 5 минут + случайное число от 1 до 60 секунд.
Результат: с каким таймаутом ни запускаю, периодически сервер возвращает то 502 Bad Gateway, то 403 Forbidden. Причем когда тестил с таймаутом в 30 секунд также с 4-мя прокси, то после какого-то промежутка времени постоянно вылетало 502 Bad Gateway. На сервере nginx.
Как действует сервер? Отслеживает кол-во запросов от одного ip за какой-то промежуток времени, и если лимит превышен, то банит по ip?
Но тогда почему если я отправляю запросы раз в 5 минут, все равно встречаю 502?
Возможно я упускаю какую-то настройку, когда прикидываюсь браузером?
browser = mechanicalsoup.StatefulBrowser(
soup_config={'features': 'lxml'},
raise_on_404=False,
user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)\
Chrome/74.0.3729.131 Safari/537.366"
)
Как уменьшить число 5хх и 4хх ошибок при парсинге?