Lutasin ang Turnstile captcha sa pamamagitan ng proxy - TurnstileTask
Ang turnstile captcha ay isa pang pagtatangka upang palitan ang Recaptcha. Awtomatikong sinusuportahan namin ang lahat ng mga subtype nito: manu-mano, hindi interactive at hindi nakikita. Hindi na kailangang tukuyin ang subtype. Ang pagbibigay din ng iyong sariling pasadyang User-Agent ay hindi kinakailangan at hindi talaga gagana.
Kaugnay na tutorial: Bypass Recaptcha V3 gamit ang NodeJS at Puppeteer

Halimbawa ng Captcha
Bagay ng gawain
Katangian | Uri | Kinakailangan | Layunin |
---|---|---|---|
type | String | Oo | TurnstileTask |
websiteURL | String | Oo | Adres ng puntiryang web page. Maaaring mahanap saan man sa web site, kahit sa lugar ng miyembro. Ang aming mga manggagawa ay hindi maaaring pumunta doon, ngunit sa halip isi-simulate ang pagbisita. |
websiteKey | String | Oo | Turnstile sitekey |
action | String | Hindi | Opsyonal na parameter na "action". |
proxyType | String | Oo | Uri ng proxy http - kalimitang http/https na proxy socks4 - socks4 na proxy socks5 - socks5 na proxy |
proxyAddress | String | Oo | IP address ng proxy ipv4/ipv6. Walang mga host name o IP address mula sa mga lokal na network. |
proxyPort | Integer | Oo | Port ng proxy |
proxyLogin | String | Hindi | Login para sa proxy na kinakailangan ang awtorisasyon (basic) |
proxyPassword | String | Hindi | Password ng proxy |
Halimbawa ng kahilingan
CURL
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",
"proxyType":"http",
"proxyAddress":"8.8.8.8",
"proxyPort":8080,
"proxyLogin":"proxyLoginHere",
"proxyPassword":"proxyPasswordHere"
},
"softId": 0
}' https://api.anti-captcha.com/createTask
PHP
<?php
//git clone https://git.anti-captcha.com/sup/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");
//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";
}
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")
# 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
else:
print "task finished with error "+solver.error_code
NodeJS
//npm install @antiadmin/anticaptchaofficial
//https://git.anti-captcha.com/sup/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')
.then(token => {
console.log('token: '+token);
})
.catch(error => console.log('test received error '+error));
C#
//git clone https://git.anti-captcha.com/sup/anticaptcha-csharp.git
using System;
using Anticaptcha_example.Api;
using Anticaptcha_example.Helper;
using Newtonsoft.Json.Linq;
namespace Anticaptcha_example
{
internal class Program
{
private static void Main() {
DebugHelper.VerboseMode = true;
var api = new Turnstile
{
ClientKey = "YOUR_API_KEY_HERE",
WebsiteUrl = new Uri("http://website.com"),
WebsiteKey = "sitekey",
// Optional page action
Action = "optional_page_action",
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
};
if (!api.CreateTask())
DebugHelper.Out("API v2 send failed. " + api.ErrorMessage, DebugHelper.Type.Error);
else if (!api.WaitForResult())
DebugHelper.Out("Could not solve the captcha.", DebugHelper.Type.Error);
else
DebugHelper.Out("Result: " + api.GetTaskSolution().token, DebugHelper.Type.Success);
}
}
}
Java
//git clone https://git.anti-captcha.com/sup/anticaptcha-java.git
package com.anti_captcha;
import com.anti_captcha.Api.Turnstile;
import com.anti_captcha.Helper.DebugHelper;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;
import java.util.concurrent.ThreadLocalRandom;
public class Main {
public static void main(String[] args) throws InterruptedException, MalformedURLException, JSONException {
DebugHelper.setVerboseMode(true);
Turnstile api = new Turnstile();
api.setClientKey("API_KEY_HERE");
api.setWebsiteUrl(new URL("http://website.com"));
api.setWebsiteKey("sitekey_here");
//Optional page action
api.setAction("optional_page_action");
// proxy access parameters
// DO NOT USE PURCHASED/RENTED PROXIES WITH 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(NoCaptcha.ProxyTypeOption.HTTP);
api.setProxyAddress("xx.xxx.xx.xx");
api.setProxyPort(8282);
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);
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("Result: " + api.getTaskSolution().getToken(), DebugHelper.Type.SUCCESS);
}
}
}
Halimbawa ng tugon
JSON na walang mga error
{
"errorId": 0,
"taskId": 7654321
}
JSON na may error
{
"errorId": 1,
"errorCode": "ERROR_KEY_DOES_NOT_EXIST",
"errorDescription": "Account authorization key not found in the system"
}
Kunin ang solusyon
Gamitin ang metodong getTaskResult para hilingin ang solusyon. Bigyan ang manggagawa ng ilang oras, gaya ng 5 segundo, bago gumawa ng unang kahilingan. Kapag ang manggagawa ay abala pa, subukang muli sa loob ng 3 segundo.
Bagay ng solusyon ng gawain
Katangian | Uri | Layunin |
---|---|---|
token | String | Ang string ng token na kinakailangan para sa pakikipag-ugnayan sa form sa pagsumite ng puntiryang website. |
userAgent | String | User-Agent ng browser ng manggagawa. Gamitin ito kapag isinumite mo ang token ng tugon. |
Halimbawa ng tugon
JSON na walang mga error
{
"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"
}