Обхід CAPTCHA за допомогою Selenium і Nodejs

Як обійти 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 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, By } = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');
(async function example() {
let driver = await new Builder().forBrowser('chrome').build();
try {
await driver.get('https://example.com');
} finally {
await driver.quit();
}
})();

3. Виявлення та обробка CAPTCHA

Коли виявлено CAPTCHA-перевірку, найпростіші рішення часто потребують ручного втручання. Але що, якщо це неможливо? У випадках reCAPTCHA v2, ви можете:

Використовуйте сторонні CAPTCHA-розв'язувачі: Сервіси на кшталт Bright Data, 2Captcha або Anti-Captcha дають змогу передати розв’язання CAPTCHA людині. Читайте мій список найкращих CAPTCHA-розв'язувачів щоб знайти ідеальний сервіс для ваших потреб.

npm install 2captcha

Приклад використання 2Captcha:

const TwoCaptcha = require('2captcha');
const apiKey = 'YOUR_2CAPTCHA_API_KEY';
const captchaSolver = new TwoCaptcha(apiKey);
// Example reCAPTCHA handling
async function solveCaptcha(siteKey, pageUrl) {
return new Promise((resolve, reject) => {
captchaSolver.solveRecaptchaV2({
sitekey: siteKey,
url: pageUrl
}, (err, result) => {
if (err) reject(err);
resolve(result);
});
});
}

4. Using Undetected ChromeDriver

Деякі CAPTCHA, як-от Google reCAPTCHA v3, аналізують поведінку браузера і виявляють ботів на основі браузерного відбитка. За допомогою undetected-chromedriver можна зменшити ймовірність того, що вас виявлять як бота.

Example:

const undetectedChromedriver = require('undetected-chromedriver');
(async function example() {
const driver = await new undetectedChromedriver.Builder()
.forBrowser('chrome')
.build();
try {
await driver.get('https://example.com');
} finally {
await driver.quit();
}
})();

Цей інструмент не дає сайтам, які застосовують техніки фінгерпринтингу, вважати вашу автоматизацію ботом.

5. Робота зі складними CAPTCHA-завданнями

Image CAPTCHAs

Для CAPTCHA на основі зображень може знадобитися витягти зображення та використати розпізнавання зображень або сервіси розв’язання CAPTCHA, такі як Anti-Captcha. Більш просунутим варіантом було б інтегрувати методи машинного навчання, наприклад згорткові нейронні мережі (CNN), щоб розв’язувати такі CAPTCHA на основі зображень.

Обхід reCAPTCHA v3

reCAPTCHA v3 працює у фоновому режимі, відстежуючи активність користувача та виставляючи оцінку на основі шаблонів взаємодії. У v3 обійти її складніше, оскільки не потрібно нічого розв’язувати явно, але можна ввести в оману алгоритм оцінювання, імітуючи людську поведінку в браузері. До таких технік належать:

  • Випадкове переміщення курсора миші
  • Додавання невеликих затримок між діями
  • Використання реальних профілів браузера
async function humanLikeBehavior(driver) {
// Move the mouse randomly
await driver.actions().move({ origin: 'element', x: Math.random() * 100, y: Math.random() * 100 }).perform();
// Introduce random pauses
await driver.sleep(Math.random() * 2000 + 1000);
}

6. Блокування за IP і фінгерпринтинг браузера

Багато CAPTCHA-систем відстежують IP-адреси користувачів, які намагаються їх пройти. Обійти це можна, змінюючи IP-адреси через проксі:

npm install proxy-agent

Example:

const ProxyAgent = require('proxy-agent');
(async function example() {
const options = new chrome.Options().addArguments(' - proxy-server=PROXY_IP:PORT');
let driver = await new Builder().forBrowser('chrome').setChromeOptions(опції).build();
try {
await driver.get('https://example.com');
} finally {
await driver.quit();
}
})();

Етичні та правові аспекти

Хоча обійти CAPTCHA для тестування чи автоматизації можливо, важливо розуміти правові та етичні наслідки такого підходу. Багато вебсайтів прямо забороняють автоматизований доступ у своїх умовах користування. Використовуйте автоматизацію відповідально, особливо якщо працюєте у чутливих галузях.

Conclusion

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.

Схожі записи