Сегодня собирать информацию с сайтов становится гораздо проще благодаря продвинутым парсерам, а сам парсинг становится более доступным для людей без технического бэкграунда. Но на ряду с развитием инструментов по сбору данных, развиваются и механизмы защиты от парсинга, поэтому вопрос обхода блокировок все еще остается актуальным.
В данной статье не затрагиваются этические и юридические аспекты автоматизированного сбора информации. Мы рассмотрим распространенные причины банов, и аспекты, на которые следует обратить внимание в первую очередь, чтобы оставаться незамеченными во время парсинга.
Настройте свой юзер-агент и другие заголовки
User-Agent содержит информацию о вас и вашем устройстве. Это, можно сказать, ваше виртуальное лицо, которое видит сервер, когда вы посещаете сайт. Серверы или администраторы, которые ими управляют, постоянно мониторят активность посетителей, учитывая их юзер-агенты. Если один из них отправляет слишком много запросов — столько, сколько обычный пользователь просто не способен отправить, система считает такого юзер-агента подозрительным и блокирует его.
Поэтому необходимо уделять внимание управлению юзер-агентами, если хотите успешно собирать информацию с сайтов. Вы можете менять их вручную или настроить свой парсер так, чтобы он рандомно выбирал хедеры из списка, который вы ему предоставили. Это один из самых эффективных способов, который поможет избежать банов и достичь бесперебойности сбора информации.
Помимо юзер-агентов, есть и другие хедеры, которые могут саботировать вашу работу. Скрейперы и краулеры часто отправляют заголовки, которые отличаются от тех, что отправляют браузеры реальных пользователей. Поэтому уделите этому время и поменяйте все хедеры, чтобы они не выглядели как автоматические запросы, которые шлет бот.
Придерживайтесь оптимальной скорости
Ваши действия непременно привлекут к себе внимание, если парсер шлет запросы с бешеной скоростью. Когда реальный пользователь просматривает сайт, количество запросов с его IP адреса будет достаточно низким, и между ними будет пауза хотя бы в пару секунд. Поэтому если вы настроите свой софт так, чтобы тот собирал данные как можно быстрее, целевой сервер быстро заметит такую подозрительную активность и используемому IP заблокируют доступ к сайту. Владельцы сайтов очень резко реагируют на большое количество запросов, потому что именно так выглядит ДДОС-атака. Хотя, сбору данных они тоже не слишком рады.
Лучше выбирать более медленный темп для скрейпинга. Конечно, процесс тогда займет больше времени. Но если вы будете постоянно получать баны, на сбор информации потребуется вечность. Для разных сайтов и онлайн площадок оптимальное время между запросами может отличаться, так что лучше уделить этому время и поэкспериментировать с таймаутами. Как минимум, настройте своего бота так, чтобы он ждал пару секунд, прежде чем отправлять новый запрос. Так вероятность того, что целевой сервер не заблокирует ваших действий, будет гораздо ниже.
Используйте прокси
Прокси — это удаленные серверы, которые служат посредником между вашим устройством и целевым сайтом. Когда вы подсоединены к прокси, вы подхватываете его IP адрес и заменяете им свой настоящий. Так, целевой сервер будет видеть данные прокси, а не ваши реальные. Для этого вам понадобятся, так называемые, резидентные прокси, которые позволяют вам маскироваться под других реальных пользователей, когда вы собираете данные. Таким образом, вы сможете избежать большого количества ограничений.
Звучит это очень просто, но на самом деле, вам нужно знать некоторые вещи о прокси, чтобы правильно их применять. Поэтому давайте вкратце пройдемся по некоторым важным моментам.
Когда вы начнете искать поставщика прокси, вы увидите, что есть очень много бесплатных вариантов. Держитесь от них подальше — такими прокси пользуются совершенно разные люди для совершенно разных целей, часто не самых “белых” и не с лучшими намерениями. Поэтому большинство бесплатных IP адресов уже внесены в черные списки. Они не помогут вам улучшить процесс сбора данных, а скорее наоборот — могут только ухудшить ситуацию.
Платные прокси гораздо эффективнее. Провайдеры обычно предлагают несколько видов прокси — это еще один нюанс, который нам стоит прояснить. Например, такой провайдер, как Infatica, предлагает три типа прокси: датацентр, резидентные и мобильные. Для веб парсинга лучше всего подходят резидентные, и вот почему.
Датацентр прокси — как ясно из самого названия, данные IPs не принадлежат интернет провайдерам, ваш IP и вся связанная с ним идентифицирующая информация будет спрятана за прокси-адресом дата центра. И вместо информации, ассоциированной с вашим IP, будет отображаться информация, связанная с компанией, которой принадлежит этот дата центр. Это общие серверы, к которым подключается множество пользователей, чтобы сменить свой IP адрес. Поэтому довольно много других людей будут обладать теми же данными, что и вы. Это повышает шансы того, что ваши действия заметит целевой сервер, и вы попадете под бан.
Например, не исключено, что кто-то их уже использовал для тех же целей, что и вы. Поэтому запросто может оказаться, что вебсайт, который вы собрались парсить, их уже забанил. Такие прокси самые дешевые, и вы можете использовать их для скрейпинга, если ваш бюджет ограничен. Поэтому перед покупкой лучше предварительно уточните у провайдера, работают ли их прокси для интересующих вас сайтов. Как правило они обладают этой информацией или могут проверить это для вас.
Резидентные прокси — это IP устройств реальных людей, к которым вы подключаетесь. Такие прокси сложно заметить, потому что их данные не выглядят ложными, ведь они на самом деле являются настоящими. Парсинг с помощью таких прокси практически невозможно обнаружить. Даже если вы не соблюдаете больше никаких перечисленных в статье предосторожностей, причиной блокировки, с большой долей вероятности, будут не прокси, а другие факторы.
Когда вы работаете с резидентными прокси, при блокировке одного IP — можно заменить его другим и продолжить. Но обратите внимание, что если не соблюдены другие меры предосторожности — через некоторое время все может закончиться тем, что вам забанят все IPs, которые были у вас в наличии.
Резидентные прокси немного дороже датацентр, но они более надежны для веб парсинга. У Infatica вы можете взять бесплатный тест на три дня и посмотреть подходят ли их прокси конкретно для ваших задач. Также, обычно провайдер предоставляет определенный график ротации IP адресов. Но для разных задач может потребоваться своя скорость, поэтому лучше позаботиться об этом заранее.
Мобильные прокси — это практически то же самое, что и резидентные, с одним отличием. Все IP адреса принадлежат мобильным устройствам. Это самая дорогая услуга, и ее в большинстве случаев нецелесообразно выбирать для скрейпинга. Более дешевые резидентные прокси отлично справляются с задачей.
Рендеринг JavaScript
Почти каждый пользователь включает JavaScript в своем браузере. Поэтому если IP адрес шлет запрос без обработки JavaScript, сайт начинает подозревать неладное. Решение простое — нужно использовать headless-браузер и инструменты вроде Selenium, которые помогут автоматизировать этот процесс. Также, есть ряд других библиотек, которые вы можете использовать для обхода этой проблемы. С их помощью вы можете провести тест в среде Node, чтобы увидеть, способен ли сервер заметить запросы без JavaScript.
Добавьте исключения
Настройте свой парсер так, чтобы он останавливался, если сталкивается с ошибками 403 и 503. Если он продолжит запрашивать страницы, после того, как начал получать ошибки, его быстро забанят — это очень не похоже на поведение реальных пользователей. Поэтому убедитесь, что ваш инструмент остановится, если столкнется с ошибкой, и пропустит такие страницы.
Помните про robots.txt
Не так много сайтов блокируют IP, которые запрашивают страницы, заблокированные robots.txt. Тем не менее, такие сайты существуют и это реальное ограничение, о котором нужно позаботится. Соблюдайте правила robots.txt, чтобы собирать данные без задержек.
Если страница, которую вам нужно обработать, заблокирована в robots.txt, вы, конечно же, можете это проигнорировать. Но мы настойчиво рекомендуем уважать правила, которые установил вебмастер, и стараться соблюдать robots.txt. Так вы избежите возможных проблем с законом.
Иногда вам нужно собирать cookies
Например, если вы работаете с поисковиками, они заметят, что что-то не так, если вы не будете отправлять cookies. Ведь их отсутствие не свойственно реальным пользователям. Поэтому стоит обеспечить отправку и получение cookies с каждым запросом. Обратите внимание, что в этом случае вы будете получать персонализированные результаты выдачи.
Главный противник — капча
Это одна из самых раздражающих вещей в интернете, которую ненавидят и роботы, и люди. Так как пользователи тоже не в восторге от CAPTCHA, сегодня их стало намного меньше по сравнению с их количеством еще пару лет назад. Тем не менее, они все еще существуют, и вам нужно с ними справляться. В Интернете вы найдете множество решений для обхода капчи. Например, есть инструменты, оснащенные Tesseract OCR, а также, вы можете попробовать API сервисы, которые обеспечивают ввод капчи посредством человека.
Заключение
Смеем предположить, что с развитием машинного обучения и систем распознавания изображений, такая проблема как капча совсем скоро канет в лету. Конечно, каждый из вышеизложенных пунктов заслуживает отдельного внимания и отдельной статьи. Но мы надеемся, что этот краткий гайд о мерах обхода защиты от парсинга будет для вас полезным. И, конечно, если у вас есть какие-то вопросы или вы хотели бы поделиться своим опытом — оставляйте комментарии.