Alibaba CAPTCHA
Основанный на токенах метод обхода Alibaba CAPTCHA.
ВАЖНО: некоторые параметры генерируются динамически и могут отличаться при каждой загрузке страницы, защищённой Alibaba CAPTCHA.
Типы задач
- AlibabaTaskProxyless — мы используем собственный пул прокси-серверов для решения капч.
- AlibabaTask — мы используем переданный вами прокси.
Как найти все необходимые параметры
Для получения параметров, необходимых для создания задачи, потребуется проанализировать сетевой трафик страницы и данные, возвращаемые сервером при появлении капчи.
Шаг 1. Получение страницы с капчей
- Откройте сайт и выполните действие, которое вызывает появление капчи (например, попытку авторизации).
- Откройте DevTools → Network.
- Найдите запрос, после которого сервер возвращает HTML-страницу капчи вместо обычного JSON-ответа.
В ответе страницы обычно присутствует объект вида:
javascript
var requestInfo = {
data,
region,
sceneId,
token,
traceid,
type,
userId,
userUserId
}
Шаг 2. Извлечение параметров из requestInfo
Из объекта requestInfo необходимо получить следующие значения:
| Параметр задачи | Источник |
|---|---|
| sceneId | поле sceneId |
| userId | поле userId |
| userUserId | поле userUserId |
| verifyType | поле type |
| region | поле region |
| UserCertifyId | поле traceid |
Дополнительно необходимо сохранить:
| Параметр | Источник |
|---|---|
| u_atoken | значение token |
| u_asig | значение traceid |
Эти параметры используются при повторной отправке запроса после успешного решения капчи.
Шаг 3. Поиск sceneId через сетевые запросы
Если объект requestInfo отсутствует или обфусцирован, значение sceneId можно найти альтернативным способом:
-
Перейдите во вкладку Network.
-
Выполните поиск по ключам:
sceneIdCaptchaSceneIdsId
-
Проверьте содержимое запросов и ответов, связанных с проверкой или инициализацией капчи.
Шаг 4. Получение prefix
Параметр prefix обычно содержится в запросах, связанных с загрузкой задания капчи.
Для поиска:
- Найдите запросы, выполняемые при инициализации капчи.
- Откройте URL запроса.
- Найдите параметр
prefixв строке запроса, параметрах URL или в теле ответа сервера.
Шаг 5. Получение apiGetLib
Параметр apiGetLib представляет собой ссылку на JavaScript-библиотеку капчи.
Обычно её можно получить одним из следующих способов:
- Найти тег
<script>на странице капчи, содержащий загрузку библиотеки. - Найти запрос к файлу
AliyunCaptcha.jsво вкладке Network. - Сформировать URL по шаблону, используемому сайтом.
Пример:
text
https://o.example.com/captcha-frontend/aliyunCaptcha/AliyunCaptcha.js?t=2041
Итоговый набор параметров
В результате должны быть получены следующие значения:
json
{
"sceneId": "...",
"prefix": "...",
"userId": "...",
"userUserId": "...",
"verifyType": "...",
"region": "...",
"UserCertifyId": "...",
"apiGetLib": "..."
}
Дополнительно необходимо сохранить:
json
{
"u_atoken": "...",
"u_asig": "..."
}
Эти значения используются для повторного выполнения запроса после получения решения капчи.
Спецификация для типа задачи AlibabaTaskProxyless
| Свойство | Тип | Обязателен | Описание |
|---|---|---|---|
| type | Строка | Да | Тип задачи: AlibabaTaskProxyless AlibabaTask |
| websiteURL | Строка | Да | Полный URL-адрес целевой веб-страницы, на которую загружается капча |
| sceneId | Строка | Да | Идентификатор сценария капчи, передаётся в следующем формате: "sceneId":"1ww7426c4" |
| prefix | Строка | Да | Параметр инициализации капчи, передаётся в URL запроса, используемого для загрузки текста задания на странице. Например, если URL имеет вид: https://dlw3kug.captcha-open.example.aliyuncs.com/, то значение параметра prefix соответствует поддомену — dlw3kug |
| userId | Строка | Нет | Уникальный идентификатор пользователя или сессии на стороне сайта |
| userUserId | Строка | Нет | Дополнительный (вторичный) идентификатор пользователя |
| verifyType | Строка | Нет | Версия или тип механизма проверки капчи |
| region | Строка | Нет | Регион сервера или дата-центра, через который обрабатывается капча |
| userCertifyId | Строка | Нет | Уникальный ID проверки, связанный с текущей сессией капчи |
| apiGetLib | Строка | Нет | Ссылка на JS-библиотеку капчи, используемую сайтом. Значение формируется на стороне клиента и может генерироваться динамически при каждом рендеринге страницы |
| userAgent | Строка | Нет | User-Agent браузера, с которым открывается страница |
Спецификация для типа задачи AlibabaTask
| Свойство | Тип | Обязателен | Описание |
|---|---|---|---|
| proxyType | Строка | Да | Тип прокси: http socks4 socks5 |
| proxyAddress | Строка | Да | IP-адрес прокси-сервера или имя хоста |
| proxyPort | Число | Да | Порт прокси-сервера |
| proxyLogin | Строка | Нет | Логин для аутентификации на прокси-сервере |
| proxyPassword | Строка | Нет | Пароль для аутентификации на прокси-сервере |
Примеры запросов
Метод: createTask
Эндпоинт API: https://api.rucaptcha.com/createTask
Пример запроса AlibabaTaskProxyless
json
{
"clientKey":"YOUR_API_KEY",
"task":{
"type":"AlibabaTaskProxyless",
"websiteUrl":"https://www.example.com",
"sceneId":"abc123xyz4",
"prefix":"def456gh",
"userId":"Abc123Def456Ghi789Jkl012Mno345Pqr678Stu901=",
"userUserId":"Xyz987Abc654Def321Ghi098Jkl765Mno432Pqr109=",
"verifyType":"1.0",
"region":"sgp",
"UserCertifyId":"abc123def456ghi789jkl012mno345pq",
"apiGetLib":"https://o.example.com/captcha-frontend/aliyunCaptcha/AliyunCaptcha.js?t=1234",
"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
}
}
Пример запроса AlibabaTask с прокси
json
{
"clientKey":"YOUR_API_KEY",
"task":{
"type":"AlibabaTask",
"websiteUrl":"https://www.example.com",
"sceneId":"abc123xyz4",
"prefix":"def456gh",
"userId":"Abc123Def456Ghi789Jkl012Mno345Pqr678Stu901=",
"userUserId":"Xyz987Abc654Def321Ghi098Jkl765Mno432Pqr109=",
"verifyType":"1.0",
"region":"sgp",
"UserCertifyId":"abc123def456ghi789jkl012mno345pq",
"apiGetLib":"https://o.example.com/captcha-frontend/aliyunCaptcha/AliyunCaptcha.js?t=1234",
"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36",
"proxyType":"http",
"proxyAddress":"1.2.3.4",
"proxyPort":8080,
"proxyLogin":"login",
"proxyPassword":"password"
}
}
Пример ответа
Метод: getTaskResult
Эндпоинт API: https://api.rucaptcha.com/getTaskResult
json
{
"errorId": 0,
"status": "ready",
"solution": {
"data": {
"tokens": "{\"sceneId\":\"abc123xyz4\",\"certifyId\":\"aBcDeF1234\",\"deviceToken\":\"ABC_WEB#1234...xyz789=\",\"data\":\"AbC123xYz...DeF456qWe789\"}"
}
}
}