Як обійти CAPTCHA за допомогою бібліотеки Requests у Python
У цьому посібнику я розповім, як можна працювати з Python Requests, щоб проходити CAPTCHA, а також торкнуся важливих етичних аспектів і поширених труднощів.
Розуміння CAPTCHA та її типів
Перш ніж розглядати способи обходу CAPTCHA, давайте розберемося з різними типами:
- Image CAPTCHAs: Користувачі обирають зображення на основі підказки.
- Text-Based CAPTCHAs: Вимагають від користувачів вводити спотворений текст.
- reCAPTCHA v2 і v3: Версія Google просить користувачів підтвердити, що вони люди, інколи через вибір зображень.
- hCAPTCHA: Подібно до reCAPTCHA, але створено з урахуванням конфіденційності.
- Invisible CAPTCHAs: CAPTCHA, що працює у фоновому режимі, невидима для користувачів, але відстежує їхню взаємодію.
Спосіб 1: Використання сервісів Anti-CAPTCHA
Перш ніж ми розглянемо деякі базові сервіси для розв’язання CAPTCHA, я хотів би порекомендувати Інструмент Bright Data для розв’язання CAPTCHA як найкращий варіант. Ціна трохи вища, але ви отримуєте найповніший пакет.
Сервіси Anti-CAPTCHA, такі як 2Captcha or Anti-Captcha.com, розв’язують CAPTCHA замість вас, використовуючи людських виконавців або ШІ. Ці сервіси надають API, що дає змогу розробникам передавати зображення CAPTCHA або URL-адреси та отримувати рішення у відповідь.
- Встановлення бібліотеки requests:
- pip install requests
- Setting Up Anti-CAPTCHA: Зареєструйтеся, щоб отримати API-ключ у сервісі для розв’язання CAPTCHA.
Example Code:
import requests
def solve_captcha(api_key, image_url):
url = 'https://2captcha.com/in.php'
data = {
'key': api_key,
'method': 'base64',
'body': image_url, # Base64 encoded CAPTCHA image
'json': 1
}
response = requests.post(url, data=data).json()
if response['status'] == 1:
return response['request'] # Returns the CAPTCHA solution
else:
return None
Usage: Використайте відповідь для розв’язання CAPTCHA у заголовках запиту або в даних форми.
Метод 2: Інтеграція Selenium для reCAPTCHA та hCAPTCHA
Для складних CAPTCHA, як-от reCAPTCHA та hCAPTCHA, які важко обійти лише за допомогою requests, Selenium може допомогти імітувати людську взаємодію.
- Встановіть Selenium і Webdriver:
- pip install selenium
- Automating CAPTCHA Clicks:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://example.com/recaptcha-page")
# Click on the CAPTCHA checkbox
captcha_box = driver.find_element(By.ID, 'recaptcha-anchor')
captcha_box.click()
Limitations: Складні CAPTCHA можуть і надалі вимагати анти-CAPTCHA сервісів, навіть із Selenium. Перегляньте нашу статтю про найкращі інструменти для розв’язання CAPTCHA.
Метод 3: Використання машинного навчання для розв'язання CAPTCHA (просунутий рівень)
Моделі машинного навчання можуть розпізнавати закономірності в текстових і графічних CAPTCHA. Однак для навчання моделі потрібен великий набір розмічених зображень CAPTCHA.
1. Інструменти та бібліотеки:
- TensorFlow або PyTorch для навчання моделі.
- OpenCV для попередньої обробки зображень.
2. Dataset Preparation:
- Зберіть набір даних із позначених зображень CAPTCHA.
- Використовуйте набори даних CAPTCHA з репозиторіїв, зокрема CAPTCHA від онлайн-провайдерів.
3. Model Training: Навчіть свою модель на розмічених зображеннях CAPTCHA, щоб розпізнавати символи та зображення всередині CAPTCHA.
Метод 4: Обхід reCAPTCHA v3 на основі cookies
Для reCAPTCHA v3 вебсайти відстежують поведінку користувача, щоб виявляти запити CAPTCHA. Якщо автентифікуватися за допомогою cookies, ви можете взагалі уникнути запитів CAPTCHA.
1. Отримати cookies за допомогою Selenium:
cookies = driver.get_cookies()
2. Передавання cookies до requests:
session = requests.Session()
for cookie in cookies:
session.cookies.set(cookie['name'], cookie['value'])
3. Виконання запитів зі збереженими cookies: Цей метод найкраще працює для reCAPTCHA v3, яка спирається на дані про поведінку в браузері.
Метод 5: Розв’язання невидимих CAPTCHA за допомогою шаблонів людської взаємодії
- Імітуйте дії людини за допомогою Selenium: Використання реалістичних рухів миші та натискань клавіш у Selenium для імітації людських шаблонів взаємодії може зменшити частоту появи CAPTCHA.
- Human-Like Delay Simulation: Введення затримок у взаємодії зі сторінкою може зробити системи виявлення ботів менш підозрілими.
Додаткові поради для ефективного обходу CAPTCHA
Щоб ще більше зменшити ризик виявлення:
- Use IP Rotation: Поєднуйте з сервісами ротації проксі, щоб уникнути блокування за IP-адресою.
- Introduce Delays: Випадковим чином змінюйте затримки між запитами, щоб виглядати менш схожими на бота.
- Session Consistency: Зберігайте cookies і заголовки між запитами, щоб сесія перегляду залишалася послідовною.
Conclusion
Обхід CAPTCHA під час вебскрапінгу вимагає поєднання кількох стратегій: від використання сервісів anti-CAPTCHA та інструментів автоматизації на кшталт Selenium до ротації IP-адрес і імітації поведінки людини. Ці методи дають змогу ботам ефективно обходити CAPTCHA, але важливо зважати на етичні наслідки, адже CAPTCHA створені для захисту даних і безпеки користувачів. Балансування цих підходів із дотриманням політик сайту допомагає відповідально досягати цілей вебскрапінгу.

