Обычные пользователи интернета иногда сталкиваются с раздражающим всплывающим окном под названием CAPTCHA. Решить задачу повторного CAPTCHA Google, когда вы просто просматриваете страницы, очень просто. Однако когда дело доходит до ботов, получение такого же всплывающего окна может оказаться губительным, поскольку они предназначены для остановки программ автоматизации.
Срабатывание CAPTCHA — это зачастую худшее, что может случиться с ботом. Его пользователю придется либо решать эту проблему вручную, либо забыть об автоматизации, либо воспользоваться услугой по решению CAPTCHA. К счастью, есть несколько способов полностью избежать CAPTCHA.
Что такое CAPTCHA?
CAPTCHA или Completely Automated Public Turing Test to Tell Computers and Humans Apart — это анти-бот решение, обычно применяемое на веб-сайтах. На протяжении многих лет существовали различные его итерации, но наиболее часто используемым сейчас является Google reCAPTCHA.
В ранних версиях теста пользователи должны были вводить зашифрованные слова, решать уравнения или выполнять другие обыденные задания. Со временем сложные боты, такие как краулеры поисковых систем, научились расшифровывать CAPTCHA, что сделало тест менее полезным.
Компания Google взяла на себя обязательство создать новые типы CAPTCHA, которые было бы значительно сложнее решить автоматическим программам. В настоящее время тесты больше не требуют решить уравнение или ввести пару слов. Срабатывание CAPTCHA сегодня встретит вас различными головоломками на основе картинок.
Эти головоломки тоже не случайны. Google использует их для обучения систем машинного обучения и моделей ИИ распознаванию картинок. Поскольку пользователям чаще всего приходится распознавать такие объекты, как поезда, самолеты, мосты и т. д., бот также может научиться делать это.
Существует еще несколько типов CAPTCHA. Есть метко названная «Невидимая CAPTCHA», которая делает именно то, что написано в ее названии. Вы можете встретить сайты, где она встроена, и получить ее никак не получится.
Невидимые CAPTCHA отслеживают движения вашей мыши, характер нажатий и другие данные, чтобы определить, кто просматривает сайт — человек или бот. Поскольку боты, по крайней мере, в те времена, имели весьма необычные шаблоны (мгновенное движение мыши, отсутствие прокрутки, быстрый просмотр), невидимые CAPTCHA могли бы поймать их, не обременяя обычного пользователя.
Другим распространенным методом, который можно отнести к CAPTCHA, являются honeypots. Это скрытые ссылки или другие элементы в CSS или исходном коде сайта, которые невидимы для пользователя. Однако боты могут легко найти их и, нажав на них, получить CAPTCHA.
Также существуют CAPTCHA на основе звука. Они обычно добавляются к некоторым обычным тестам для людей с нарушениями зрения, но иногда вы можете получить чисто звуковую CAPTCHA. В них вам часто придется вводить цифры или слова, услышанные в звуковом файле.
6 способов избежать CAPTCHA
Обратите внимание, что ни один из этих способов не является взаимоисключающим, поэтому используйте как можно больше способов в сочетании друг с другом. Использование всех этих способов одновременно полностью минимизирует количество CAPTCHA, которые вы получаете при использовании ботов.
Есть способы автоматической расшифровки CAPTCHA, например, использование специальных сервисов, которые сделают это за вас. Однако, как правило, они не стоят таких хлопот. Некоторые из приведенных здесь методов позволят вам избежать теста, как только вы его получите, что делает сервисы, которые распознают CAPTCHA автоматически, менее полезными, чем вы могли бы подумать.
1. Измените юзер-агента
Если вы используете какое-либо решение для парсинга, которое вы создали сами, оно, скорее всего, имеет определенный юзер-агент (UA) по умолчанию. Поскольку он отправляется автоматически с каждым запросом, его можно использовать для отслеживания вашей активности.
Кроме того, некоторые пользовательские агенты по умолчанию часто блокируются веб-сайтами, поскольку они являются «мертвой уликой», указывающей на то, что кто-то использует бота. Так что получите список легальных юзер-агентов и чередуйте их. Поэкспериментируйте с ними, чтобы выяснить, как часто нужно менять юзер-агента для расшифровки CAPTCHA, чтобы они вообще не срабатывали.
2. Используйте меняющиеся прокси
Ваш IP-адрес — это еще один способ, с помощью которого вас могут отследить большинство сайтов. Если один и тот же IP-адрес продолжает массово отправлять запросы на подключение, они знают, что вы используете ботов или другое программное обеспечение для автоматизации.
Меняющиеся прокси-серверы — это решение проблемы. Они предоставляют вам пул IP-адресов, которые можно менять после каждого запроса. Кроме того, меняющиеся прокси часто поступают с устройств, расположенных в обычных домах (в отличие от серверов бизнес-класса), поэтому соединение кажется подлинным и законным.
3. Случайная задержка запроса
Последовательная отправка запросов без каких-либо задержек — это самый старый трюк в списке, и веб-сайты знают об этом. Если вы постоянно меняете страницы или переходите на URL-адреса через заданные интервалы времени, которые никогда не меняются, это явно бот, делающий все за вас.
Поэтому один из самых важных и простых методов избежать CAPTCHA — это добавить рандомизацию во время запроса. Если вы сами создали свой собственный парсер, добавить рандомизацию — проще простого.
4. Избегайте прямых ссылок
Еще один способ, с помощью которого веб-сайты часто обнаруживают боты, заключается в том, что они чаще всего переходят по заданной библиотеке URL-адресов. Однако люди часто посещают домашнюю страницу, а затем просматривают ее в произвольном порядке. Поэтому многие сайты внедрили cookies для домашней страницы, которые помогают обнаруживать ботов.
Поэтому старайтесь собирать URL-адреса на ходу, вместо того чтобы постоянно переходить по прямым ссылкам на сайтах. Это поможет, если вы также используете headless браузер, чтобы собирать куки по ходу, а не просто отправлять прямые запросы на сайт.
5. Рендеринг JavaScript
В дополнение к предыдущему методу, обычно полезно рендерить JavaScript, если вы используете браузер вместо прямых запросов. В наше время на сайтах есть тонна контента, скрытого в JavaScript. Большая его часть полезна для пользователя, поэтому на тех, кто блокирует JavaScript, смотрят с подозрением.
Рендеринг элементов JavaScript может немного увеличить время загрузки, но он также уменьшит вероятность получения CAPTCHA. Это становится балансирующим действием, которое вы должны выполнить, поскольку вам нужно выбрать, что важнее — скорость или CAPTCHA.
6. Избегайте honeypots
Обойти honeypots несколько проще, чем может показаться на первый взгляд. Поскольку эти элементы должны быть невидимыми для обычных пользователей, они часто имеют такие теги, как «скрытый» или их видимость установлена на «выключено».
Итак, проверьте элементы и исходный код страницы. Обратите особое внимание на все URL-адреса, поскольку именно в них часто находятся honeypots. Если есть URL, который скрыт, а видимость установлена на "off", вы можете быть почти уверены, что это будет honeypot.