ডকুমেন্টেশন মেনু

GeeTestTask: প্রক্সি দিয়ে geetest.com থেকে ক্যাপচা সমাধান করুন

এই ধরনের কাজ আমাদের কর্মীদের ব্রাউজারে GeeTest ক্যাপচা সমাধান করে। আপনার অ্যাপ ওয়েবসাইটের ঠিকানা, জিটি কী, চ্যালেঞ্জ কী জমা দেয় এবং টাস্ক সমাপ্তির পর ৩টি টোকেন সমন্বিত একটি সমাধান পায়। ভার্সনের জন্য GeeTest সংস্করণ 4 আউটপুট 5 টি মান নিয়ে গঠিত এবং চ্যালেঞ্জ কী প্রয়োজন নেই।

উদাহরণসমূহ

টাস্ক অবজেক্ট

প্রোপার্টি ধরণ জরুরী উদ্দেশ্য
type স্ট্রিং হ্যাঁ GeeTestTask
websiteURL স্ট্রিং হ্যাঁ একটি টার্গেট ওয়েব পেজের ঠিকানা। ওয়েব সাইটে যে কোনও জায়গায় অবস্থিত হতে পারে, মেম্বার এরিয়াতেও। আমাদের কর্মীরা সেখানে চলাচল করে না, পরিবর্তে ভিজিটটি অনুকরণ করে।
gt স্ট্রিং হ্যাঁ ডোমেন পাব্লিক কী, খুব কমই আপডেট হয়।
challenge স্ট্রিং হ্যাঁ টোকন কী পরিবর্তন করা। প্রতিটি ক্যাপচার জন্য একটি নতুন থেকে গ্রহণ করা নিশ্চিত করুন, অন্যথায় আপনাকে ত্রুটি টাস্কের জন্য চার্জ করা হবে।
geetestApiServerSubdomain স্ট্রিং না ঐচ্ছিক API সাবডোমেন। কিছু বাস্তবায়নের জন্য প্রয়োজন হতে পারে।
geetestGetLib স্ট্রিং না কিছু বাস্তবায়নের জন্য প্রয়োজনীয়। একটি স্ট্রিং এ এনকোড করে JSON প্রেরণ করুন। ব্রাউজার ডেভেলপার টুলে মানটি সনাক্ত করা যায়। "initGeetest" ফাংশনের কল করার আগে একটি ব্রেকপয়েন্ট দিন।
version পূর্ণসংখ্যা না সংস্করণ সংখ্যা. ডিফল্ট সংস্করণ 3। সমর্থিত সংস্করণ: 3 এবং 4।
initParameters অবজেক্ট না সংস্করণ 4 এর জন্য অতিরিক্ত প্রারম্ভিক পরামিতি
proxyType স্ট্রিং হ্যাঁ প্রক্সি টাইপ
http - সাধারন http/https প্রক্সি
socks4 - socks4 প্রক্সি
socks5 - socks5 প্রক্সি
proxyAddress স্ট্রিং হ্যাঁ প্রক্সি IP ঠিকানা ipv4/ipv6। স্থানীয় নেটওয়ার্কগুলি থেকে কোনও হোস্টের নাম বা IP ঠিকানা নেই।
proxyPort পূর্ণসংখ্যা হ্যাঁ প্রক্সি পর্ট
proxyLogin স্ট্রিং না প্রক্সির জন্য লগইন করুন যার অনুমোদন প্রয়োজন (বেসিক)
proxyPassword স্ট্রিং না প্রক্সি পাসওয়ার্ড
userAgent স্ট্রিং হ্যাঁ অনুকরণে ব্যবহৃত ব্রাউজারের ব্যবহারকারী-এজেন্ট। আপনাকে একটি আধুনিক ব্রাউজারের স্বাক্ষর ব্যবহার করতে হবে, অন্যথায় গুগল আপনাকে "আপনার ব্রাউজার আপডেট করতে" বলবে।

উদাহরণের অনুরোধ (V3)

CURL
          curl -i -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -X POST -d '{
    "clientKey":"YOUR_API_KEY_HERE",
    "task":
        {
            "type":"GeeTestTask",
            "websiteURL":"http://mywebsite.com/geetest/test.php",
            "gt":"874703612e5cac182812a00e273aad0d",
            "challenge":"a559b82bca2c500101a1c8a4f4204742",
            "proxyType":"http",
            "proxyAddress":"8.8.8.8",
            "proxyPort":8080,
            "proxyLogin":"proxyLoginHere",
            "proxyPassword":"proxyPasswordHere",
            "userAgent":"MODERN_USER_AGENT_HERE"
        }
}' https://api.anti-captcha.com/createTask
        
PHP
          <?php

//git clone git@github.com:AdminAnticaptcha/anticaptcha-php.git

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

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

//grabbing challenge key ... ";
$data = json_decode(file_get_contents("https://www.geetest.com/demo/gt/register-enIcon-official?t=1547634498036"), true);

echo "grabbed data:\n";
print_r($data);

if (!isset($data["gt"]) && !isset($data["challange"])) {
    echo "something went wrong, probably example was changed or network is inaccessible\n";
    exit;
}

$challenge  =   $data["challenge"];
$gt         =   $data["gt"];

echo "setting gt=$gt, challenge=$challenge\n";
$api->setWebsiteURL("https://www.geetest.com/en/");
$api->setGTKey($gt);
$api->setChallenge($challenge);

//optional API subdomain, make sure you understand what to set here
$api->setAPISubdomain("optional.subdomain.api.geetest.com");

//read the docs about this optional parameter
$api->setGeetestLib("{\"customlibs\":\"url-to-lib.js\"}");

//proxy access parameters
$api->setProxyType("http");
$api->setProxyAddress("8.8.8.8");
$api->setProxyPort(1234);
//optional login and password
$api->setProxyLogin("login");
$api->setProxyPassword("password");

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


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

    echo "your geetest tokens:\n";
    print_r($api->getTaskSolution());

}
        
Python
          #pip3 install anticaptchaofficial

from anticaptchaofficial.geetestproxyon import *

solver = geetestProxyon()
solver.set_verbose(1)
solver.set_key("YOUR_API_KEY_HERE")
solver.set_website_url("https://address.com")
solver.set_gt_key("CONSTANT_GT_KEY")
solver.set_challenge_key("VARIABLE_CHALLENGE_KEY")

# optional API subdomain, make sure you understand what to set here
# solver.set_js_api_domain("custom-domain.geetest.com")

# getLib payload, see documentation for explanation of this
# solver.set_geetest_lib("{\"customlibs\":\"url-to-lib.js\"}")

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

token = solver.solve_and_return_solution()
if token != 0:
    print "result tokens: "
    print token
else:
    print "task finished with error "+solver.error_code
        
NodeJS
          //npm -i @antiadmin/anticaptchaofficial
//https://github.com/AdminAnticaptcha/anticaptcha-npm

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

ac.setAPIKey('YOUR_API_KEY_HERE');
ac.solveGeeTestProxyOn('http://DOMAIN.COM',
    'GT',
    'CHALLENGE',
    'API_SUBDOMAIN',
    'GET_LIB',
    '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(result => {
        console.log('result: ');
        console.log(result);
    })
    .catch(error => console.log('test received error '+error));
      
Java
          //git clone git@github.com:AdminAnticaptcha/anticaptcha-java.git

package com.anti_captcha;

import com.anti_captcha.Api.GeeTestProxyless;
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);

        GeeTest api = new GeeTest();
        api.setClientKey("YOUR_API_KEY_HERE");
        api.setWebsiteUrl(new URL("http://biletmaster.com/"));
        api.setWebsiteKey("be33de396f8d04030f6eca8fbd225071");
        api.setWebsiteChallenge("grabbed_one_time_challenge_32bytes");

        //optional API subdomain, make sure you understand what to set here
        //api.setGeetestApiServerSubdomain("optional.subdomain.api.geetest.com");

        //read the docs about this optional parameter
        //api.setGeetestLib("{\"customlibs\":\"url-to-lib.js\"}");

        // proxy access parameters
        // DO NOT USE PURCHASED/RENTED PROXIES WITH PROXY SERVICES!!!
        api.setProxyType(RecaptchaV2.ProxyTypeOption.HTTP);
        api.setProxyAddress("xx.xxx.xx.xx");
        api.setProxyPort(8282);
        api.setProxyLogin("login");
        api.setProxyPassword("password");

        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 CHALLENGE: " + api.getTaskSolution().getChallenge(), DebugHelper.Type.SUCCESS);
            DebugHelper.out("Result SECCODE: " + api.getTaskSolution().getSeccode(), DebugHelper.Type.SUCCESS);
            DebugHelper.out("Result VALIDATE: " + api.getTaskSolution().getValidate(), DebugHelper.Type.SUCCESS);
        }
    }

}

        

উদাহরণের অনুরোধ (V4)

CURL
          curl -i -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -X POST -d '{
    "clientKey":"YOUR_API_KEY_HERE",
    "task":
        {
            "type":"GeeTestTask",
            "websiteURL":"http://mywebsite.com/geetest/test.php",
            "gt":"874703612e5cac182812a00e273aad0d",
            "version":4,
            "initParameters": {
              "riskType": "slide"
            }
            "proxyType":"http",
            "proxyAddress":"8.8.8.8",
            "proxyPort":8080,
            "proxyLogin":"proxyLoginHere",
            "proxyPassword":"proxyPasswordHere",
            "userAgent":"MODERN_USER_AGENT_HERE"
        }
}' https://api.anti-captcha.com/createTask
        
PHP
          <?php

//git clone git@github.com:AdminAnticaptcha/anticaptcha-php.git

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

$api = new GeeTest();
$api->setVerboseMode(true);
$api->setWebsiteURL("https://www.geetest.com/en/adaptive-captcha-demo");
$api->setGTKey("fcd636b4514bf7ac4143922550b3008b");
$api->setVersion(4);
$api->setInitParameters([
    "riskType": "slide"
]);

//optional API subdomain, make sure you understand what to set here
$api->setAPISubdomain("optional.subdomain.api.geetest.com");

//proxy access parameters
$api->setProxyType("http");
$api->setProxyAddress("8.8.8.8");
$api->setProxyPort(1234);
//optional login and password
$api->setProxyLogin("login");
$api->setProxyPassword("password");

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


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

    echo "your geetest tokens:\n";
    print_r($api->getTaskSolution());

}
        
Python
          #pip3 install anticaptchaofficial

from anticaptchaofficial.geetestproxyon import *

solver = geetestProxyon()
solver.set_verbose(1)
solver.set_key("YOUR_API_KEY_HERE")
solver.set_website_url("https://address.com")
solver.set_gt_key("captchaId value")
solver.set_version(4)

# optional API subdomain, make sure you understand what to set here
# solver.set_js_api_domain("custom-domain.geetest.com")

# optional initialization parameters
# solver.set_init_parameters({"riskType": "slide"})

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

token = solver.solve_and_return_solution()
if token != 0:
    print "result tokens: "
    print token
else:
    print "task finished with error "+solver.error_code
        
NodeJS
          //npm -i @antiadmin/anticaptchaofficial
//https://github.com/AdminAnticaptcha/anticaptcha-npm

const ac = require("@antiadmin/anticaptchaofficial");
ac.setAPIKey('YOUR_API_KEY_HERE');
ac.solveGeeTestV4ProxyOn('http://DOMAIN.COM',
    'captchaId',
    'API_SUBDOMAIN',
    {
        "riskType": "slide"
    },
    '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(result => {
        console.log('result: ');
        console.log(result);
    })
    .catch(error => console.log('test received error '+error));
      
Java
          //git clone git@github.com:AdminAnticaptcha/anticaptcha-java.git

package com.anti_captcha;

import com.anti_captcha.Api.GeeTestProxyless;
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);

        GeeTest api = new GeeTestV4();
        api.setClientKey("YOUR_API_KEY_HERE");
        api.setWebsiteUrl(new URL("https://auth.geetest.com/"));
        api.setWebsiteKey("b6e21f90a91a3c2d4a31fe84e10d0442");

        //optional API subdomain, make sure you understand what to set here
        //api.setGeetestApiServerSubdomain("optional.subdomain.api.geetest.com");

        // optional initialization parameters
        JSONObject additionalInitParameters = new JSONObject();
        try {
            additionalInitParameters.put("riskType", "ai");
        } catch (Exception e) {
            DebugHelper.out("JSON error: "+e.getMessage(), DebugHelper.Type.ERROR);
            return;
        }
        api.setInitParameters(additionalInitParameters);

        // proxy access parameters
        // DO NOT USE PURCHASED/RENTED PROXIES WITH PROXY SERVICES!!!
        api.setProxyType(RecaptchaV2.ProxyTypeOption.HTTP);
        api.setProxyAddress("xx.xxx.xx.xx");
        api.setProxyPort(8282);
        api.setProxyLogin("login");
        api.setProxyPassword("password");

        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 captcha_id: " + api.getTaskSolution().getCaptchaId(), DebugHelper.Type.SUCCESS);
            DebugHelper.out("Result lot_number: " + api.getTaskSolution().getLotNumber(), DebugHelper.Type.SUCCESS);
            DebugHelper.out("Result pass_token: " + api.getTaskSolution().getPassToken(), DebugHelper.Type.SUCCESS);
            DebugHelper.out("Result gen_time: " + api.getTaskSolution().getGenTime(), DebugHelper.Type.SUCCESS);
            DebugHelper.out("Result captcha_output: " + api.getTaskSolution().getCaptchaOutput(), 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"
}
        

সমাধানটি পুনরুদ্ধার করুন

সমাধান অনুরোধ করতে getTaskResult পদ্ধতি ব্যাবহার করুন। প্রথম অনুরোধটি করার আগে, একটি কর্মীকে কিছু সময় দিন, ৫ সেকেন্ডের মতো। কর্মীটি এরপরেও ব্যস্ত থাকলে ৩ সেকেন্ড পর পুনরায় চেষ্টা করুন।

টাস্ক সমাধান অবজেক্ট (V3)

প্রোপার্টি ধরণ উদ্দেশ্য
challenge স্ট্রিং টার্গেট ওয়েবসাইটে জমা দেওয়ার ফর্মের সাথে সংযোগ স্থাপনের জন্য প্রয়োজনীয় হ্যাশ স্ট্রিং।
validate স্ট্রিং হ্যাশ স্ট্রিং যা প্রয়োজন।
seccode স্ট্রিং আরেকটি প্রয়োজনীয় হ্যাশ স্ট্রিং, সেগুলির মধ্যে ৩টি কেন রয়েছে তা আমাদের কোনও ধারণা নেই।

টাস্ক সমাধান অবজেক্ট (V4)

প্রোপার্টি ধরণ
captcha_id স্ট্রিং
lot_number স্ট্রিং
pass_token স্ট্রিং
gen_time পূর্ণসংখ্যা
captcha_output স্ট্রিং

প্রতিক্রিয়ার উদাহরণ (v3)

ত্রুটিমুক্ত JSON
          {
    "errorId":0,
    "status":"ready",
    "solution":
    {
        "challenge":"3c1c5153aa48011e92883aed820069f3hj",
        "validate":"47ad5a0a6eb98a95b2bcd9e9eecc8272",
        "seccode":"83fa4f2d23005fc91c3a015a1613f803|jordan"
    },
    "cost":"0.001500",
    "ip":"46.98.54.221",
    "createTime":1472205564,
    "endTime":1472205570,
    "solveCount":"0"
}
        

টোকেন ব্যবহারের উদাহরণ

প্রতিক্রিয়ার উদাহরণ (v4)

ত্রুটিমুক্ত JSON
          {
    "errorId":0,
    "status":"ready",
    "solution":
    {
        "captcha_id": "fcd636b4514bf7ac4143922550b3008b",
        "lot_number": "354ab6dd4e594fdc903074c4d8d37b24",
        "pass_token": "b645946a654e60218c7922b74b3b5ee8e8717e8fd3cd5182a5c98d660bbd1ed5",
        "gen_time": "1649921519",
        "captcha_output": "cFPIALDXSop8Ri2mPABbRWzNBs86N8D4vNUTuVa7wN7E...[cut]...ciM50ePCCzLBZ1bmaV9Yt7IkkFI9Emx4eaP8rRoA=="
    },
    "cost":"0.001500",
    "ip":"46.98.54.221",
    "createTime":1472205564,
    "endTime":1472205570,
    "solveCount":"0"
}