Как обойти CAPTCHA с помощью Selenium и Node.js
In this article, I will explain how to bypass CAPTCHA using Selenium and Node.js. We’ll look at different approaches and modern tools that make it possible, while keeping things simple and practical for any developer looking to overcome these challenges.
Что такое CAPTCHA?
CAPTCHA означает «Completely Automated Public Turing test to tell Computers and Humans Apart.» Оно создает задания вроде искаженного текста, головоломок и reCAPTCHA, чтобы их могли легко решать только люди. Эти задачи, например выбор объектов на изображениях или ввод искаженного текста, просты для людей, но сложны для ботов. CAPTCHA не позволяет автоматизированным системам получать доступ к сайтам или сервисам, защищая их от бот-трафика.
Selenium and Node.js
Selenium is a popular browser automation tool that allows users to automate browser activities. With Node.js, a fast and scalable JavaScript runtime, you can create powerful web automation scripts to interact with websites.
- Selenium WebDriver: Инструмент для автоматизации браузеров.
- Node.js: Используется для обработки асинхронных задач и интеграции Selenium в рабочие процессы веб-скрейпинга.
Пошаговое руководство по обходу CAPTCHA
1. Installing Necessary Tools
To begin, you will need Node.js installed, along with Selenium and a browser driver like ChromeDriver.
npm install selenium-webdriver
npm install chromedriver
Также установите undetected-chromedriver — пакет, который помогает обходить CAPTCHA, делая ChromeDriver незаметным.
npm install undetected-chromedriver
2. Setting up Selenium with Node.js
После установки создайте простой скрипт Selenium, чтобы открыть сайт.
const { Builder, По ссылке } = требуется('selenium-webdriver');
const chrome = требуется('selenium-webdriver/chrome');
(async функция example() {
пусть driver = ожидайте новый Builder().forBrowser('chrome').build();
попробуйте {
ожидайте driver.получить('https://example.com');
} наконец-то {
ожидайте driver.quit();
}
})();
3. Обнаружение и обработка CAPTCHA
Когда обнаруживается CAPTCHA-проверка, самые простые решения часто требуют участия человека. Но что, если это не вариант? В таких случаях reCAPTCHA v2, вы можете:
Используйте сторонние CAPTCHA-решатели: Такие сервисы, как Яркие данные, 2Captcha или Anti-Captcha позволяют передать решение CAPTCHA человеку. Прочитайте мою список лучших CAPTCHA-решателей помогут найти подходящий сервис под ваши задачи.
npm install 2captcha
Пример использования 2Captcha:
const TwoCaptcha = требуется('2captcha');
const apiKey = 'YOUR_2CAPTCHA_API_KEY';
const captchaSolver = новый TwoCaptcha(apiKey);
// Example reCAPTCHA handling
async функция solveCaptcha(siteKey, pageUrl) {
возврат новый Обещание((resolve, rejectпрокси {
captchaSolver.solveRecaptchaV2({
sitekey: siteKey,
url: pageUrl
}, (err, resultпрокси {
если (err) reject(err);
resolve(result);
});
});
}
4. Using Undetected ChromeDriver
Некоторые CAPTCHA, например Google reCAPTCHA v3, анализируют поведение браузера и выявляют ботов на основе браузерного фингерпринтинга. Используя undetected-chromedriver, вы можете снизить вероятность того, что вас определят как бота.
Пример:
const undetectedChromedriver = требуется('undetected-chromedriver');
(async функция example() {
const driver = ожидайте новый undetectedChromedriver.Builder()
.forBrowser('chrome')
.build();
попробуйте {
ожидайте driver.получить('https://example.com');
} наконец-то {
ожидайте driver.quit();
}
})();
Этот инструмент не дает сайтам, использующим техники fingerprinting, помечать вашу автоматизацию как бота.
5. Работа со сложными CAPTCHA-вызовами
Image CAPTCHAs
Для CAPTCHA на основе изображений может потребоваться извлечь изображение и использовать распознавание изображений или сервисы решения CAPTCHA, такие как Anti-Captcha. Более продвинутый вариант — интеграция методов машинного обучения, например сверточных нейронных сетей (CNN), для решения таких CAPTCHA на основе изображений.
Обход reCAPTCHA v3
reCAPTCHA v3 работает в фоновом режиме: она отслеживает активность пользователя и выставляет оценку на основе паттернов взаимодействия. В v3 обходить ее становится сложнее, поскольку ничего не нужно решать явно, но можно обмануть алгоритм оценки, имитируя человекоподобные паттерны взаимодействия в браузере. К таким техникам относятся:
- Случайное перемещение указателя мыши
- Добавление небольших задержек между действиями
- Использование реальных профилей браузера
async функция humanLikeBehavior(драйвер) {
// Move the mouse randomly
ожидайте driver.actions().move({ origin: 'element', x: Математика.случайно() * 100, y: Математика.случайно() * 100 }).perform();
// Introduce random pauses
ожидайте driver.спать(Математика.случайно() * 2000 + 1000);
}
6. Блокировка по IP и фингерпринтинг браузера
Многие CAPTCHA-системы отслеживают IP-адреса пользователей, которые пытаются их пройти. Обойти это можно, используя ротацию IP-адресов через прокси:
npm install proxy-agent
Пример:
const ProxyAgent = требуется('proxy-agent');
(async функция example() {
const options = новый chrome.Опции().addArguments(' - proxy-server=PROXY_IP:PORT');
пусть driver = ожидайте новый Builder().forBrowser('chrome').setChromeOptions(варианты).build();
попробуйте {
ожидайте driver.получить('https://example.com');
} наконец-то {
ожидайте driver.quit();
}
})();
Этические и правовые аспекты
Хотя обойти CAPTCHA для тестирования или автоматизации возможно, важно понимать юридические и этические последствия такого обхода. Многие сайты прямо запрещают автоматизированный доступ в своих условиях обслуживания. Используйте автоматизацию ответственно, особенно если работаете в чувствительных областях.
Заключение
Bypassing CAPTCHA is a complex and evolving challenge, but you can overcome many obstacles by combining tools like Selenium, Node.js, undetected ChromeDriver, and CAPTCHA-solving services. Always stay within legal and ethical boundaries when applying these techniques, ensuring your automation projects remain compliant.

