Эта статья была полезной?
Как обойти FunCaptcha с помощью Python
Технический специалист
В этом руководстве мы покажем, как решать задачи FunCaptcha с помощью Python и API 2Captcha. FunCaptcha — это тип CAPTCHA, который требует взаимодействия, похожего на человеческое. Давайте разберем решение на простые шаги.
Исходный код, а также необходимую информацию, можно найти в нашем репозитории по ссылке.
Предварительные требования
Перед началом убедитесь, что у вас есть следующее:
- Установленный Python.
- Действительный API-ключ от 2Captcha.
- Необходимые библиотеки Python:
seleniumbase,twocaptcha, иrequests.
Чтобы установить требуемые библиотеки, выполните команду:
bash
pip install seleniumbase twocaptcha requests
Шаг 1: Настройка Python-окружения
Сначала импортируем необходимые библиотеки для взаимодействия с веб-страницей и решения CAPTCHA:
python
import os
import requests
from seleniumbase import Driver
from selenium.webdriver.common.by import By
from twocaptcha import TwoCaptcha
Описание библиотек:
seleniumbase: обертка для Selenium, упрощающая автоматизацию браузера.twocaptcha: клиент Python для API 2Captcha, который поможет решить CAPTCHA.requests: используется для получения необходимых атрибутов для решения FunCaptcha.
Шаг 2: Инициализация API 2Captcha и WebDriver
Настраиваем решатель 2Captcha и Selenium WebDriver. API_KEY берется из переменных окружения. Замените его вашим реальным ключом API:
python
API_KEY = os.environ["APIKEY"] # Замените на ваш ключ API 2Captcha
solver = TwoCaptcha(API_KEY)
agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/125.0.0.0 Safari/537.36"
driver = Driver(uc=True, proxy=False, headless=False, agent=agent)
Параметры:
uc=Trueпозволяет использовать Undetected ChromeDriver для обхода механизмов обнаружения ботов.headless=Falseвключает интерфейс браузера для отладки (можно изменить наTrueдля работы в фоновом режиме).
Шаг 3: Открытие веб-сайта
Загружаем веб-сайт с FunCaptcha. Замените URL на целевой:
python
url = "https://example.com/login" # Замените на URL целевого сайта
driver.open(url)
Шаг 4: Ввод учетных данных
Если CAPTCHA появляется после входа, вводим учетные данные. Пример с заменой на ваши данные:
python
driver.type("#username", "your_email@example.com")
driver.type("#password", "your_password")
Шаг 5: Обнаружение фрейма FunCaptcha
Проверяем наличие FunCaptcha на странице:
python
try:
frame1 = driver.find_element(By.ID, "captcha-internal")
print("Captcha найдена")
Если CAPTCHA найдена, продолжаем к следующему шагу.
Шаг 6: Извлечение атрибутов FunCaptcha
Извлекаем sitekey, surl и data_blob:
python
sitekey = "your-sitekey-here" # Замените на реальный sitekey
driver.switch_to.frame(frame1)
driver.switch_to.frame("arkoseframe")
frame3 = driver.find_element(By.CLASS_NAME, "r34K7X1zGgAi6DllVF3T.show.active.inline")
arkose_client = requests.get(frame3.get_attribute("src").split("#")[0].replace("html", "js")).text.split(";")[0]
arkose_client = arkose_client.split(" ")[1]
print("arkoseClient: ", arkose_client)
Шаг 7: Извлечение данных для решения CAPTCHA
Получаем данные через JavaScript:
python
data_all = driver.execute_script(f"return {arkose_client}.state")
data_blob = data_all["config"]["data"]["blob"]
surl = data_all["config"]["pageLevel"]["surl"]
print("surl: ", surl)
print("data_blob: ", data_blob)
Шаг 8: Решение FunCaptcha с помощью API 2Captcha
Отправляем данные в API 2Captcha:
python
result = solver.funcaptcha(
sitekey=sitekey,
url=driver.current_url,
surl=surl,
**{'data[blob]': data_blob},
)
solution = result["code"] # Извлекаем решение
print("Captcha решена!")
Шаг 9: Вставка решения CAPTCHA
Вставляем решение в соответствующие поля:
python
driver.execute_script("document.getElementsByName('verification-token')[0].value = arguments[0];", solution)
driver.execute_script("document.getElementsByName('fc-token')[0].value = arguments[0];", solution)
driver.switch_to.default_content()
el = driver.find_element(By.NAME, "captchaUserResponseToken")
driver.execute_script(f"arguments[0].setAttribute('value', '{solution}');", el)
Шаг 10: Отправка формы и закрытие браузера
Завершаем процесс:
python
driver.execute_script("document.getElementById('captcha-challenge').submit();")
driver.sleep(10) # Ожидаем отправки формы
driver.close()
driver.quit()
Устранение неполадок
- Проверка API-ключа: Убедитесь, что ваш ключ 2Captcha действителен.
- Использование прокси: Если возникают ограничения, применяйте прокси.
- Изменения CAPTCHA: При изменении конфигурации сайта обновите код.
Заключение
Следуя этим шагам, вы сможете автоматически решать задачи FunCaptcha с помощью Python и API 2Captcha. Этот метод подходит для различных сайтов, использующих FunCaptcha.