Beranda Dokumentasi Tutorial Masuk
Jenis tugas yang didukung
Metode API
Artikel
Tutorial
GitHub
Menu dokumentasi

Bypass layar anti-bot

Jenis tugas ini di mana pekerja kami menavigasi ke halaman web sesuai pilihan Anda, melewati layar anti-bot apa pun, mengambil cookie dan mengembalikannya ke aplikasi Anda. Anda kemudian dapat menggunakan cookie ini untuk menavigasi secara bebas di situs web ini dengan bahasa pemrograman favorit Anda. Agar berhasil melewati halaman penangkap bot semacam ini, Anda juga memerlukan nilai User-Agent dari browser pekerja kami dan memberikan kami proxy dengan kualitas yang baik. Tanpa proxy, metode ini tidak akan berhasil, karena semua solusi anti-bot mencocokkan cookie mereka dengan alamat IP pengunjung dan User-Agent mereka.

Contoh layar anti-bot

Apa yang kita ambil di halaman akhir:

  • Kue kering
  • Sidik jari peramban
  • Header dari permintaan HTTP terakhir yang dibuat dari bingkai jendela utama

Teknologi ini dibangun di atas Templat AntiGate kami, kecuali bahwa kami mengelola templat sendiri dan terus memperbaruinya. Menggunakan jenis tugas ini akan memerlukan berlangganan, dengan biaya 5 kredit untuk setiap tugas. Harga langganan mulai dari $9,90 per bulan dengan 5.000 bypass sudah termasuk. Jika Anda tidak suka membelinya, Anda dapat membuat templat sendiri menggunakan tutorial ini dan terus membayar dari saldo Anda dengan biaya sekitar $0,002 per tugas.

Semua proses dikendalikan oleh plugin browser, yang dipasang oleh pekerja kami sebelum menerima tugas. Mereka tidak melakukan apa pun secara manual, pada dasarnya tab baru dibuka secara otomatis dengan proxy Anda diaktifkan, menavigasi ke halaman pilihan Anda, menunggu sampai layar anti-bot dilewati, mengambil data, menutup tab dan meneruskan data ke aplikasi Anda melalui API.

Hanya proxy berkualitas tinggi yang diterima, tidak ada nama host, tidak ada "proxy perumahan", tidak ada kumpulan proxy bersama. Menyewa VPS di Amerika Serikat/Eropa dan memasang server SQUID dengan instruksi kami akan selalu berfungsi. Proxy diperiksa kecepatan dan kompatibilitasnya sebelum eksekusi tugas. Proxy harus memiliki waktu respons yang cepat di bawah 1 detik, jika tidak, pekerja akan membatalkan tugas Anda.

Periksa apakah situs web telah mendukung layar anti-bot:

Perhatikan bahwa beberapa layar anti-bot menggunakan teknik sidik jari tingkat lanjut seperti SSL handshake fingerprinting, yang dapat mengidentifikasi jenis klien SSL/TLS yang terhubung ke situs web. Misalnya, browser Chrome memiliki satu sidik jari, Firefox yang lain dan CURL yang sama sekali berbeda. Jangan bingung dengan User-Agent, itu adalah sesuatu yang berada di tingkat yang lebih rendah. Dalam hal ini untuk menggunakan layanan kami, Anda harus menggunakan instance browser yang sama untuk merekonstruksi sesi pekerja kami. Karena sebagian besar pekerja kami menggunakan browser Chrome, bundel NodeJS + Puppeteer + Chromium atau Selenium + Chromedriver akan melakukan pekerjaan itu. Contohnya termasuk.

Objek tugas

Properti Jenis Wajib Tujuan
type String Ya AntiBotCookieTask
websiteURL String Ya Alamat target halaman web yang akan ditelusuri pekerja kami.
proxyAddress String Ya Alamat IP proxy IPv4/IPv6. Tidak ada nama host atau alamat IP dari jaringan lokal.
proxyPort Integer Ya Port proxy
proxyLogin String Ya Log masuk untuk proxy yang membutuhkan otorisasi (dasar)
proxyPassword String Ya Kata sandi proxy

Contoh permintaan

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


})();


      

Contoh respons

JSON tanpa kesalahan
          {
    "errorId": 0,
    "taskId": 7654321
}
        
JSON dengan kesalahan
          {
    "errorId": 1,
    "errorCode": "ERROR_KEY_DOES_NOT_EXIST",
    "errorDescription": "Account authorization key not found in the system"
}
        

Dapatkan solusi

Gunakan metode getTaskResult untuk meminta solusi. Berikan waktu pada pekerja, sekitar 5 detik, sebelum membuat permintaan pertama. Jika pekerja masih sibuk, ulangi dalam 3 detik.

Objek solusi tugas

Properti Jenis Tujuan
cookies Object Cookie dari halaman di belakang layar anti-bot. Gabungkan semuanya dan gunakan dalam permintaan HTTP Anda.
localStorage Object Mirip dengan cookie, objek dengan nilai localStorage yang diambil dari halaman terakhir.
fingerprint Object Parameter browser fingerprint. Gunakan parameter ini bersama dengan cookie dan localStorage untuk menciptakan ulang sesi browser pekerja dalam software Anda.
Gunakan nilai self.navigator.userAgent sebagai agen-pengguna dalam permintaan HTTP Anda.
url String URL halaman di mana eksekusi template diselesaikan
lastRequestHeaders Array Header permintaan terakhir yang dikirim ke situs web dari bingkai jendela utama browser.

Contoh respons

JSON tanpa kesalahan
          {
    "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
}