Логотип «GitHub»

Arkose Labs CAPTCHA

Arkose Labs FunCaptcha

Основанный на токенах метод автоматического решения капчи ArkoseLabs (ранее FunCaptcha).

Типы задач

  • FunCaptchaTaskProxyless - мы используем собственный пул прокси-серверов для решения капч
  • FunCaptchaTask - мы используем переданный вами прокси

Спецификация для типа задачи FunCaptchaTaskProxyless

Свойство Тип Обязателен Описание
type Строка Да Тип задачи:
FunCaptchaTaskProxyless
FunCaptchaTask
websiteURL Строка Да Полный URL-адрес целевой веб-страницы, на которую загружается капча. Мы не открываем страницу, это не проблема, если страница доступна только для авторизованных пользователей
websitePublicKey Строка Да Публичный ключ ArkoseLabs CAPTCHA. Публичный ключ можно найти в значении параметра data-pkey у div с FunCaptcha или же найти элемент с именем (name) fc-token, а из его значения вырезать ключ, который указан после pk.
funcaptchaApiJSSubdomain Строка Нет Пользовательский поддомен, используемый для загрузки виджета captcha, например: sample-api.arkoselabs.com
data Строка Нет Дополнительный объект полезной нагрузки данных преобразован в строку с помощью JSON.stringify. Пример: {\"blob\":\"BLOB_DATA_VALUE\"}
userAgent Строка Нет User-Agent браузера, который будет использован пользователем при загрузке капчи. Важно использовать значения User-Agent только современных браузеров.

Спецификация для типа задачи FunCaptchaTask

Задача FunCaptchaTask расширяет FunCaptchaTaskProxyless, добавляя набор параметров, связанных с прокси, перечисленных ниже.

Свойство Тип Обязателен Описание
proxyType Строка Да Тип прокси:
http
socks4
socks5
proxyAddress Строка Да IP-адрес прокси-сервера или имя хоста
proxyPort Целое число Да Порт прокси-сервера
proxyLogin Строка Нет Логин используемый для аунтефикации на прокси-сервере
proxyPassword Строка Нет Пароль используемый для аунтефикации на прокси-сервере

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

Метод: createTask
Эндпоинт API: https://api.2captcha.com/createTask

FunCaptchaTaskProxyless

{
    "clientKey":"YOUR_API_KEY",
    "task": {
        "type":"FunCaptchaTaskProxyless",
        "websiteURL":"https://www.example.com",
        "websitePublicKey":"6220FF23-9856-3A6F-9FF1-A14F88123F55",
        "funcaptchaApiJSSubdomain":"client-api.arkoselabs.com",
        "userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
    },
    "softId": "3898",
    "callbackUrl": "https://1.2.3.4/webhooks/captcha"
}

FunCaptchaTask

{
    "clientKey":"YOUR_API_KEY",
    "task": {
        "type":"FunCaptchaTaskProxyless",
        "websiteURL":"https://www.example.com",
        "websitePublicKey":"6220FF23-9856-3A6F-9FF1-A14F88123F55",
        "funcaptchaApiJSSubdomain":"client-api.arkoselabs.com",
        "userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
        "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.2captcha.com/getTaskResult

{
    "errorId": 0,
    "status": "ready",
    "solution": {
        "token": "142000f7f4545ca36.6123911001|r=us-beast-1|meta=3|metabgclr=%23ffffff|metaiconclr=%23757575|guitextcolor=%23000000|pk=6220FF23-9856-3A6F-9FF1-A14F88123F55|dc=1|at=40|ag=101|cdn_url=https%3A%2F%2Fsuncaptcha.com%2Fcdn%2Ffc|lurl=https%3A%2F%2Faudio-us-beast-1.arkoselabs.com|surl=https%3A%2F%2Fsuncaptcha.com|smurl=https%3A%2F%2Fsuncaptcha.com%2Fcdn%2Ffc%2Fassets%2Fstyle-manager"
    },
    "cost": "0.002",
    "ip": "1.2.3.4",
    "createTime": 1692863536,
    "endTime": 1692863556,
    "solveCount": 0
}

Примеры кода

// https://github.com/2captcha/2captcha-php

require(__DIR__ . '/../src/autoloader.php');

$solver = new \TwoCaptcha\TwoCaptcha('YOUR_API_KEY');

try {
    $result = $solver->funcaptcha([
        'sitekey' => '6220FF23-9856-3A6F-9FF1-A14F88123F55',
        'url'     => 'https://www.example.com',
        'surl'      => 'https://client-api.arkoselabs.com',
    ]);
} catch (\Exception $e) {
    die($e->getMessage());
}

die('Captcha solved: ' . $result->code);
# https://github.com/2captcha/2captcha-python

# 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 = 'YOUR_API_KEY'

solver = TwoCaptcha(api_key)

try:
    result = solver.funcaptcha(sitekey='6220FF23-9856-3A6F-9FF1-A14F88123F55',
                              url='https://www.example.com',
                              surl='https://client-api.arkoselabs.com')

except Exception as e:
    sys.exit(e)

else:
    sys.exit('result: ' + str(result))
// https://github.com/2captcha/2captcha-csharp

using System;
using System.Linq;
using TwoCaptcha.Captcha;

namespace TwoCaptcha.Examples
{
    public class FunCaptchaExample
    {
        public void Main()
        {
            TwoCaptcha solver = new TwoCaptcha("YOUR_API_KEY");
            FunCaptcha captcha = new FunCaptcha();
            captcha.SetSiteKey("6220FF23-9856-3A6F-9FF1-A14F88123F55");
            captcha.SetUrl("https://www.example.com");
            captcha.SetSUrl("https://client-api.arkoselabs.com");
            try
            {
                solver.Solve(captcha).Wait();
                Console.WriteLine("Captcha solved: " + captcha.Code);
            }
            catch (AggregateException e)
            {
                Console.WriteLine("Error occurred: " + e.InnerExceptions.First().Message);
            }
        }
    }
}
</div>

<div id="java-code-example" data-component="TabPanel">

```java
// https://github.com/2captcha/2captcha-java

package examples;

import com.twocaptcha.TwoCaptcha;
import com.twocaptcha.captcha.FunCaptcha;

public class FunCaptchaExample {
    public static void main(String[] args) {
        TwoCaptcha solver = new TwoCaptcha("YOUR_API_KEY");
        FunCaptcha captcha = new FunCaptcha();
            captcha.SetSiteKey("6220FF23-9856-3A6F-9FF1-A14F88123F55");
            captcha.SetUrl("https://www.example.com");
            captcha.SetSUrl("https://client-api.arkoselabs.com");
        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.FunCaptcha{
    SiteKey: "6220FF23-9856-3A6F-9FF1-A14F88123F55",
    Url: "https://www.example.com",
    Surl: "https://client-api.arkoselabs.com",
    Data: map[string]string{"anyKey":"anyValue"},   
  }
    code, err := client.Solve(captcha.ToRequest())
    if err != nil {
        log.Fatal(err);
    }
    fmt.Println("code "+code)
}
require 'api_2captcha'

client =  Api2Captcha.new("YOUR_API_KEY")

result = client.funcaptcha({
publickey: "6220FF23-9856-3A6F-9FF1-A14F88123F55",
pageurl: "https://www.example.com",
surl: "https://client-api.arkoselabs.com"
})

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