Friendly Captcha
Основанный на токенах метод обхода Friendly Captcha.
Полученный токен необходимо установить в качестве значения для элемента input с именем frc-captcha-solution и/или передать функции обратного вызова, заданную аттрибутом data-callback у элемента div капчи.
Важно: Для успешного использования полученного токена, виджет капчи не должен быть загружен на странице. Для этого вам необходимо прерывать запросы к
/friendlycaptcha/...module.min.jsна странице. Когда виджет капчи уже загружен на странице, большая вероятность что полученный токен не сработает.
Типы задач
- FriendlyCaptchaTaskProxyless - мы используем собственный пул прокси-серверов для решения капч
- FriendlyCaptchaTask - мы используем переданный вами прокси
Спецификация для типа задачи FriendlyCaptchaTaskProxyless
| Свойство | Тип | Обязателен | Описание |
|---|---|---|---|
| type | Строка | Да | Тип задачи: FriendlyCaptchaTaskProxyless FriendlyCaptchaTask |
| websiteURL | Строка | Да | Полный URL-адрес целевой веб-страницы, на которую загружается капча. Мы не открываем страницу, это не проблема, если страница доступна только для авторизованных пользователей |
| websiteKey | Строка | Да | Значение аттрибута data-apikey элемента div капчи |
| version | Строка | Нет | Версия Friendly Captchav1 — указывает на то, что это Friendly Captcha V1v2 — указывает на то, что это Friendly Captcha V2По умолчанию: v1Подробнее о различиях версий см. в официальной документации Friendly Captcha. |
| moduleScript | Строка | Нет | URL-адрес скрипта Friendly Captcha с атрибутом type="module", найденного на странице с капчей. |
| nomoduleScript | Строка | Нет | URL-адрес скрипта Friendly Captcha с атрибутом nomodule, найденного на странице с капчей. |
Спецификация для типа задачи FriendlyCaptchaTask
Задача FriendlyCaptchaTask расширяет FriendlyCaptchaTaskProxyless, добавляя набор параметров, связанных с прокси, перечисленных ниже.
| Свойство | Тип | Обязателен | Описание |
|---|---|---|---|
| proxyType | Строка | Да | Тип прокси: http socks4 socks5 |
| proxyAddress | Строка | Да | IP-адрес прокси-сервера или имя хоста |
| proxyPort | Число | Да | Порт прокси-сервера |
| proxyLogin | Строка | Нет | Логин используемый для аунтефикации на прокси-сервере |
| proxyPassword | Строка | Нет | Пароль используемый для аунтефикации на прокси-сервере |
Примеры запросов
Метод: createTask
Эндпоинт API: https://api.2captcha.com/createTask
Пример запроса FriendlyCaptchaTaskProxyless
Friendly Captcha V1:
json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "FriendlyCaptchaTaskProxyless",
"websiteURL": "https://example.com",
"websiteKey": "2FZFEVS1FZCGQ9",
"version": "v1",
"moduleScript": "https://cdn.example.com/static/js/friendly-challenge/@0.9.1/widget.module.min.js",
"nomoduleScript": "https://cdn.example.com/static/js/friendly-challenge/@0.9.1/widget.js"
}
}
Friendly Captcha V2:
json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "FriendlyCaptchaTaskProxyless",
"websiteURL": "https://example.com",
"websiteKey": "2FZFEVS1FZCGQ9",
"version": "v2",
"moduleScript": "https://cdn.example.com/v2/widget.module.min.js",
"nomoduleScript": "https://cdn.example.com/v2/widget.js"
}
}
Пример запроса FriendlyCaptchaTask
Friendly Captcha V1:
json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "FriendlyCaptchaTask",
"websiteURL": "https://example.com",
"websiteKey": "2FZFEVS1FZCGQ9",
"version": "v1",
"proxyType": "http",
"proxyAddress": "1.2.3.4",
"proxyPort": "8080",
"proxyLogin": "user23",
"proxyPassword": "p4$w0rd",
"moduleScript": "https://cdn.example.com/static/js/friendly-challenge/@0.9.1/widget.module.min.js",
"nomoduleScript": "https://cdn.example.com/static/js/friendly-challenge/@0.9.1/widget.js"
}
}
Friendly Captcha V2:
json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "FriendlyCaptchaTask",
"websiteURL": "https://example.com",
"websiteKey": "2FZFEVS1FZCGQ9",
"version": "v2",
"proxyType": "http",
"proxyAddress": "1.2.3.4",
"proxyPort": "8080",
"proxyLogin": "user23",
"proxyPassword": "p4$w0rd",
"moduleScript": "https://cdn.friendlycaptcha.com/v2/widget.module.min.js",
"nomoduleScript": "https://cdn.friendlycaptcha.com/v2/widget.js"
}
}
Пример ответа
Метод: getTaskResult
Эндпоинт API: https://api.2captcha.com/getTaskResult
json
{
"errorId": 0,
"status": "ready",
"solution": {
"token": "f8b10f4ad796484bae963b1ebe3ce2bb.ZXL8Z...AAAAAA.AgAD" },
"cost": "0.00299",
"ip": "1.2.3.4",
"createTime": 1692863536,
"endTime": 1692863556,
"solveCount": 1
}
Использование токена
Полученный токен поместите в значение тега input с name = frc-captcha-solution, затем отправьте форму, внутри которой находится этот input, например:
js
document.querySelector('input.frc-captcha-solution').value='f8b10f4ad796484bae963b1ebe3ce2bb.ZXL8Z...AAAAAA.AgAD'
document.querySelector('form').submit()
Имейте в виду, что имя для input может быть кастомизировано с помощью аттрибута data-solution-field-name и в этом случае нужно использовать значение этого аттрибута, как имя.
Если на странице задана коллбек-функция, то можно отправить токен через нее. Например, если data-callback="doneCallback" то вы должны выполнить:
js
doneCallback('f8b10f4ad796484bae963b1ebe3ce2bb.ZXL8Z...AAAAAA.AgAD')