CoderCastrov logo
CoderCastrov
Парсер

Обход защиты от парсинга с использованием бесплатных прокси

Обход защиты от парсинга с использованием бесплатных прокси
просмотров
4 мин чтение
#Парсер

Когда вы погружаетесь в прекрасный мир парсинга веб-сайтов, вы быстро понимаете, что парсинг - это постоянная игра в кошку и мышку. С одной стороны веб-сайты реализуют более или менее сложные методы защиты своих ценных данных от использования неприятными и злобными ботами. С другой стороны разработчики ботов стремятся избежать ловушек, установленных веб-сайтами, чтобы в конечном итоге получить то, что им нужно.

Существует множество техник для обнаружения парсеров. Администратор веб-сайта, желающий защитить себя, может установить ловушки-ссылки; ссылки, которые невидимы для обычных посетителей, но присутствуют в исходном коде. Бот, который решит посетить эту ссылку, будет сразу же обнаружен. Еще один простой способ обнаружить парсер - это мониторинг трафика. Если десятки страниц посещаются за несколько секунд с одного IP-адреса, то запросивший его пользователь явно не является человеком.

Парсеры, которые попадаются, могут понести гораздо худшие последствия, чем мышь. В лучшем случае сервер веб-сайта может просто отказаться отвечать на их запросы на некоторое время, но парсер также может быть окончательно заблокирован и его IP-адрес может попасть в публичный черный список. В этом случае игра закончится.

Игра окончена? Действительно?

На самом деле, нет.

Хотя существует широкий спектр методов обнаружения ботов, пытающихся использовать веб-сайты, способы предотвратить их действия значительно ограничены. Практически все, что сервер может сделать, это отказаться отвечать на будущие запросы, поступающие с IP-адреса бота.

Из того, что мы узнали, следует, что IP-адреса занимают центральное место в борьбе против парсинга. Как в пассивной части - обнаружение парсеров, так и в активной части - принятие контрмер. Тогда почему бы не использовать несколько IP-адресов при парсинге? Это затруднило бы задачу веб-сайта. Даже если ему удастся обнаружить и заблокировать подозрительный IP, бот все равно может использовать другие IP-адреса, которыми он располагает.

Это может показаться сложным, но на самом деле вы можете сделать это. Вы можете сделать это легко. Очень легко. Я был поражен, когда понял, насколько это легко можно сделать. Это легко благодаря бесплатным прокси, которые можно найти в Интернете.

В компьютерных сетях прокси-сервер - это серверное приложение или устройство, которое действует как посредник для запросов от клиентов, ищущих ресурсы у серверов, предоставляющих эти ресурсы. Прокси-сервер таким образом работает от имени клиента при запросе сервиса, потенциально скрывая истинное происхождение запроса к серверу ресурсов. [1]

Отправляя свои запросы на эти прокси, вы можете получить все ресурсы, которые вам нужны с сервера, на который вы нацеливаетесь, не раскрывая свою собственную личность. Сервер не имеет способа узнать, что сотни запросов, которые он получает от десятков IP-адресов, на самом деле имеют один и тот же источник.

Теперь, когда мы прошли все необходимые теоретические знания, давайте перейдем к техническим вещам. В следующих абзацах я покажу вам, как вы можете с помощью нескольких строк кода получить IP-адреса сотен бесплатных прокси одновременно. Я также дам вам хитрость, чтобы преодолеть самый большой недостаток бесплатных прокси - их ненадежность.

Получение IP-адресов бесплатных прокси

Сначала вам нужен надежный источник прокси. На следующем веб-сайте предоставляется список из 300 бесплатных прокси, которые вы можете использовать. Список обновляется каждые 10 минут, и также предоставляется дополнительная информация, такая как уровень анонимности или время последней проверки адреса.

Список бесплатных прокси

300 бесплатных прокси. Список прокси обновляется каждые 10 минут.

free-proxy-list.net

Ниже приведен фрагмент кода, который выполняет две операции. Сначала он получает исходный код страницы, содержащей IP-адреса, которые мы ищем. Затем он анализирует его с помощью BeautifulSoup. Это отличная библиотека для извлечения данных из файлов HTML и XML. Здесь все было сделано кратко и просто, но можно подумать о некоторых улучшениях. Фильтрация прокси с низким уровнем анонимности - одно из простых улучшений.


Преодоление ненадежности бесплатных прокси

После получения IP-адресов логичным следующим шагом является их использование для отправки запросов. Возможно, вас разочарует то, что относительно большая часть запросов не удается выполнить. Вы используете бесплатные прокси... Чего вы ожидали? Поскольку они бесплатные, эти прокси довольно медленные и ненадежные. Чтобы преодолеть этот недостаток, вы можете использовать следующую функцию. Она просто повторяет запрос, пока он не будет выполнен. При каждом новом запросе используется новый IP-адрес из ранее полученного списка. Когда запрос несколько раз подряд не удается выполнить, список прокси обновляется. Согласитесь, это неэлегантное и немного грубое решение, но оно работает.

С помощью этих двух функций мы создаем небольшую систему, позволяющую получать нужные ресурсы с сервера, на который вы нацеливаетесь, не раскрывая своей личности. Это работает, это бесплатно и это помогает избежать блокировки, но работает довольно медленно. Вы можете делать только один запрос за раз, и каждый запрос может занимать несколько секунд и, возможно, завершаться неудачей. Чтобы ускорить парсинг, вы можете использовать потоки для выполнения нескольких запросов параллельно.

Наконец, в заключение, я хотел бы порекомендовать библиотеку на языке Python. Поскольку никому не нравится изобретать велосипед, особенно разработчикам, я настоятельно рекомендую вам взглянуть на Scrapy. Если вы новичок в парсинге, вам может быть неизвестна эта библиотека на языке Python для парсинга и обхода веб-сайтов.

Scrapy

Быстрый и мощный фреймворк для парсинга и веб-скрапинга.

scrapy.org

Библиография

[1] https://en.wikipedia.org/wiki/Proxy_server