الصفحة الرئيسية الوثائق قسم الشروحات تسجيل الدخول
أنواع المهام المدعومة
أوامر API
مقالات
قسم الشروحات
GitHub
قائمة الوثائق

تجاوز شاشة مكافحة الروبوت

هذا النوع من المهام حيث ينتقل عاملنا إلى صفحة ويب من اختيارك ، ويتجاوز أي شاشة مضادة للروبوتات ، ويلتقط ملفات تعريف الارتباط ويعيدها إلى تطبيقك. يمكنك بعد ذلك استخدام ملفات تعريف الارتباط هذه للتنقل بحرية في هذا الموقع باستخدام لغة البرمجة المفضلة لديك. لتجاوز هذا النوع من صفحات التقاط الروبوت بنجاح ، ستحتاج أيضًا إلى قيمة User-Agent لمتصفح العامل لدينا وتزويدنا بوكيل بجودة جيدة. لن تعمل هذه الطريقة بدون وكلاء ، لأن جميع حلول مكافحة الروبوت تطابق ملفات تعريف الارتباط الخاصة بهم مع عنوان IP للزائر ووكيل المستخدم الخاص بهم.

مثال على شاشة مكافحة الروبوت

ما نحصل عليه في الصفحة الأخيرة:

  • بسكويت
  • بصمة المتصفح
  • رؤوس طلب HTTP الأخير تم إجراؤه من إطار النافذة الرئيسية

هذه التقنية مبنية على قوالب AntiGate ، باستثناء أننا ندير النماذج بأنفسنا ونعمل على تحديثها باستمرار. سيتطلب استخدام هذا النوع من المهام الاشتراك ، بتكلفة 5 أرصدة لكل مهمة. تبدأ أسعار الاشتراك من 9.90 دولارًا أمريكيًا في الشهر مع تضمين 5000 تجاوز. إذا كنت لا ترغب في شراء واحدة ، يمكنك إنشاء نموذج بنفسك باستخدام هذا الدورة التعليمية ومواصلة الدفع من رصيدك بتكلفة حوالي 0.002 دولار لكل مهمة.

يتم التحكم في كل العملية بواسطة مكون إضافي للمتصفح ، يقوم عمالنا بتثبيته قبل استلام المهام. إنهم لا يفعلون أي شيء يدويًا ، حيث يتم فتح علامة تبويب جديدة تلقائيًا مع تمكين الوكيل الخاص بك ، وينتقل إلى الصفحة التي تختارها ، وينتظر حتى يتم تمرير شاشة مكافحة الروبوت ، ويحصل على البيانات ، ويغلق علامة التبويب ويمرر البيانات إلى التطبيق الخاص بك عبر API.

لا يتم قبول سوى الخوادم الوكيلة عالية الجودة ، ولا توجد أسماء مضيفين ، ولا "خوادم وكيلة محلية" ، ولا توجد مجموعات بروكسي مشتركة. إن استئجار VPS في الولايات المتحدة الأمريكية / أوروبا وتثبيت خادم SQUID باستخدام تعليمات سيعمل دائمًا. يتم فحص البروكسيات من حيث السرعة والتوافق قبل تنفيذ المهمة. يجب أن يكون لديهم وقت استجابة سريع أقل من ثانية واحدة ، وإلا سيقوم العمال بإلغاء مهامك.

تحقق مما إذا كان أحد مواقع الويب يدعم شاشة مكافحة الروبوت:

لاحظ أن بعض الشاشات المضادة للروبوتات تستخدم تقنيات متقدمة لبصمات الأصابع مثل SSL handshake fingerprinting ، والتي يمكنها تحديد نوع عميل SSL / TLS الذي يتصل بموقع الويب. على سبيل المثال ، يحتوي متصفح Chrome على بصمة إصبع واحدة و Firefox أخرى و CURL بصمة مختلفة تمامًا. لا تخلط بين نفسك وبين وكيل المستخدم ، فهو شيء على مستوى أدنى. في هذه الحالة لاستخدام خدمتنا ، ستحتاج إلى استخدام نسخة المتصفح نفسها لإعادة بناء جلسة عملنا. نظرًا لأن معظم عمالنا يستخدمون متصفح Chrome ، فإن مجموعة من NodeJS + Puppeteer + Chromium أو Selenium + Chromedriver ستؤدي المهمة. وشملت الأمثلة.

Task object

الخاصية نوع الخاصية الأهمية الوظيفة
type String مطلوبة AntiBotCookieTask
websiteURL String مطلوبة عنوان صفحة الويب المستهدفة التي سيتوجه إليها العامل الخاص بنا
proxyAddress String مطلوبة عنوان IP البروكسي ipv4 / ipv6. لا توجد أسماء مضيفين أو عناوين IP من الشبكات المحلية.
proxyPort Integer مطلوبة منفذ البروكسي
proxyLogin String مطلوبة تسجيل دخول البروكسي الذي يتطلب التفويض (متطلب أساسي)
proxyPassword String مطلوبة كلمة مرور البروكسي

مثال على الطلب

CURL
          curl -i -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -X POST -d '{
    "clientKey":"YOUR_API_KEY_HERE",
    "task":
        {
            "type":"AntiBotCookieTask",
            "websiteURL":"https://somewebsite.com/",
            "proxyAddress":"8.8.8.8",
            "proxyPort":8080,
            "proxyLogin":"proxyLoginHere",
            "proxyPassword":"proxyPasswordHere"
        },
    "softId": 0
}' https://api.anti-captcha.com/createTask
        
PHP
          <?php

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

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

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

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

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

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

    $result    =   $api->getTaskSolution();
    echo "\nTask result:\n";
    print_r($result);

    $assoc = json_decode(json_encode($api->getTaskSolution()), true);
    $userAgent = $assoc['fingerprint']['self.navigator.userAgent'];

    $cookies = [];
    foreach ($assoc["cookies"] as $name => $value) {
        $cookies[] = $name . "=" . $value;
    }
    $cookieStr = implode("; ", $cookies);

    echo "Use this User-Agent for your requests: $userAgent\n";
    echo "Use this cookies for your requests: $cookieStr\n";

    //example, may need to pass more headers with CURLOPT_HTTPHEADER:
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL, "https://somewebsite.com/");
    curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
    //set worker's user-agent
    curl_setopt($ch,CURLOPT_USERAGENT, $userAgent);
    //set cookies
    curl_setopt($ch,CURLOPT_HTTPHEADER, array(
        'Cookie: ' . $cookieStr
    ));
    //set your proxies
    curl_setopt($ch,CURLOPT_PROXY, "8.8.8.8:1234");
    curl_setopt($ch, CURLOPT_PROXYUSERPWD, "login:password");
    //retrieve the content
    $content = curl_exec($ch);

}
        
Python
          #pip3 install anticaptchaofficial

from anticaptchaofficial.antibotcookietask import *
import requests

solver = antibotcookieTask()
solver.set_verbose(1)
solver.set_key("API_KEY_HERE")
solver.set_website_url("https://www.somewebsite.com/")
solver.set_proxy_address("1.2.3.4")
solver.set_proxy_port(3128)
solver.set_proxy_login("login")
solver.set_proxy_password("password")

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

result = solver.solve_and_return_solution()
if result == 0:
    print("could not solve task")
    exit()

print(result)

cookies, localStorage, fingerprint = result["cookies"], result["localStorage"], result["fingerprint"]

if len(cookies) == 0:
    print("empty cookies, try again")
    exit()

cookie_string = '; '.join([f'{key}={value}' for key, value in cookies.items()])
user_agent = fingerprint['self.navigator.userAgent']
print(f"use these cookies for requests: {cookie_string}")
print(f"use this user-agent for requests: {user_agent}")

s = requests.Session()
proxies = {
  "http": "http://login:password@1.2.3.4:3128",
  "https": "http://login:password@1.2.3.4:3128"
}
s.proxies = proxies

content = s.get("https://www.somewebsite.com/", headers={
    "Cookie": cookie_string,
    "User-Agent": user_agent
}).text
print(content)
        
NodeJS
          //npm install @antiadmin/anticaptchaofficial
//https://github.com/AdminAnticaptcha/anticaptcha-npm

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

//set API key
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);

(async () => {

    let solution = null;
    try {
        solution = await anticaptcha.solveAntiBotCookieTask(
            checkUrl,
            proxyAddress,
            proxyPort,
            proxyLogin,
            proxyPassword);
    } catch (e) {
        console.error("could not solve captcha: "+e.toString());
        return;
    }

    const fingerPrint = solution.fingerprint;
    const targetCookies = joinCookies(solution.cookies);
    console.log(`joined cookies: ${targetCookies}`);
    console.log(`user-agent: ${fingerPrint['self.navigator.userAgent']}`);

    try {
        let responseText = await axios.request({
            url: checkUrl,
            httpsAgent: agent,
            headers: {
                'User-Agent': fingerPrint['self.navigator.userAgent'],
                'Cookie': targetCookies,
                'Accept-Encoding': 'deflate',
                'Accept': 'text/html',
                'Accept-Language': 'en'
            }
        });
        console.log(responseText.data);
    } catch (e) {
        console.error('Could not request page')
        console.log(e.toString());
    }

})();


function joinCookies(object) {
    let resultArray = [];
    for (const key in object) {
        resultArray.push(key+"="+object[key])
    }
    return resultArray.join("; ");
}
        
      
NodeJS with Puppeteer
          /*

npm install @antiadmin/anticaptchaofficial puppeteer

* */

const anticaptcha = require("@antiadmin/anticaptchaofficial");
const pup = require('puppeteer');

//address behind cloudflare
const checkUrl = 'https://www.thewebsite.com/';
const domainName = 'www.thewebsite.com';


//Anti-captcha.com API key
const apiKey = 'API_KEY_HERE';

// STOP! IMPORTANT! Shared proxy services won't work!
// Use ONLY self-installed proxies on your own infrastructure! Instruction: https://anti-captcha.com/apidoc/articles/how-to-install-squid
// Again and again people people insist they have best purchased proxies. NO YOU DO NOT!
// Absolutely recommended to read this FAQ about proxies: https://anti-captcha.com/faq/510_questions_about_solving_recaptcha_with_proxy__applies_to_funcaptcha__geetest__hcaptcha_


const proxyAddress = '1.2.3.4';
const proxyPort = 1234;
const proxyLogin = 'mylogin';
const proxyPassword = 'mypass';


let browser = null;
let page = null;


(async () => {

    anticaptcha.setAPIKey(apiKey);
    const balance = await anticaptcha.getBalance();
    if (balance <= 0) {
        console.log('Topup your anti-captcha.com balance!');
        return;
    } else {
        console.log('API key balance is '+balance+', continuing');
        // anticaptcha.shutUp(); //uncomment for silent captcha recognition
    }

    let antigateResult = null;
    try {
        antigateResult = await anticaptcha.solveAntiBotCookieTask(
            checkUrl,
            proxyAddress,
            proxyPort,
            proxyLogin,
            proxyPassword);
    } catch (e) {
        console.error("could not solve captcha: "+e.toString());
        return;
    }

    const fingerPrint = antigateResult.fingerprint;

    try {
        console.log('opening browser ..');


        let options = {
            headless: true, //disable to see the browser window
            devtools: false, //enable to see developers console
            args: [
                '--window-size='+fingerPrint['self.screen.width']+','+fingerPrint['self.screen.height'],
                `--proxy-server=${proxyAddress}:${proxyPort}`
            ],

        };
        browser = await pup.launch(options);

        console.log('creating new page ..');
        page = await browser.newPage();
    } catch (e) {
        console.log("could not open browser: "+e);
        return false;
    }

    if (proxyPassword && proxyLogin) {
        console.log(`setting proxy authentication ${proxyLogin}:${proxyPassword}`);
        await page.authenticate({
            username: proxyLogin,
            password: proxyPassword,
        });
    }

    //screen size
    console.log('setting view port to '+fingerPrint['self.screen.width']+'x'+fingerPrint['self.screen.height']);
    await page.setViewport({width: fingerPrint['self.screen.width'], height: fingerPrint['self.screen.height']});

    //user agent
    let userAgent = '';
    if (fingerPrint['self.navigator.userAgent']) {
        userAgent = fingerPrint['self.navigator.userAgent'];
    } else {
        if (fingerPrint['self.navigator.appVersion'] && fingerPrint['self.navigator.appCodeName']) {
            userAgent = fingerPrint['self.navigator.appCodeName'] + '/' + fingerPrint['self.navigator.appVersion']
        }
    }
    console.log('setting browser user agent to '+userAgent);
    await page.setUserAgent(userAgent);

    console.log('setting cookies', antigateResult.cookies);
    let cookies = [];
    for (const name in antigateResult.cookies) {
        cookies.push({ name: name, value: antigateResult.cookies[name], domain: domainName })
    }
    await page.setCookie(...cookies);

    try {
        await page.goto(antigateResult.url, {
            waitUntil: "networkidle0"
        });
    } catch (e) {
        console.log('err while loading the page: '+e);
    }

    const htmlContent = await page.content();
    console.log("page content:\n\n", htmlContent);


})();


      

مثال على الاستجابة

كود 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 ثوانٍ.

حل المهمة

الخاصية نوع الخاصية الوظيفة
cookies Object ملفات تعريف الارتباط من الصفحة خلف شاشة مكافحة الروبوتات. انضم إليهم جميعًا واستخدمهم في طلبات HTTP الخاصة بك.
localStorage Object مشابه لملفات الارتباط، وهو عبارة عن كائن يحتوي على قيم التخزين المحلي التي تم استخراجها من أخر صفحة.
fingerprint Object عوامل بصمة المتصفح: ينبغي أن يتم استخدامها مع ملفات الارتباط وخاصية التخزين المحلي من أجل إعادة إنشاء جلسة متصفح للعامل في البرنامج الخاص بك.
استخدم قيمة self.navigator.userAgent كوكيل مستخدم في طلبات HTTP.
url String عنوان صفحة الويب التي تم إنهاء تنفيذ القالب عليها.
lastRequestHeaders Array رؤوس الطلبات الأخيرة التي تم إرسالها إلى موقع الويب من إطار النافذة الرئيسية للمتصفح.

مثال على الاستجابة

كود JSON بدون أخطاء
          {
    "errorId": 0,
    "status": "ready",
    "solution": {
        "cookies": {
            "some_antibotcookie": "0A8VO9NX5N1s4LRoS4sJlFTCNzLj0dEfA_2whUh0E6ZjgQtM~I1cV7U2IhQx0~jnowNjg-Oi76b-MjYPd1GQAmIxh5-v~33PI8F",
            "maybe_another_id": "join_all_cookies_together"
        },
        "localStorage": {
            "some_value": "Might be used too in the future as a method to 'remember' visitors, so we collect it too.",
            "what_is_it": "localStorage is a more complex analogue of cookies, allowing to store larger objects in browser memory"
        },
        "fingerprint": {
            "self.navigator.userAgent": "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/101.0.0.0 Safari\/537.36",
            "self.screen.width": 1280,
            "self.screen.height": 768,
            "self.screen.availWidth": 1280,
            "self.screen.availHeight": 768,
            "self.screen.availLeft": 0,
            "self.screen.availTop": 25,
            "self.navigator.vendorSub": "",
            "self.navigator.productSub": "20030107",
            "self.navigator.vendor": "Google Inc.",
            "self.navigator.maxTouchPoints": 0,
            "self.navigator.hardwareConcurrency": 8,
            "self.navigator.cookieEnabled": true,
            "self.navigator.appCodeName": "Mozilla",
            "self.navigator.appName": "Netscape",
            "self.navigator.appVersion": "5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/101.0.0.0 Safari\/537.36",
            "self.navigator.platform": "MacIntel",
            "self.navigator.product": "Gecko",
            "self.navigator.language": "en-US",
            "self.navigator.onLine": true,
            "self.navigator.deviceMemory": 4
        },
        "url": "https://www.thewebsite.com/some/final/path/after_redirects",
        "lastRequestHeaders": [
            "sec-ch-device-memory: 8",
            "sec-ch-ua: \" Not A;Brand\";v=\"99\", \"Chromium\";v=\"101\", \"Google Chrome\";v=\"101\"",
            "sec-ch-ua-mobile: ?0",
            "sec-ch-ua-arch: \"x86\"",
            "sec-ch-ua-platform: \"macOS\"",
            "sec-ch-ua-model: \"\"",
            "sec-ch-ua-full-version-list: \" Not A;Brand\";v=\"99.0.0.0\", \"Chromium\";v=\"101.0.5005.115\", \"Google Chrome\";v=\"101.0.5005.115\"",
            "Upgrade-Insecure-Requests: 1",
            "User-Agent: Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/101.0.0.0 Safari\/537.36",
            "Accept: text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/avif,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.9",
            "Sec-Fetch-Site: same-origin",
            "Sec-Fetch-Mode: navigate",
            "Sec-Fetch-Dest: document",
            "Referer: https:\/\/somewebsite.com\/",
            "Accept-Encoding: gzip, deflate, br",
            "Accept-Language: en-US,en;q=0.9",
            "Cookie: some_antibotcookie=0A8VO9NX5N1s4LRoS4sJlFTCNzLj0dEfA_2whUh0E6ZjgQtM~I1cV7U2IhQx0~jnowNjg-Oi76b-MjYPd1GQAmIxh5-v~33PI8F"
        ]
    },
    "cost": "0.00858",
    "ip": "5.25.11.114",
    "createTime": 1637841143,
    "endTime": 1637841189,
    "solveCount": 0
}