reCAPTCHA V2
Основанный на токенах метод автоматического решения reCAPTCHA V2.
Полученный токен может быть отправлен на целевой веб-сайт внутри поля формы g-recaptcha-response
или передан функции обратного вызова.
Типы задач
- RecaptchaV2TaskProxyless - Подходит для большинства случаев. Мы используем собственный пул прокси-серверов для решения капч
- RecaptchaV2Task - Используется в случаях, когда требуется использовать одинаковый IP-адрес. Например в сервисах Google, таких как Google Search, YouTube и т.д. Плохие прокси-серверы резко снизят вероятность успеха и увеличат время решения капчи.
Спецификация для типа задачи RecaptchaV2TaskProxyless
Свойство | Тип | Обязателен | Описание |
---|---|---|---|
type | Строка | Да | Тип задачи: RecaptchaV2TaskProxyless RecaptchaV2Task |
websiteURL | Строка | Да | Полный URL-адрес целевой веб-страницы, на которую загружается капча. Мы не открываем страницу, это не проблема, если страница доступна только для авторизованных пользователей |
websiteKey | Строка | Да | reCAPTCHA sitekey. Свойство data-sitekey для reCAPTCHA, которое можно найти внутри элемента div или внутри параметра k запросов к reCAPTHCHA API. Вы также можете использовать script, чтобы найти значение sitekey. |
recaptchaDataSValue | Строка | Нет | Значение параметра data-s . Может потребоваться для обхода капчи в сервисах Google. |
isInvisible | Логический | Нет | Укажите значение true для невидимой версии reCAPTCHA. Невидимая версия reCAPTCHA, это когда вы не видите флажок, но капча появляется на странице. В основном используется вместе с функцией обратного вызова. |
userAgent | Строка | Нет | User-Agent браузера, который будет использован пользователем при загрузке капчи. Важно использовать значения User-Agent только современных браузеров. |
cookies | Строка | Нет | Переданные вами cookie будут установлены в браузере нашего работника. Часто используется для решения капчи в сервисах Google. Формат передачи cookies : key1=val1; key2=val2 . |
apiDomain | Строка | Нет | Домен, с которого загружается reCAPTCHA: recaptcha.net или google.com . По умолчанию используется google.com . |
Спецификация для типа задачи RecaptchaV2Task
Задача RecaptchaV2Task
расширяет RecaptchaV2TaskProxyless
, добавляя набор параметров, связанных с прокси, перечисленных ниже. Задача RecaptchaV2Task
предназначена для решения капчи используя ваш прокси сервер.
Свойство | Тип | Обязателен | Описание |
---|---|---|---|
proxyType | Строка | Да | Тип прокси: http socks4 socks5 |
proxyAddress | Строка | Да | IP-адрес прокси-сервера или имя хоста |
proxyPort | Целое число | Да | Порт прокси-сервера |
proxyLogin | Строка | Нет | Логин используемый для аунтефикации на прокси-сервере |
proxyPassword | Строка | Нет | Пароль используемый для аунтефикации на прокси-сервере |
Примеры запросов
Метод: createTask
Эндпоинт API: https://api.rucaptcha.com/createTask
RecaptchaV2TaskProxyless
{
"clientKey":"YOUR_API_KEY",
"task": {
"type":"RecaptchaV2TaskProxyless",
"websiteURL":"https://rucaptcha.com/demo/recaptcha-v2",
"websiteKey":"6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u",
"isInvisible":false
},
"softId": "3898",
"callbackUrl": "https://1.2.3.4/webhooks/captcha"
}
RecaptchaV2Task
{
"clientKey":"YOUR_API_KEY",
"task": {
"type":"RecaptchaV2Task",
"websiteURL":"https://rucaptcha.com/demo/recaptcha-v2",
"websiteKey":"6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u",
"isInvisible":false,
"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
"cookies":"foo=bar; baz=1",
"proxyType":"http",
"proxyAddress":"1.2.3.4",
"proxyPort":"8080",
"proxyLogin":"user23",
"proxyPassword":"p4$w0rd"
},
"softId": "3898",
"callbackUrl": "https://1.2.3.4/webhooks/captcha"
}
Пример ответа
Метод: getTaskResult
Эндпоинт API: https://api.rucaptcha.com/getTaskResult
{
"errorId": 0,
"status": "ready",
"solution": {
"gRecaptchaResponse": "03ADUVZw...UWxTAe6ncIa",
"token": "03ADUVZw...UWxTAe6ncIa"
},
"cost": "0.00299",
"ip": "1.2.3.4",
"createTime": 1692863536,
"endTime": 1692863556,
"solveCount": 1
}
Примеры кода
// https://github.com/2captcha/2captcha-php
require(__DIR__ . '/../src/autoloader.php');
$solver = new \TwoCaptcha\TwoCaptcha('YOUR_API_KEY');
try {
$result = $solver->recaptcha([
'sitekey' => '6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u',
'url' => 'https://rucaptcha.com/demo/recaptcha-v2',
]);
} catch (\Exception $e) {
die($e->getMessage());
}
die('Captcha solved: ' . $result->code);
# https://github.com/2captcha/2captcha-python
import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
from twocaptcha import TwoCaptcha
api_key = os.getenv('APIKEY_2CAPTCHA', 'YOUR_API_KEY')
solver = TwoCaptcha(api_key)
try:
result = solver.recaptcha(
sitekey='6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u',
url='https://rucaptcha.com/demo/recaptcha-v2')
except Exception as e:
sys.exit(e)
else:
sys.exit('solved: ' + str(result))
// https://github.com/2captcha/2captcha-csharp
using System;
using System.Linq;
using TwoCaptcha.Captcha;
namespace TwoCaptcha.Examples
{
public class reCAPTCHAV2Example
{
public void Main()
{
TwoCaptcha solver = new TwoCaptcha("YOUR_API_KEY");
ReCaptcha captcha = new ReCaptcha();
captcha.SetSiteKey("6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u");
captcha.SetUrl("https://rucaptcha.com/demo/recaptcha-v2");
try
{
solver.Solve(captcha).Wait();
Console.WriteLine("Captcha solved: " + captcha.Code);
}
catch (AggregateException e)
{
Console.WriteLine("Error occurred: " + e.InnerExceptions.First().Message);
}
}
}
}
// https://github.com/2captcha/2captcha-java
package examples;
import com.twocaptcha.TwoCaptcha;
import com.twocaptcha.captcha.reCAPTCHA;
public class reCAPTCHAV2Example {
public static void main(String[] args) {
TwoCaptcha solver = new TwoCaptcha("YOUR_API_KEY");
ReCaptcha captcha = new ReCaptcha();
captcha.setSiteKey("6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u");
captcha.setUrl("https://rucaptcha.com/demo/recaptcha-v2");
try {
solver.solve(captcha);
System.out.println("Captcha solved: " + captcha.getCode());
} catch (Exception e) {
System.out.println("Error occurred: " + e.getMessage());
}
}
}
// https://github.com/2captcha/2captcha-go
package main
import (
"fmt"
"log"
"github.com/2captcha/2captcha-go"
)
func main() {
client := api2captcha.NewClient("API_KEY")
captcha := api2captcha.ReCaptcha{
SiteKey: "6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u",
Url: "https://rucaptcha.com/demo/recaptcha-v2",
}
code, err := client.Solve(captcha.ToRequest())
if err != nil {
log.Fatal(err);
}
fmt.Println("code "+code)
}
# https://github.com/2captcha/2captcha-ruby
require 'api_2captcha'
client = Api2Captcha.new("YOUR_API_KEY")
result = client.recaptcha_v2({
googlekey: '6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u',
pageurl: 'https://rucaptcha.com/demo/recaptcha-v2'
})