Публичные веб-сайты содержат кладезь данных, но прямой доступ к этой информации в больших масштабах сталкивается с различными средствами защиты от скраперов. Даже благонамеренные скраперы, пытающиеся проводить исследования или услуги по сравнению мощностей, часто блокируются чрезмерно рьяной защитой.
За 5 лет работы в индустрии парсинга веб-страниц я изучил методы маскировки и кинжала, которые используют реальные парсеры, чтобы избежать блоков. В этом подробном руководстве будут рассмотрены распространенные методы защиты от парсинга и то, как парсеры тактично обходят их для сбора общедоступных данных.
Масштаб и возможности парсинга веб-страниц
Давайте начнем с изучения огромных масштабов веб-скрапинга в современном Интернете. Недавние статистические данные рисуют картину того, насколько мы стали зависимы от скраперов:
Поисковые системы – Парсеры сканируют более 50 миллиардов страниц для улучшения результатов поиска [1]. Только Google обрабатывает 5.6 миллиардов поисковых запросов в день [2].
Сайты сравнения цен – Миллиарды списков продуктов собираются такими сайтами, как Google Shopping, с сайтов поставщиков электронной коммерции [3].
Услуги по мониторингу – Инструменты мониторинга качества обслуживания клиентов и бренда ежедневно собирают миллионы публикаций в социальных сетях, обзоров и тем на форумах.
Наборы данных исследований – Исследователи машинного обучения использовали веб-скребки для создания наборов данных для анализа текста, компьютерного зрения и многого другого.
Агрегация новостей – Миллионы онлайн-статей и сообщений в блогах ежедневно индексируются новостными приложениями и агрегаторами.
Парсинг позволяет использовать эти сервисы, позволяя автоматически собирать огромные объемы веб-данных с помощью скриптов. А боты уже составляют более 50% трафика веб-сайта [4].
Но это не только солнечный свет и радуга. Скребки, идущие на грани между эффективным сбором данных и избеганием блоков, сталкиваются с серьезными проблемами…
Лабиринт защиты от царапин
Чтобы понять, как ответственно обходить средства защиты, нам сначала нужно рассказать, как каждый метод идентифицирует и блокирует скраперы в реальных условиях:
Ограничение скорости IP
Один из самых простых методов — ограничить количество запросов, которые может сделать один IP-адрес за период времени. Завышенные ставки считаются ботами. Amazon агрессивно блокирует парсеры, используя ограничения по IP [5].
Фильтрация пользовательского агента
Браузеры идентифицируют себя для серверов в каждом заголовке запроса. Нераспознанные агенты могут быть заблокированы как скраперы. Сайты поддерживают списки известных инструментов, которые можно занести в черный список [6].
Анализ поведения
Сбор данных о действиях пользователя с течением времени, а не мгновенных ограничений, позволяет более эффективно обнаруживать ботов. Боты ведут себя систематически в отличие от людей [7].
Отпечаток пальца браузера
Скрипты могут автоматически профилировать настройки браузера, такие как часовой пояс, шрифты и установленные расширения. Комбинированный отпечаток пальца помечает пользователя для последующей блокировки [8].
Эти методы рисуют зловещую картину для всех, кто полагается на веб-скребки для развития своего бизнеса: как ложные срабатывания мешают работе реальных пользователей, так и прямая блокировка парсеров, затрудняющая автоматический сбор данных.
Но не бойтесь: там, где есть мотивированные скребки, есть и решения…
Бронирование: тактика уклонения от скребка
За последние 5 лет я овладел швейцарским ножом приемов, позволяющих держать скребки вне поля зрения и избегать блоков:
Вращающиеся прокси
Путем маршрутизации запросов через несколько прокси-серверов каждый запрос поступает с нового IP-адреса. Резидентные прокси, размещенные на реальных пользовательских устройствах, менее подозрительны, чем IP-адреса центров обработки данных.
Имитация браузеров
Передача реальных строк User Agent браузера и других заголовков делает каждый запрос похожим на человека. Я веду список актуальных UA для имитации любого браузера.
Параллелизм и задержка
Такие стратегии, как намеренное замедление скорости очистки и регулирование одновременных запросов, помогают соблюдать ограничения IP и уменьшать блокировку.
Общие IP-сессии
Эмуляция множества пользовательских сеансов за одним и тем же IP-адресом помогает сайтам распознавать, что несколько пользователей могут использовать один адрес. Это уменьшает агрессивную блокировку.
Ротация TOR и VPN
Изменение IP-адресов через VPN и TOR обеспечивает постоянный поток новых конечных точек. Но их диапазоны часто заносятся в черный список, что ограничивает эффективность.
Теперь у нас есть некоторые инструменты для борьбы с блоками. Но как и когда нам следует применять их на практике?
Очистка этики: линии, которые нельзя пересекать
Прежде чем запускать инструменты обхода, очень важно, чтобы мы обходили средства защиты только в законных целях:
Никогда нарушать Условия обслуживания или получать доступ к личным/пользовательским данным
Не перегружайте серверы – используйте задержки и ограничивайте параллелизм.
Осторожно меняйте тактику, чтобы она смешалась с обычным пользовательским трафиком.
Поймите свой конкретный вариант использования; избегайте обхода блоков, если это не критично
К сожалению, некоторые «плохие» скраперы злоупотребляют этими методами, усиливая гонку вооружений против блоков. Но соблюдение этических норм позволяет нам сохранять чистоту веб-страниц.
Я обнаружил, что прозрачность также имеет большое значение: использование уникального пользовательского агента помогает владельцам сайтов понять ваши цели. При осторожном подходе скреперы и сайты могут сосуществовать, не подрывая друг друга.
Очистка поверхности
Проработав годы в этой отрасли, я до сих пор поражаюсь тому, что динамичный мир веб-данных находится прямо у нас под носом. Наши скребки — это кирки, которые взламывают эту сокровищницу публичной информации.
Поскольку функционирование столь многих жизненно важных сервисов зависит от парсинга веб-страниц, мы должны позаботиться о том, чтобы ответственно добывать эти богатства и избегать бессмысленной чрезмерной блокировки. Я надеюсь, что это руководство осветило некоторые методы, позволяющие плавно парсить и не отключаться.
Оставайтесь любопытными!