Menu

破解 Arkose Labs Funcaptcha 谜题

执行这种任务可无代理破解 Arkose Labs 人机验证(或 Funcaptcha)谜题。任务会用我们自己的代理服务器和/或工作人员的 IP 地址执行。

Arkose Labs API 向网站所有者提供破解者 IP 地址相关信息。但是,先试着不通过代理服务器绕过人机验证谜题,如果不起作用则转而通过代理服务器执行 FuncaptchaTask,这值得一试。

FunCaptcha Arkoselabs example
FunCaptcha Arkoselabs example
FunCaptcha Arkoselabs example with seatings
FunCaptcha Arkoselabs example with finger
示例
Python
Node.js
Go
PHP
Java
Kotlin
C#
C++
Rust
Ruby
bash

如何用 Python 解决 FunCaptcha

#pip3 install anticaptchaofficial

from anticaptchaofficial.funcaptchaproxyless import *

solver = funcaptchaProxyless()
solver.set_verbose(1)
solver.set_key("YOUR_API_KEY_HERE")
solver.set_website_url("https://website.com")
solver.set_website_key("XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX")

# optional funcaptcha API subdomain, see our Funcaptcha documentation for details
# solver.set_js_api_domain("custom-api-subdomain.arkoselabs.com")

# optional data[blob] value, read the docs
# solver.set_data_blob("{\"blob\":\"DATA_BLOB_VALUE_HERE\"}")

# Specify softId to earn 10% commission with your app.
# Get your softId here: https://anti-captcha.com/clients/tools/devcenter
solver.set_soft_id(0)

token = solver.solve_and_return_solution()
if token != 0:
    print("result token: "+token)
    # user-agent in case you need it:
    print("user-agent: "+solver.get_user_agent())
else:
    print("task finished with error "+solver.error_code)

如何用 Node.js 解决 FunCaptcha

//npm install @antiadmin/anticaptchaofficial
//https://github.com/anti-captcha/anticaptcha-npm

const ac = require("@antiadmin/anticaptchaofficial");

ac.setAPIKey('YOUR_API_KEY_HERE');

//optional, but often required:
ac.settings.funcaptchaApiJSSubdomain = 'custom-api.arkoselabs.com';
ac.settings.funcaptchaDataBlob = 'DATA[BLOB]_HERE';

//Specify softId to earn 10% commission with your app.
//Get your softId here: https://anti-captcha.com/clients/tools/devcenter
ac.setSoftId(0);

//solve and receive token
ac.solveFunCaptchaProxyless('http://DOMAIN.COM', 'WEBSITE_KEY')
    .then(token => {
        console.log('result: '+token);
    })
    .catch(error => console.log('test received error '+error));

// in case you need it
console.log("worker's user-agent:");
console.log(ac.getUserAgent());

如何用 Go 解决 FunCaptcha

// Install with:
// go get github.com/anti-captcha/anticaptcha-gopackage main

import (
    "fmt"
    "github.com/anti-captcha/anticaptcha-go"
    "log"
)

func main() {
    // Create API client and set the API Key
    ac := anticaptcha.NewClient("API_KEY_HERE")

    // set to 'false' to turn off debug output
    ac.IsVerbose = true

    // Specify softId to earn 10% commission with your app.
    // Get your softId here: https://anti-captcha.com/clients/tools/devcenter
    //ac.SoftId = 1187

    // Make sure the API key funds balance is positive
    balance, err := ac.GetBalance()
    if err != nil {
        log.Fatal(err)
        // Exit program to make sure you don't DDoS API with requests, while having empty balance
        return
    }
    fmt.Println("Balance:", balance)

    // Solve FunCaptcha
    solution, err := ac.SolveFunCaptcha(anticaptcha.FunCaptcha{
        WebsiteURL:       "https://www.website.com/",
        WebsitePublicKey: "00000000-1111-2222-3333-444444444444",
        //make sure to find and set this correctly, look for URL like https://somewebsite-api.arkoselabs.com/v2/00000000-1111-2222-3333-444444444444/api.js
        ApiSubdomain:     "somewebsite-api.arkoselabs.com",
    })
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println("Funcaptcha Token:", solution)
    // In case you need the worker's user-agent
    fmt.Println("User-Agent:", ac.WorkersUserAgent)
}

如何用 PHP 解决 FunCaptcha

//git clone https://github.com/anti-captcha/anticaptcha-php.git

include("anticaptcha.php");
include("funcaptchaproxyless.php");

$api = new FunCaptchaProxyless();
$api->setVerboseMode(true);

//your anti-captcha.com account key
$api->setKey("YOUR_API_KEY_HERE");

//target website address
$api->setWebsiteURL("http://mywebsite.com/funcaptcha/");

//recaptcha key from target website
$api->setWebsitePublicKey("3B24C078-2DF1-771D-913A-11F824CD5A7C");

//optional Arkose Labs API subdomain, see our documentation for details
//$api->setJSSubdomain("optional.subdomain.com");

//optional data[blob] value, read the docs
//$api->setDataBlob("DATA_BLOB_VALUE_HERE");

//Specify softId to earn 10% commission with your app.
//Get your softId here: https://anti-captcha.com/clients/tools/devcenter
$api->setSoftId(0);

//create task in API
if (!$api->createTask()) {
    $api->debout("API v2 send failed - ".$api->getErrorMessage(), "red");
    return false;
}

$taskId = $api->getTaskId();

//wait in a loop for max 300 seconds till task is solved
if (!$api->waitForResult(300)) {
    echo "could not solve captcha\n";
    echo $api->getErrorMessage()."\n";
} else {

    $gResponse    =   $api->getTaskSolution();
    echo "your arkose labs token: $gResponse\n\n";
    echo "worker's user-agent in case you need it:\n";
    echo $api->getWorkersUserAgent()."\n";

}

如何用 Java 解决 FunCaptcha

// GitHub: https://github.com/anti-captcha/anticaptcha-java
//
// Maven, add to pom.xml:
//   <dependency>
//     <groupId>com.anti-captcha</groupId>
//     <artifactId>anticaptcha</artifactId>
//     <version>1.0.0</version>
//   </dependency>
//
// Gradle, add to build.gradle:
//   implementation "com.anti-captcha:anticaptcha:1.0.0"

import com.anti_captcha.Api.FunCaptchaProxyless;
import com.anti_captcha.Helper.DebugHelper;

public class Main {

    public static void main(String[] args) throws InterruptedException {
        // Set to false to turn the debug output off
        DebugHelper.setVerboseMode(true);

        FunCaptchaProxyless api = new FunCaptchaProxyless();
        api.setClientKey("YOUR_API_KEY_HERE");

        // Specify softId to earn 10% commission with your app.
        // Get your softId here: https://anti-captcha.com/clients/tools/devcenter
        api.setSoftId(0);

        api.setWebsiteUrl("http://website.com/");
        api.setWebsitePublicKey("DE0B0BB7-1EE4-4D70-1853-31B835D4506B");

        // Look for a URL like https://something.arkoselabs.com/v2/PUBLIC_KEY/api.js
        api.setApiSubdomain("something.arkoselabs.com");
        api.setDataBlob("{\"blob\":\"HERE_COMES_THE_blob_VALUE\"}");

        // Make sure the API key funds balance is positive
        Double balance = api.getBalance();
        if (balance == null || balance <= 0) {
            // Stop here to make sure you don't DDoS the API while having empty balance
            DebugHelper.out("Balance error: " + api.getErrorMessage(), DebugHelper.Type.ERROR);
            return;
        }
        DebugHelper.out("Balance: " + balance, DebugHelper.Type.SUCCESS);

        if (!api.createTask()) {
            DebugHelper.out("API v2 send failed. " + api.getErrorMessage(), DebugHelper.Type.ERROR);
        } else if (!api.waitForResult()) {
            DebugHelper.out("Could not solve the captcha.", DebugHelper.Type.ERROR);
        } else {
            DebugHelper.out("Captcha token: " + api.getTaskSolution().getToken(), DebugHelper.Type.SUCCESS);
        }
    }
}

如何用 Kotlin 解决 FunCaptcha

// GitHub: https://github.com/anti-captcha/anticaptcha-kotlin
//
// Gradle, add to build.gradle.kts:
//   implementation("com.anti-captcha:anticaptcha-kotlin:1.0.0")

import com.anticaptcha.AnticaptchaClient
import com.anticaptcha.AnticaptchaException
import com.anticaptcha.ApiException
import com.anticaptcha.FunCaptcha
import kotlinx.coroutines.runBlocking

fun main(): Unit = runBlocking {
    // Create the API client and set the API key
    val ac = AnticaptchaClient(
        apiKey = "YOUR_API_KEY_HERE",
        // Specify softId to earn 10% commission with your app.
        // Get your softId here: https://anti-captcha.com/clients/tools/devcenter
        softId = 0,
        // Set to false to turn the debug output off
        verbose = true,
    )

    try {
        // Make sure the API key funds balance is positive
        val balance = ac.getBalance()
        if (balance <= 0) {
            // Stop here to make sure you don't DDoS the API while having empty balance
            System.err.println("Empty balance")
            return@runBlocking
        }
        println("Balance: $balance")

        val solution = ac.solveFunCaptcha(
            FunCaptcha(
                websiteUrl = "http://website.com/",
                websitePublicKey = "DE0B0BB7-1EE4-4D70-1853-31B835D4506B",

                // Look for a URL like https://something.arkoselabs.com/v2/PUBLIC_KEY/api.js
                apiSubdomain = "something.arkoselabs.com",
                dataBlob = """{"blob":"HERE_COMES_THE_blob_VALUE"}""",
            ),
        )

        println("Captcha token: ${solution.token}")
    } catch (error: ApiException) {
        // https://anti-captcha.com/apidoc/errors
        System.err.println("API error: ${error.errorCode} ${error.description}")
    } catch (error: AnticaptchaException) {
        System.err.println("Failed: ${error.message}")
    }
}

如何用 C# 解决 FunCaptcha

// GitHub: https://github.com/anti-captcha/anticaptcha-csharp.git
// install:  dotnet add package AntiCaptchaOfficial
// or, in the Package Manager Console:
// Install-Package AntiCaptchaOfficial

using System;
using AntiCaptcha.Api;
using AntiCaptcha.Helper;


class Program
{
    static void Main()
    {
        // Set to 'false' to turn off debug output
        DebugHelper.VerboseMode = true;

        var api = new FunCaptchaProxyless
        {
            ClientKey = "YOUR_API_KEY_HERE",
            WebsiteUrl = new Uri("http://website.com/"),
            WebsitePublicKey = "DE0B0BB7-1EE4-4D70-1853-31B835D4506B",
            // Look for a URL like https://something.arkoselabs.com/v2/PUBLIC_KEY/api.js
            ApiJSSubdomain = "something.arkoselabs.com",
            DataBlob = "{\"blob\":\"HERE_COMES_THE_blob_VALUE\"}",
            // Specify softId to earn 10% commission with your app.
            // Get your softId here:
            // https://anti-captcha.com/clients/tools/devcenter
            SoftId = 0
        };

        // Make sure the API key funds balance is positive
        var balance = api.GetBalance();
        if (balance == null || balance <= 0)
        {
            // Exit the program to make sure you don't DDoS the API with requests while having empty balance
            Console.WriteLine("Balance error: " + api.ErrorMessage);
            return;
        }
        Console.WriteLine("Balance: " + balance);

        var solution = api.Solve();
        Console.WriteLine("Captcha token: " + solution?.Token);
    }
}

如何用 C++ 解决 FunCaptcha

// GitHub: https://github.com/anti-captcha/anticaptcha-cplus.git
// Add it to your CMake project:
//   include(FetchContent)
//   FetchContent_Declare(anticaptcha
//           GIT_REPOSITORY https://github.com/anti-captcha/anticaptcha-cplus.git
//           GIT_TAG v1.0.0)
//   FetchContent_MakeAvailable(anticaptcha)
//   target_link_libraries(your_app PRIVATE anticaptcha::anticaptcha)

#include <iostream>
#include <anticaptcha/anticaptcha.hpp>

int main() {
    // Create the API client and set the API key
    anticaptcha::Client ac("YOUR_API_KEY_HERE");

    // Debug output is on by default, turn it off with:
    // ac.shut_up();

    // Specify softId to earn 10% commission with your app.
    // Get your softId here: https://anti-captcha.com/clients/tools/devcenter
    ac.set_soft_id(0);

    try {
        // Make sure the API key funds balance is positive
        const double balance = ac.get_balance();
        if (balance <= 0) {
            // Stop here to make sure you don't DDoS the API while having empty balance
            std::cerr << "Empty balance" << std::endl;
            return 1;
        }
        std::cout << "Balance: " << balance << std::endl;

        anticaptcha::FunCaptcha params;
        params.website_url = "http://website.com/";
        params.website_public_key = "DE0B0BB7-1EE4-4D70-1853-31B835D4506B";
        // Look for a URL like https://something.arkoselabs.com/v2/PUBLIC_KEY/api.js
        params.api_subdomain = "something.arkoselabs.com";
        params.data_blob = R"({"blob":"HERE_COMES_THE_blob_VALUE"})";

        const anticaptcha::Solution solution = ac.solve_funcaptcha(params);
        std::cout << "Captcha token: " << solution.token() << std::endl;
    } catch (const anticaptcha::ApiError& error) {
        // https://anti-captcha.com/apidoc/errors
        std::cerr << "API error: " << error.error_code() << " " << error.description() << std::endl;
        return 1;
    } catch (const anticaptcha::Error& error) {
        std::cerr << "Failed: " << error.what() << std::endl;
        return 1;
    }

    return 0;
}

如何用 Rust 解决 FunCaptcha

// GitHub: https://github.com/anti-captcha/anticaptcha-rust
// Install with:
//   cargo add anticaptchaofficial
// or add it to Cargo.toml:
//   [dependencies]
//   anticaptchaofficial = "1"

use anticaptcha::{Client, FunCaptcha};

#[tokio::main]
async fn main() -> anticaptcha::Result<()> {
    // Create the API client and set the API key
    let ac = Client::new("YOUR_API_KEY_HERE")
        // Specify softId to earn 10% commission with your app.
        // Get your softId here: https://anti-captcha.com/clients/tools/devcenter
        .with_soft_id(0);
    // .quiet() turns the debug output off

    // Make sure the API key funds balance is positive
    let balance = ac.get_balance().await?;
    if balance <= 0.0 {
        // Stop here to make sure you don't DDoS the API while having empty balance
        eprintln!("Empty balance");
        return Ok(());
    }
    println!("Balance: {balance}");

    let solution = ac
        .solve_funcaptcha(&FunCaptcha {
            website_url: "http://website.com/".into(),
            website_public_key: "DE0B0BB7-1EE4-4D70-1853-31B835D4506B".into(),
            // Look for a URL like https://something.arkoselabs.com/v2/PUBLIC_KEY/api.js
            api_subdomain: "something.arkoselabs.com".into(),
            data_blob: r#"{"blob":"HERE_COMES_THE_blob_VALUE"}"#.into(),
            ..Default::default()
        })
        .await?;

    println!("Captcha token: {}", solution.token());

    Ok(())
}

如何用 Ruby 解决 FunCaptcha

# GitHub: https://github.com/anti-captcha/anticaptcha-ruby
# Install with:
#   gem install anticaptchaofficial
# or add it to your Gemfile:
#   gem "anticaptchaofficial"

require "anticaptcha"

# Create the API client and set the API key
ac = Anticaptcha.new("YOUR_API_KEY_HERE")

# Specify softId to earn 10% commission with your app.
# Get your softId here: https://anti-captcha.com/clients/tools/devcenter
ac.soft_id = 0

# Set to false to turn the debug output off
ac.verbose = true

begin
  # Make sure the API key funds balance is positive
  balance = ac.balance
  # Stop here to make sure you don't DDoS the API while having empty balance
  abort "Empty balance" if balance <= 0
  puts "Balance: #{balance}"

  solution = ac.solve_funcaptcha(
    website_url: "http://website.com/",
    website_public_key: "DE0B0BB7-1EE4-4D70-1853-31B835D4506B",
    # Look for a URL like https://something.arkoselabs.com/v2/PUBLIC_KEY/api.js
    api_subdomain: "something.arkoselabs.com",
    data_blob: '{"blob":"HERE_COMES_THE_blob_VALUE"}'
  )

  puts "Captcha token: #{solution.token}"
rescue Anticaptcha::ApiError => e
  # https://anti-captcha.com/apidoc/errors
  warn "API error: #{e.error_code} #{e.description}"
rescue Anticaptcha::Error => e
  warn "Failed: #{e.message}"
end

如何用 bash 解决 FunCaptcha

curl -i -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -X POST -d '{
    "clientKey":"YOUR_API_KEY_HERE",
    "task":
        {
            "type":"FunCaptchaTaskProxyless",
            "websiteURL":"http://mywebsite.com/recaptcha/test.php",
            "funcaptchaApiJSSubdomain":"optional-api-subdomain-here.arkoselabs.com",
            "data": "{\"blob\":\"dyXvXANMbHj1iDyz.Qj97JtSqR2n%2BuoY1V%2FbdgbrG7p%2FmKiqdU9AwJ6MifEt0np4vfYn6TTJDJEfZDlcz9Q1XMn9przeOV%2FCr2%2FIpi%2FC1s%3D\"}",
            "websitePublicKey":"DE0B0BB7-1EE4-4D70-1853-31B835D4506B"
        },
    "softId": 0
}' https://api.anti-captcha.com/createTask

任务对象

属性 类型 必须使用 用途
type 字符串 FunCaptchaTaskProxyless
websiteURL 字符串 目标网页的地址。可位于网站中的任何位置,甚至可位于会员区中。我们的工作人员不会转到该位置,而是会模拟其访问操作。
websitePublicKey 字符串 Arkose Labs 公钥
funcaptchaApiJSSubdomain 字符串 从中加载 JavaScript 小组件的自定义 Arkose Labs 子域。某些情况下必须有此子域,但大多数 Arkose Labs 整合都在没有此子域的情况下进行。
data 字符串 实现 Arkose Labs 谜题破解所需的附加参数。 可用此属性将“Blob”值作为已转换为字符串的对象发送。例如,这种值看起来可能是这样的。
{"\blob\":\"HERE_COMES_THE_blob_VALUE\"}

任务处理结果对象

属性 类型 用途
token 字符串 与目标网站中的提交窗体互动所需的标记字符串。
userAgent 字符串 工作人员浏览器的用户代理值。可在提交响应标记时使用。

响应示例

{
    "errorId":0,
    "status":"ready",
    "solution":
    {
        "token":"14160cdbe84b28cd5.8020398501|r=us-east-1|metabgclr=%23ffffff|maintxtclr=%231B1B1B|mainbgclr=%23ffffff|guitextcolor=%23747474|metaiconclr=%23757575|meta=7|pk=B7D8911C-5CC8-A9A3-35B0-554ACEE604DA|at=40|ag=101|cdn_url=https%3A%2F%2Ffuncaptcha.com%2Fcdn%2Ffc|lurl=https%3A%2F%2Faudio-us-east-1.arkoselabs.com|surl=https%3A%2F%2Ffuncaptcha.com",
        "userAgent":"Mozilla\5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/145.0.0.0 Safari\/537.36"
    },
    "cost":"0.001500",
    "ip":"46.98.54.221",
    "createTime":1472205564,
    "endTime":1472205570,
    "solveCount":"0"
}