5 советов при использовании бота, чтобы избежать блокировки прокси-сервера
Если вы постоянно занимаетесь веб-парсингом, то вы знаете, что в этом процессе необходимо учитывать два момента. Это юридические аспекты и блокировка IP-адресов. Хотя извлечение данных с веб-сайта без согласия его владельцев не является прямо противозаконным действием, оно не одобряется, что и является причиной постоянных блокировок IP-адресов.
Помимо того, что эти данные могут быть использованы для получения преимущества в бизнесе, использование ботов на сайте может снизить его производительность и в конечном итоге привести к краху.
Поэтому, если вы хотите заняться веб-парсингом, убедитесь, что сможете завершить процесс еще до его начала, чтобы не тратить свои ресурсы впустую. Одним из способов обеспечения успеха является предотвращение блокировки IP-адресов, и в этой статье мы рассмотрим способы снижения риска блокировки прокси-серверов.
Выбор прокси-сервера - еще один фактор, который необходимо тщательно продумать, прежде чем приступать к собственно парсингу. Хотя все прокси обеспечивают анонимность, некоторые из них более осторожны и их труднее обнаружить, чем другие.
Идентификация и блокирование ботов
Прежде чем перейти к предотвращению блокирования прокси-сайтов при парсинге, необходимо понять, как эти сайты определяют бота и отличают его от реального пользователя.
Можно с уверенностью сказать, что сайты и те, кто занимается извлечением данных, играют в кошки-мышки. В то время как сайты совершенствуют свои методы обнаружения и блокирования подобной деятельности, те, кто ею занимается, ищут способы скрыть свое присутствие при выполнении автоматизированных процессов.
Вы можете подумать, что отличить реального пользователя от бота очень просто, но это не так. Подозрительные действия должны быть обнаружены, затем отмечены, и только после дальнейшего отслеживания сайт может их заблокировать.
Наиболее распространенными методами, используемыми веб-сайтами для выявления ботов, занимающихся веб-парсингом, являются следующие:
- Если с одного IP-адреса на URL-адрес поступает большое количество запросов, то считается, что это бот, поскольку человек не может работать так быстро.
- Веб-сайты также могут обнаружить использование ботов, если WebRTC передает ваш реальный IP-адрес на серверы сайта.
- Когда запрос, отправленный на сервер сайта, имеет различные атрибуты, которые не коррелируют между собой. Во избежание обнаружения ботов всегда следите за тем, чтобы отправляемый запрос совпадал с часовым поясом и выбранным языком.
- При обнаружении подозрительных конфигураций браузера сайт может связать их с использованием бота и заблокировать IP. Примером может служить отключенный JavaScript. В разных браузерах используются разные версии JavaScript, и на основании поддерживаемых функций и других критериев сайт может распознать ваш браузер.
- Подключение к сайту без cookies является подозрительным и указывает на использование бота. Однако наличие cookies не дает вам возможности использовать бота незамеченным, поскольку cookies используются для слежения за вами.
- Веб-сайты также замечают нечеловеческое поведение на веб-странице. Действия мыши и клавиатуры трудно имитировать боту, и его легко обнаружить. В отличие от человека, боты легко предсказуемы, и когда это происходит, средства защиты сайта становятся подозрительными.
Выявление активности бота при веб-парсинге - это первая реакция сайтов на вас. Заподозрив вашу деятельность, они могут ответить на нее различными способами: отследить вас, показать страницу ошибки или выдать ложные данные. В конечном итоге доступ к сайту может быть заблокирован.
Сайты не одобряют использование ботов из-за спама на страницах отзывов и комментариев. Большое количество отправляемых запросов также влияет на производительность сайта и может замедлить его работу.
Это может привести к аварийному завершению работы сайта или к ухудшению качества обслуживания пользователей. Никто не любит проигрывать в конкурентной борьбе, а многие сайты, особенно сайты электронной коммерции, конкурируют с другими брендами.
Извлечение данных - это один из способов, с помощью которого конкурент может добиться большего, чем вы, поскольку он использует ваши слабые стороны и улучшает ваши сильные. Это еще одна причина, по которой сайты блокируют ботов.

Сценарии веб-парсинга на Python: Снижение риска блокировки вашего парсера
Агент пользователя
При создании веб-парсера необходимо задать пользовательский агент, чтобы иметь доступ к целевому сайту. Пользовательский заголовок предоставляет сайту информацию о вас, чтобы вы могли получить запрашиваемые данные в удобной для вас форме.
Вы можете получить строку своего агента пользователя, задав в google запрос "what is my user agent?". Если вы используете библиотеку requests, вы можете установить свой user agent следующим образом;
headers = {
\\ 'user-agent': 'Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/56.0.2924.87 Safari\/537.36',
\\ }
r = requests.get('example.com',headers=headers)
Чтобы заданный пользовательский агент выглядел реальным, выберите случайный агент из базы данных или текстового файла.
Следующая функция вернет случайный пользовательский агент, который можно выбирать при отправке запросов, чтобы уменьшить вероятность того, что вас не заблокируют:
import numpy as np
def get_random_ua():
\\ random_ua = ''
\\ ua_file = 'ua_file.txt'
\\ try:
\\ with open(ua_file) as f:
\\ lines = f.readlines()
\\ if len(lines) > 0:
\\ prng = np.random.RandomState()
\\ index = prng.permutation(len(lines) - 1)
\\ idx = np.asarray(index, dtype=np.integer)[0]
\\ random_proxy = lines[int(idx)]
\\ except Exception as ex:
\\ print('Исключение в random_ua')
\\ print(str(ex))
\\ finally:
\\ return random_ua
С помощью функции get_random_ua будет использован случайный пользовательский агент из текстового файла.

Прокси-сервер
Одной из основных причин блокировки ботов является использование статических прокси, или прокси, которые следуют в определенной последовательности. Используйте несколько случайных прокси, чтобы сайт не смог вычислить какую-либо закономерность.
Если нет возможности использовать вращающиеся прокси, используйте ротаторы IP-адресов, чтобы можно было использовать один прокси за раз и, возможно, в течение дня. Также обратите внимание на все прокси, которые блокируются целевым сайтом.
Задержка
В тот момент, когда ваши запросы приходят быстро, сайт заблокирует вашего бота, поскольку такое поведение не является органичным или похожим на человеческое. Задержать запросы можно с помощью numpy.random.choice()
delays = [7, 4, 6, 2, 10, 19]
delay = np.random.choice(delays)
time.sleep(delay)
Реферы
Настройка реферера - еще одна важная часть предотвращения блокировок Scraper. Как правило, если вы парсируете страницу листинга или домашнюю страницу, то вам следует установить главную страницу Google для этой страны. Если вы собираетесь парсировать страницы отдельных продуктов, то у вас есть возможность либо установить URL соответствующей категории, либо найти обратную ссылку на домен, который вы парсируете.
Заголовки запросов
Некоторые сайты более сложны, чем другие, и потребуют от вас больше усилий, если вы хотите, чтобы парс не был заблокирован. Такие сайты в рамках стратегии обнаружения ботов ищут некоторые записи в заголовках запросов, и если эти заголовки не найдены, они либо блокируют, либо подменяют искомое содержимое.
Осмотрев страницу, можно определить, какие заголовки запрашиваются. Внедрите их или внедряйте заголовки один за другим после тестирования.
Уменьшите риск блокировки вашего прокси-сервера: Советы по веб-парсингу
Ниже приведены рекомендации по предотвращению блокирования прокси-сайтов веб-сайтами.
Соблюдайте политику сайта
Прежде чем приступать к работе с веб-сайтом, узнайте, какова его политика. Принято считать, что наилучших результатов можно добиться, если быть вежливым и следовать политике сайта в отношении краузинга.
На большинстве сайтов в корневом каталоге хранится файл robots.txt, содержащий подробную информацию о том, что можно и что нельзя парсить. В нем также содержится информация о том, с какой частотой можно выполнять парсинг.
Также следует изучить условия предоставления услуг на сайте, так как в них содержится информация о данных на сайте. Вы узнаете, являются ли эти данные общедоступными или защищенными авторским правом, а также о том, как лучше всего получить доступ к целевому серверу и нужным вам данным.
Парсите с меньшей скоростью и частотой
Боты используются потому, что они более эффективны и быстры, чем человек, и эта скорость является их гибелью, поскольку это один из способов, с помощью которого сайты обнаруживают и блокируют их. Это действие, как и любое другое, не похожее на естественное или человеческое, является подозрительным, и чтобы не привлекать к себе внимания, необходимо регулировать количество запросов, отправляемых за раз. Слишком большое количество запросов также негативно влияет на целевой сервер, поскольку перегружает его и делает медленным и неотзывчивым.
Переконфигурируйте ваш парсер и замедлите его работу, заставив его спать в произвольном режиме между запросами. Кроме того, делайте более длительные перерывы на сон различной продолжительности после того, как было отсканировано различное количество страниц. Чтобы не вызывать подозрений или тревожных сигналов, лучше сделать это как можно более случайным образом.
Ротация IP-адресов
Всем, кто занимался веб-парсингом, не чуждо распространенное предупреждение о том, что не следует посылать слишком много запросов, используя один и тот же IP-адрес. Это гарантирует, что вы будете заблокированы, поэтому перед тем, как начать заниматься парсингом, необходимо использовать несколько прокси.
Чтобы использовать несколько прокси-серверов для сбора данных, вам понадобится программа IP rotator. Это программное обеспечение берет один IP на сессию или на определенное время и отправляет через него зап


