Логотип «2Captcha»Перейти на главную страницу
Туториалы по обходу капчи

Эта статья была полезной?

Как обойти Lemin капчу

Грегори Фишер

Технический специалист

Введение

Lemin капча — это современная система защиты, которая использует интерактивные головоломки (например, перетаскивание пазлов или слайдеры) для верификации пользователей. В отличие от простых текстовых капч, Lemin генерирует уникальные идентификаторы сессии, привязывается к домену и требует точного совпадения контекста, что делает ее сложной для стандартных методов автоматизации и парсинга.

В этом руководстве мы подробно разберем, как автоматически обходить Lemin капча с помощью API 2Captcha. Мы рассмотрим, как извлечь необходимые параметры со страницы, настроить задачу с прокси или без них и корректно внедрить полученный ответ на целевой сайт.

Как найти параметры Lemin капча на сайте

Для успешного решения капчи вам понадобятся два критически важных параметра: капчаId и divId.

  1. Откройте целевую страницу в браузере и запустите инструменты разработчика (F12).
  2. Перейдите на вкладку Elements и найдите тег script, который загружает код с домена api.leminnow.com.
  3. В атрибуте src этого скрипта будет зашит уникальный идентификатор. Скопируйте его — это и есть ваш капчаId (обычно начинается с CROPPED_).
  4. Далее найдите div-контейнер, в который интегрируется капча. По умолчанию его id равен lemin-cropped-капча, но разработчики сайта могут изменить это значение. Скопируйте атрибут id этого блока — это ваш divId.

Параметры API

API 2Captcha поддерживает два типа задач для Lemin: с использованием наших прокси (LeminTaskProxyless) и с использованием ваших собственных прокси (LeminTask).

Обязательные параметры (для обоих типов)

Параметр Тип Описание
type string LeminTaskProxyless или LeminTask
websiteURL string Полный URL целевой страницы, где загружена капча
капчаId string Значение капчаId, извлеченное из скрипта Lemin
divId string ID родительского div-элемента, в котором находится капча

Опциональные параметры

Параметр Тип Описание
leminApiServerSubdomain string API-домен для загрузки скриптов. По умолчанию: api.leminnow.com
userAgent string User-Agent вашего браузера. Рекомендуется передавать для совпадения сессии

Параметры прокси (только для LeminTask)

Если сайт строго проверяет IP-адрес, используйте тип LeminTask и передайте данные вашего резидентского прокси.

Параметр Тип Описание
proxyType string Тип прокси: http, socks4 или socks5
proxyAddress string IP-адрес или хост прокси-сервера
proxyPort integer Порт прокси-сервера
proxyLogin string Логин для авторизации (если требуется)
proxyPassword string Пароль для авторизации (если требуется)

Примеры JSON-запросов

Запрос на создание задачи (Proxyless)

json Copy
{
    "clientKey": "YOUR_API_KEY",
    "task": {
        "type": "LeminTaskProxyless",
        "капчаId": "CROPPED_3dfdd5c_d1872b526b794d83ba3b365eb15a200b",
        "divId": "lemin-cropped-капча",
        "leminApiServerSubdomain": "api.leminnow.com",
        "websiteURL": "https://example.com/login"
    }
}

Запрос на создание задачи (с вашим прокси)

json Copy
{
    "clientKey": "YOUR_API_KEY",
    "task": {
        "type": "LeminTask",
        "капчаId": "CROPPED_3dfdd5c_d1872b526b794d83ba3b365eb15a200b",
        "divId": "lemin-cropped-капча",
        "websiteURL": "https://example.com/login",
        "proxyType": "http",
        "proxyAddress": "1.2.3.4",
        "proxyPort": 8080,
        "proxyLogin": "user",
        "proxyPassword": "password"
    }
}

Успешный ответ с решением

В отличие от многих других капч, Lemin возвращает не просто токен, а объект solution, содержащий answer и challenge_id. Оба значения понадобятся для финального запроса.

json Copy
{
    "errorId": 0,
    "status": "ready",
    "solution": {
        "answer": "0xaxakx0xaxaax0xkxx3ox0x3ox3ox...gAAAAABk8bgzEFOg9i3Jm",
        "challenge_id": "e0348984-92ec-23af-1488-446e3a58946c"
    },
    "cost": "0.00299",
    "createTime": 1692863536,
    "endTime": 1692863556
}

Пошаговая реализация на Python

Шаг 1: Создание задачи

python Copy
import requests

API_KEY = "YOUR_API_KEY"
API_HOST = "api.2captcha.com"

def create_lemin_task(website_url, капча_id, div_id):
    payload = {
        "clientKey": API_KEY,
        "task": {
            "type": "LeminTaskProxyless",
            "websiteURL": website_url,
            "капчаId": капча_id,
            "divId": div_id,
            "leminApiServerSubdomain": "api.leminnow.com"
        }
    }
    
    response = requests.post(f"https://api.2captcha.com/createTask", json=payload)
    return response.json()["taskId"]

Шаг 2: Получение результата

python Copy
import time

def get_lemin_result(task_id):
    while True:
        time.sleep(5)
        
        payload = {
            "clientKey": API_KEY,
            "taskId": task_id
        }
        
        response = requests.post(f"https://api.2captcha.com/getTaskResult", json=payload)
        result = response.json()
        
        if result.get("status") == "ready":
            return result["solution"]
        elif result.get("errorId") != 0:
            raise Exception(f"Ошибка API: {result.get('errorDescription')}")

Полные примеры кода

Python (через официальный SDK)

Использование SDK значительно упрощает код, так как библиотека сама берет на себя опрос статуса задачи.

python Copy
from twoкапча import Twoкапча

solver = Twoкапча('YOUR_API_KEY')

try:
    result = solver.lemin(
        капча_id='CROPPED_3dfdd5c_d1872b526b794d83ba3b365eb15a200b',
        div_id='lemin-cropped-капча',
        url='https://example.com/login',
        api_server='api.leminnow.com'
    )
    
    print(f"Answer: {result['answer']}")
    print(f"Challenge ID: {result['challenge_id']}")
    
except Exception as e:
    print(f"Ошибка при решении: {e}")

Интеграция с Selenium и внедрение ответа

После получения answer и challenge_id их нужно передать на сайт. Обычно Lemin ожидает эти данные в скрытых полях формы или через JavaScript-коллбэк перед отправкой формы.

python Copy
from selenium import webdriver
from selenium.webdriver.common.by import By
from twoкапча import Twoкапча
import time

driver = webdriver.Chrome()
driver.get("https://example.com/login")
time.sleep(3) # Ждем загрузки капчи

# Решаем капчу
solver = Twoкапча('YOUR_API_KEY')
result = solver.lemin(
    капча_id='CROPPED_...',
    div_id='lemin-cropped-капча',
    url=driver.current_url
)

# Внедряем полученные данные в скрытые поля (адаптируйте селекторы под ваш сайт)
driver.execute_script(f"""
    let answerInput = document.querySelector('input[name="lemin_answer"]');
    if (!answerInput) {{
        answerInput = document.createElement('input');
        answerInput.type = 'hidden';
        answerInput.name = 'lemin_answer';
        document.querySelector('form').appendChild(answerInput);
    }}
    answerInput.value = '{result["answer"]}';
    
    // Если сайт требует challenge_id
    let challengeInput = document.querySelector('input[name="lemin_challenge_id"]');
    if (challengeInput) {{
        challengeInput.value = '{result["challenge_id"]}';
    }}
""")

# Отправляем форму
driver.find_element(By.CSS_SELECTOR, "button[type='submit']").click()

Лучшие практики

1. Точно извлекайте капчаId

Идентификатор капчи зашит в URL скрипта. Если вы скопируете его неправильно или обрежете лишние символы, задача не будет решена.

2. Используйте резидентские прокси для строгих сайтов

Lemin анализирует сетевой трафик. Если вы решаете капчу через Proxyless, а финальный POST-запрос с ответом уходит с IP-адреса вашего дата-центра, сайт может отклонить токен. В таких случаях используйте тип задачи LeminTask и передавайте прокси напрямую в API.

3. Передавайте оба параметра из solution

Многие разработчики по ошибке отправляют только answer. Однако Lemin часто требует валидации связки answer и challenge_id. Убедитесь, что вы передаете оба значения в финальном запросе к целевому сайту.

4. Синхронизируйте User-Agent

Если вы используете Selenium или Playwright, передайте User-Agent браузера в параметре userAgent при создании задачи. Это поможет системе Lemin связать сессию решения с сессией отправки формы.

Отчеты о правильности решения

Если решение капчи оказалось неверным или вы хотите подтвердить корректный ответ, используйте систему отчетов 2Captcha. Это помогает улучшить качество распознавания и обучает наших работников.

Когда отправлять отчеты

Отправьте reportIncorrect, если:

  • Сайт отклонил полученные answer и challenge_id
  • Капча не загрузилась или выдала внутреннюю ошибку после внедрения токена
  • Работник пропустил шаг в интерактивной головоломке

Отправьте reportCorrect, если:

  • Решение прошло валидацию на сайте и форма успешно отправилась
  • Вы хотите подтвердить высокое качество работы воркера

Параметры отчетов

Параметр Тип Описание
clientKey string Ваш API-ключ
taskId string ID задачи, полученный при вызове createTask

Пример отправки отчета

python Copy
import requests

API_KEY = "YOUR_API_KEY"
API_HOST = "api.2captcha.com"

def report_incorrect(task_id):
    """Сообщить о неверном решении Lemin капча"""
    response = requests.post(
        f"https://api.2captcha.com/reportIncorrect",
        json={
            "clientKey": API_KEY,
            "taskId": task_id
        }
    )
    return response.json().get("errorId") == 0

def report_correct(task_id):
    """Сообщить о верном решении Lemin капча"""
    response = requests.post(
        f"https://api.2captcha.com/reportCorrect",
        json={
            "clientKey": API_KEY,
            "taskId": task_id
        }
    )
    return response.json().get("errorId") == 0

Важные моменты для отчетов

  1. Сохраняйте taskId — обязательно сохраняйте ID задачи в состоянии вашего скрипта, чтобы иметь возможность отправить отчет после проверки ответа на целевом сайте.
  2. Отправляйте своевременно — отчеты принимаются только в течение определенного времени после решения задачи.
  3. Не злоупотребляйте — отправляйте reportIncorrect только если вы уверены, что проблема на стороне сервиса, а не из-за вашего IP-адреса или устаревшей сессии на сайте.

Решение частых проблем

Сайт отклоняет ответ (Invalid Token)

Решения:

  • Убедитесь, что вы передаете и answer, и challenge_id.
  • Проверьте, не истекло ли время жизни сессии капчи (обычно это 1-2 минуты). Внедряйте ответ сразу после получения.
  • Переключитесь на LeminTask с резидентским прокси, чтобы IP-адрес при решении совпадал с IP при отправке формы.

Ошибка ERROR_CAPTCHA_UNSOLVABLE

Решения:

  • Проверьте правильность скопированного капчаId.
  • Убедитесь, что divId указан верно (часто разработчики меняют стандартный lemin-cropped-капча на свои значения).
  • Проверьте, не заблокирован ли домен api.leminnow.com в вашей сети.

Капча не появляется на странице

Решения:

  • Lemin может не загружаться, если сайт определяет, что вы используете автоматизацию (Selenium/Puppeteer) без маскировки. Используйте Undetected Chromedriver или stealth-плагины.

Полезные ссылки

Заключение

Обход Lemin капча через 2Captcha требует внимательного отношения к извлечению параметров со страницы и правильной передаче полученного решения.

Ключевые выводы:

  1. Точно извлекайте капчаId из URL скрипта и divId из контейнера.
  2. Помните, что решение состоит из двух частей: answer и challenge_id. Обе нужно передать на сайт.
  3. Для сайтов со строгой проверкой IP используйте тип задачи LeminTask с вашими прокси.
  4. Внедряйте токены как можно быстрее, пока сессия не истекла.
  5. Используйте reportIncorrect и reportCorrect для поддержания высокого качества решений.

Следуя этим рекомендациям, вы сможете надежно автоматизировать взаимодействие с сайтами, защищенными системой Lemin.