FunCaptchaTask: کپچای Arkose Labs (مشهور به Funcaptcha) را با پروکسی دور میزند
این نوع وظیفه معمای Arkose Labs را در مرورگرهای کارگرانمان حل میکند. اپ شما آدرس وبسایت و کلید عمومی را ارسال میکند و بعد از اتمام کار یک توکن را دریافت میکند. از این توکن برای ارسال فرم با کپچای Arkose Labs استفاده کنید.


مثالها
شیء وظیفه
آموزش مرتبط: با نحوه استفاده از نقاط شکست در Chrome برای یافتن پارامترهای API برای FunCaptcha و Geetest آشنا شوید
خصوصیت | نوع | موردنیاز | هدف |
---|---|---|---|
type | رشته | بله | FunCaptchaTask |
websiteURL | رشته | بله | آدرس صفحه وب هدف. میتواند در هرجایی در وبسایت حتی بخش اعضا قرار گرفته باشد. کارگران ما به آنجا نمیروند بلکه در عوض بازدید را شبیهسازی میکنند. |
websitePublicKey | رشته | بله | کلید عمومی Arkose Labs |
funcaptchaApiJSSubdomain | رشته | خیر | زیردامنه سفارشی Arkose Labs که جاوا اسکریپت ویجت از آن بارگذاری میشود. برای برخی موارد لازم است اما اکثر یکپارچهسازیهای Arkose Labs بدون آن اجرا میشوند. |
data | رشته | خیر | پارامتر اضافی که شاید در اجرای Arkose Labs لازم باشد.
از این خصوصیت برای ارسال مقدار "blob" بهصورت یک شیء تبدیل شده به رشته استفاده کنید. برای آشنائی با نحوه انجام این کار، مثال زیر را ببینید.
{"\blob\":\"HERE_COMES_THE_blob_VALUE\"} |
proxyType | رشته | بله | نوع پروکسی http - پروکسی http/https معمولی socks4 - پروکسی socks4 socks5 - پروکسی socks5 |
proxyAddress | رشته | بله | آدرس IP پروکسی ipv4/ipv6. بدون نام میزبان یا آدرس IP از شبکههای محلی |
proxyPort | عدد صحیح | بله | درگاه(پورت) پروکسی |
proxyLogin | رشته | خیر | یوزرنیم برای پروکسی که نیاز به احراز هویت (پایه) دارد |
proxyPassword | رشته | خیر | پسورد پروکسی |
userAgent | رشته | بله | عامل کاربر مرورگر که در شبیهسازی استفاده میشود. لازم است که از امضای یک مرورگر مدرن استفاده کنید در غیر این صورت گوگل از شما درخواست خواهد کرد تا " مرورگرتان را آپدیت کنید " |
نمونه درخواست
CURL
curl -i -H "Accept: application/json" \
-H "Content-Type: application/json" \
-X POST -d '{
"clientKey":"YOUR_API_KEY_HERE",
"task":
{
"type":"FunCaptchaTask",
"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",
"proxyType":"http",
"proxyAddress":"8.8.8.8",
"proxyPort":8080,
"proxyLogin":"proxyLoginHere",
"proxyPassword":"proxyPasswordHere",
"userAgent":"MODERN_USER_AGENT_HERE"
},
"softId": 0
}' https://api.anti-captcha.com/createTask
PHP
<?php
//git clone git@github.com:AdminAnticaptcha/anticaptcha-php.git
include("anticaptcha.php");
include("funcaptcha.php");
$api = new FunCaptcha();
$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("custom-api.arkoselabs.com");
//optional data[blob] value
//$api->setDataBlob("DATA_BLOB_VALUE_HERE");
//proxy access parameters
$api->setProxyType("http");
$api->setProxyAddress("8.8.8.8");
$api->setProxyPort(8080);
//optional login and password
$api->setProxyLogin("theLogin");
$api->setProxyPassword("thePassword");
//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";
}
Python
#pip3 install anticaptchaofficial
from anticaptchaofficial.funcaptchaproxyon import *
solver = funcaptchaProxyon()
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\"}")
solver.set_proxy_address("PROXY_ADDRESS")
solver.set_proxy_port(1234)
solver.set_proxy_login("proxylogin")
solver.set_proxy_password("proxypassword")
solver.set_user_agent("Mozilla/5.0")
# 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
else:
print "task finished with error "+solver.error_code
NodeJS
//npm install @antiadmin/anticaptchaofficial
//https://github.com/AdminAnticaptcha/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.solveFunCaptchaProxyOn('http://DOMAIN.COM',
'WEBSITE_KEY',
'http', //http, socks4, socks5
'PROXY_ADDRESS',
'PROXY_PORT',
'PROXY_LOGIN',
'PROXY_PASSWORD',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116',
'some=cookies')
.then(token => {
console.log('response: '+token);
})
.catch(error => console.log('test received error '+error));
C#
//git clone git@github.com:AdminAnticaptcha/anticaptcha-csharp
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 FunCaptcha
{
ClientKey = "YOUR_API_KEY_HERE",
WebsiteUrl = new Uri("http://http.myjino.ru/funcaptcha_test/"),
WebsitePublicKey = "DE0B0BB7-1EE4-4D70-1853-31B835D4506B",
UserAgent =
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116",
// proxy access parameters
ProxyType = AnticaptchaBase.ProxyTypeOption.Http,
ProxyAddress = "xx.xx.xx.xx",
ProxyPort = 8282,
ProxyLogin = "123",
ProxyPassword = "456",
// 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 git@github.com:AdminAnticaptcha/anticaptcha-java.git
package com.anti_captcha;
import com.anti_captcha.Api.FunCaptcha;
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);
FunCaptcha api = new FunCaptcha();
api.setClientKey("YOUR_API_KEY_HERE");
api.setWebsiteUrl(new URL("http://mywebsite.com/funcaptcha/"));
api.setWebsitePublicKey("3B24C078-2DF1-771D-913A-11F824CD5A7C");
api.setUserAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116");
//optional parameters, read the docs, be careful!
api.setApiSubdomain("custom-domain-api.arkoselabs.com");
api.setDataBlob("{\"blob\":\"DATA_BLOB_VALUE_HERE\"}");
// proxy access parameters
api.setProxyType(NoCaptcha.ProxyTypeOption.HTTP);
api.setProxyAddress("8.8.8.8");
api.setProxyPort(8080);
api.setProxyLogin("theLogin");
api.setProxyPassword("thePassword");
//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 token: " + api.getTaskSolution().getToken(), DebugHelper.Type.SUCCESS);
}
}
}
نمونه پاسخ
JSON بدون هیچ خطایی
{
"errorId": 0,
"taskId": 7654321
}
JSON با یک خطا
{
"errorId": 1,
"errorCode": "ERROR_KEY_DOES_NOT_EXIST",
"errorDescription": "Account authorization key not found in the system"
}
نمونه پاسخ
JSON بدون هیچ خطایی
{
"errorId": 0,
"taskId": 7654321
}
JSON با یک خطا
{
"errorId": 1,
"errorCode": "ERROR_KEY_DOES_NOT_EXIST",
"errorDescription": "Account authorization key not found in the system"
}
بازیابی راهحل
از متد getTaskResult برای درخواست راهحل استفاده کنید. قبل از اینکه درخواست اول را بفرستید، کمی به کارگر فرصت بدهید، مثلاً 5 ثانیه به او وقت بدهید. اگر کارگر همچنان شلوغ بود، 3 ثانیه بعد مجدداً تلاش کنید.
شیء راهحل وظیفه
خصوصیت | نوع | هدف |
---|---|---|
token | رشته | رشته توکن که برای تعامل با فرم ارسال در وبسایت هدف لازم است. |
نمونه پاسخ
JSON بدون هیچ خطایی
{
"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"
},
"cost":"0.001500",
"ip":"46.98.54.221",
"createTime":1472205564,
"endTime":1472205570,
"solveCount":"0"
}