Menu

Решение капчи Turnstile через прокси

Капча Turnstile – это очередная попытка заменить рекапчу. Мы поддерживаем все ее подтипы автоматически: manual, non-interactive и invisible. Нет необходимости указывать подтип. Также не нужно предоставлять кастомный User-Agent браузера, так как это может помешать решить капчу.

Для этого типа задачи требуется прокси. Пожалуйста, используйте его только если задачи без прокси (TurnstileTaskProxyless) не работают, так как это замедляет наших работников. Для решения капч через прокси также требуются высококачественные прокси, которые вы установили себе сами на VPS. Покупные прокси с прокси-сервисов не будут работать.

Turnstile captcha example
Пример капчи
Python
Node.js
Go
PHP
Java
Kotlin
C#
C++
Rust
Ruby
bash

Как решить Cloudflare Turnstile proxy-on на Python

#pip3 install anticaptchaofficial

from anticaptchaofficial.turnstileproxyon import *

solver = turnstileProxyon()
solver.set_verbose(1)
solver.set_key("YOUR_API_KEY_HERE")
solver.set_website_url("https://website.com/")
solver.set_website_key("sitekey_here")
solver.set_proxy_address("PROXY_ADDRESS")
solver.set_proxy_port(1234)
solver.set_proxy_login("proxylogin")
solver.set_proxy_password("proxypassword")

# Optionally specify page action
solver.set_action("login")

# Optionally specify cData and chlPageData tokens for Cloudflare pages
#solver.set_cdata("cdata_token")
#solver.set_chlpagedata("chlpagedata_token")

# 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("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)

Как решить Cloudflare Turnstile proxy-on на Node.js

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

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

ac.setAPIKey('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.setSoftId(0);

ac.solveTurnstileProxyOn('http://DOMAIN.COM',
    'WEBSITE_KEY',
    'http', //http, socks4, socks5
    'PROXY_ADDRESS',
    'PROXY_PORT',
    'PROXY_LOGIN',
    'PROXY_PASSWORD',
    'optional_action',
    'optional_cData_token',
    'optional_chlPageData_token')
    .then(token => {
        console.log('token: '+token);
    })
    .catch(error => console.log('test received error '+error));

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

Как решить Cloudflare Turnstile proxy-on на Go

// Install with:
// go get github.com/anti-captcha/anticaptcha-go
package 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 Turnstile with proxy
    solution, err := ac.SolveTurnstileProxyOn(anticaptcha.Turnstile{
        WebsiteURL: "https://www.website.com/",
        WebsiteKey: "0x4AAAAAAABD2Inoxs-yJ8bz",
        //Action: "optional page action",
        //CData: "cdata token for cloudflare",
        //ChlPageData: "chlPageData token for cloudflare",
        Proxy: &anticaptcha.Proxy{
            Type:      "http",
            IPAddress: "1.2.3.4",
            Port:      1234,
            Login:     "login-optional",
            Password:  "pass-optional",
        },
    })
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println("Turnstile Token:", solution)
    // In case you need the worker's user-agent
    fmt.Println("User-Agent:", ac.WorkersUserAgent)
}

Как решить Cloudflare Turnstile proxy-on на PHP

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

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

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

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

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

//turnstile key from target website
$api->setWebsiteKey("0xAAAAAAAABBBBBBBCCCCCC");

//optional action parameter, search it in page source code
$api->setAction("login_register_or_else");

//optional cData and chlPageData token parameters for Cloudflare
//$api->setCData("token_value");
//$api->setChlPageData("token_value");

// proxy access parameters
// DO NOT USE PURCHASED/RENTED PROXIES ON PROXY SERVICES!!!
// THEY WILL NOT WORK!
// USE ONLY PROXIES YOU INSTALL YOURSELF ON YOUR OWN SERVER OR FAST VPS
// USE PROPER PROXY SOFTWARE LIKE SQUID !
// INSTALLATION INSTRUCTIONS:
// https://anti-captcha.com/apidoc/articles/how-to-install-squid
$api->setProxyType("http");
$api->setProxyAddress("8.8.8.8");
$api->setProxyPort(1234);
//optional login and password
$api->setProxyLogin("login");
$api->setProxyPassword("password");

//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 {

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

}

Как решить Cloudflare Turnstile proxy-on на Java

// 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.AnticaptchaBase;
import com.anti_captcha.Api.Turnstile;
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);

        Turnstile api = new Turnstile();
        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.setWebsiteKey("0xAAAAAAAABBBBBBBCCCCCC");

        // Optional page action
        api.setAction("optional_page_action");

        // Optionally specify cData and chlPageData tokens for Cloudflare pages
        // api.setCData("cdata_token");
        // api.setChlPageData("chlPageData_token");

        // Do not use purchased/rented proxies from proxy services,
        // use proper proxy software like Squid
        api.setProxyType(AnticaptchaBase.ProxyTypeOption.HTTP);
        api.setProxyAddress("xxx.xx.xx.xx");
        api.setProxyPort(1234);
        api.setProxyLogin("login");
        api.setProxyPassword("password");

        // 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);
        }
    }
}

Как решить Cloudflare Turnstile proxy-on на Kotlin

// 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.Proxy
import com.anticaptcha.ProxyType
import com.anticaptcha.Turnstile
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.solveTurnstileProxyOn(
            Turnstile(
                websiteUrl = "http://website.com/",
                websiteKey = "0xAAAAAAAABBBBBBBCCCCCC",

                // Optional page action
                action = "optional_page_action",

                // Optionally specify cData and chlPageData tokens for Cloudflare pages
                // cData = "cdata_token",
                // chlPageData = "chlPageData_token",
            ),
            // Do not use purchased/rented proxies from proxy services,
            // use proper proxy software like Squid
            Proxy(
                address = "xxx.xx.xx.xx",
                port = 1234,
                type = ProxyType.HTTP,
                login = "login",
                password = "password",
            ),
        )

        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}")
    }
}

Как решить Cloudflare Turnstile proxy-on на C#

// 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 Turnstile
        {
            ClientKey = "YOUR_API_KEY_HERE",
            WebsiteUrl = new Uri("http://website.com/"),
            WebsiteKey = "0xAAAAAAAABBBBBBBCCCCCC",
            // Optional page action
            Action = "optional_page_action",
            // Optionally specify cData and chlPageData tokens for Cloudflare pages
            // CData = "cdata_token",
            // ChlPageData = "chlPageData_token",
            // Proxy type is Http by default, set ProxyType for socks4/socks5
            ProxyAddress = "xxx.xx.xx.xx",
            ProxyPort = 1234,
            ProxyLogin = "login",
            ProxyPassword = "password",

            // 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);
    }
}

Как решить Cloudflare Turnstile proxy-on на C++

// 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::Turnstile params;
        params.website_url = "http://website.com/";
        params.website_key = "0xAAAAAAAABBBBBBBCCCCCC";
        // Optional page action
        params.action = "optional_page_action";
        // Optionally specify cData and chlPageData tokens for Cloudflare pages
        // params.c_data = "cdata_token";
        // params.chl_page_data = "chlPageData_token";
        // Do not use purchased/rented proxies from proxy services,
        // use proper proxy software like Squid
        params.proxy.type = "http";  // "http", "socks4" or "socks5"
        params.proxy.address = "xxx.xx.xx.xx";
        params.proxy.port = 1234;
        params.proxy.login = "login";
        params.proxy.password = "password";

        const anticaptcha::Solution solution = ac.solve_turnstile_proxy_on(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;
}

Как решить Cloudflare Turnstile proxy-on на Rust

// 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, Proxy, ProxyType, Turnstile};

#[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_turnstile_proxy_on(&Turnstile {
            website_url: "http://website.com/".into(),
            website_key: "0xAAAAAAAABBBBBBBCCCCCC".into(),
            // Optional page action
            action: "optional_page_action".into(),
            // Optionally specify cData and chlPageData tokens for Cloudflare pages
            // c_data: "cdata_token".into(),
            // chl_page_data: "chlPageData_token".into(),
            // Do not use purchased/rented proxies from proxy services,
            // use proper proxy software like Squid
            proxy: Proxy::new(ProxyType::Http, "xxx.xx.xx.xx", 1234)
                .with_auth("login", "password"),
            ..Default::default()
        })
        .await?;

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

    Ok(())
}

Как решить Cloudflare Turnstile proxy-on на Ruby

# 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_turnstile_proxy_on(
    website_url: "http://website.com/",
    website_key: "0xAAAAAAAABBBBBBBCCCCCC",
    # Optional page action
    action: "optional_page_action",
    # Optionally specify cData and chlPageData tokens for Cloudflare pages
    # c_data: "cdata_token",
    # chl_page_data: "chlPageData_token",
    # Do not use purchased/rented proxies from proxy services,
    # use proper proxy software like Squid
    proxy: { type: "http", address: "xxx.xx.xx.xx", port: 1234,
             login: "login", password: "password" }
  )

  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

Как решить Cloudflare Turnstile proxy-on на bash

curl -i -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -X POST -d '{
    "clientKey":"YOUR_API_KEY_HERE",
    "task":
        {
            "type":"TurnstileTask",
            "websiteURL":"https://website.com/",
            "websiteKey":"0xAAAAAAAABBBBBBBCCCCCC",
            "action":"optional_page_action",,
            "cData":"optional_cData_token_for_cloudflare",
            "chlPageData":"optional_cData_token_for_cloudflare",
            "proxyType":"http",
            "proxyAddress":"8.8.8.8",
            "proxyPort":8080,
            "proxyLogin":"proxyLoginHere",
            "proxyPassword":"proxyPasswordHere"
        },
    "softId": 0
}' https://api.anti-captcha.com/createTask

Объект задачи

Свойство Тип Требуется Назначение
type Строка Да TurnstileTask
websiteURL Строка Да Адрес целевой страницы. Может находиться в любом месте сайта, в том числе в закрытом для подписчиков разделе. Наши работники не посещают сайт, а вместо этого эмулируют посещение страницы.
websiteKey Строка Да ключ Turnstile
action Строка Нет Опциональное значение параметра "action".
cData Строка Нет Опциональный токен "cData" для Cloudflare
Статья по теме: Как обойти Cloudflare
chlPageData Строка Нет Опциональный токен "chlPageData" для Cloudflare
proxyType Строка Да Тип прокси
http – обычные http/https прокси
socks4 – socks4 прокси
socks5 – socks5 прокси
proxyAddress Строка Да Адрес прокси в ipv4/ipv6. Имена хостов или адреса из локальной сети не допускаются.
proxyPort Integer Да Порт прокси
proxyLogin Строка Да Логин, если требуется авторизация прокси (basic)
proxyPassword Строка Да Пароль прокси

Объект решения задачи

Свойство Тип Назначение
token Строка Строка токена, которая требуется для отправки формы на целевом сайте.
userAgent Строка User-Agent браузера работника. Используйте его, когда отправляете форму с токеном.

Пример ответа

{
    "errorId":0,
    "status":"ready",
    "solution":
    {
        "token":"0.vtJqmZnvobaUzK2i2PyKaSqHELYtBZfRoPwMvLMdA81WL_9G0vCO3y2VQVIeVplG0mxYF7uX.......",
        "userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0"
    },
    "cost":"0.001500",
    "ip":"46.98.54.221",
    "createTime":1472205564,
    "endTime":1472205570,
    "solveCount":"0"
}