アンチボット画面バイパス
このタイプのタスクでは、ワーカーが選択した Web ページに移動し、アンチボット画面をバイパスし、Cookie を取得してアプリに返します。これらの Cookie を使用して、お気に入りのプログラミング言語でこの Web サイトを自由にナビゲートできます。この種のボットをキャッチするページを正常にバイパスするには、ワーカーのブラウザーの User-Agent 値も必要であり、高品質のプロキシを提供します。プロキシがなければ、この方法は機能しません。すべてのアンチボット ソリューションは、Cookie を訪問者の IP アドレスと User-Agent と照合するためです。

最終ページで取得するもの:
- クッキー
- ブラウザのフィンガープリント
- メイン ウィンドウ フレームから行われた最後の HTTP 要求のヘッダー
このテクノロジーは アンチゲート テンプレート に基づいて構築されていますが、テンプレートを自社で管理し、常に最新の状態に維持しています。このタイプのタスクを使用するには、各タスクに 5 クレジットのコストで サブスクリプション が必要です。サブスクリプションの価格は月額 $9.90 からで、5,000 回のバイパスが含まれています。テンプレートを購入したくない場合は、この チュートリアル を使用して自分でテンプレートを作成し、タスクごとに約 0.002 ドルの費用で残高から支払いを続けることができます。
すべてのプロセスは、作業者が割り当てを受ける前にインストールするブラウザ プラグインによって制御されます。彼らは手動で何もしません。基本的に、プロキシを有効にして新しいタブが自動的に開かれ、選択したページに移動し、アンチボット画面が通過するまで待機し、データを取得し、タブを閉じてデータをアプリに渡しますAPI経由。
高品質のプロキシのみが受け入れられ、ホスト名、「レジデンシャル プロキシ」、共有プロキシ プールはありません。米国/ヨーロッパで VPS をレンタルし、指示 を使用して SQUID サーバーをインストールすることは常に機能します。タスクの実行前に、プロキシの速度と互換性がチェックされます。応答時間が 1 秒未満である必要があります。そうしないと、ワーカーがタスクをキャンセルします。
Web サイトがアンチボット画面をサポートしているかどうかを確認します。
一部のアンチボット画面は、SSL handshake fingerprinting などの高度なフィンガープリンティング技術を使用していることに注意してください。これにより、ウェブサイトに接続している SSL/TLS クライアントの種類を識別できます。たとえば、Chrome ブラウザには 1 つのフィンガープリントがあり、Firefox には別のフィンガープリントがあり、CURL にはまったく異なるフィンガープリントがあります。 User-Agent と混同しないでください。これは下位レベルのものです。この場合、サービスを使用するには、同じブラウザ インスタンスを使用してワーカーのセッションを再構築する必要があります。私たちの労働者のほとんどは Chrome ブラウザを使用しているため、NodeJS+Puppeteer+Chromium または Selenium+Chromedriver のバンドルが仕事をします。例が含まれています。
タスクオブジェクト
プロパティ | タイプ | 必須 | 目的 |
---|---|---|---|
type | 文字列 | はい | AntiBotCookieTask |
websiteURL | 文字列 | はい | ワーカーがアクセスするターゲットウェブページのアドレス。 |
proxyAddress | 文字列 | はい | プロキシIP アドレスipv4/ipv6。ローカルネットワークからのホスト名またはIPアドレスがありません。 |
proxyPort | 整数 | はい | プロキシポート |
proxyLogin | 文字列 | はい | 許可が必要なプロキシのログイン(基本) |
proxyPassword | 文字列 | はい | プロキシパスワード |
リクエスト例
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
//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);
}
#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)
//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("; ");
}
/*
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);
})();
レスポンス例
{
"errorId": 0,
"taskId": 7654321
}
{
"errorId": 1,
"errorCode": "ERROR_KEY_DOES_NOT_EXIST",
"errorDescription": "Account authorization key not found in the system"
}
ソリューションの取得
タスクソリューションオブジェクト
プロパティ | タイプ | 目的 |
---|---|---|
cookies | オブジェクト | アンチボット画面の背後にあるページからの Cookie。それらをすべて結合して、HTTP 要求で使用します。 |
localStorage | オブジェクト | Cookieと同様に、最後のページで取得されたlocalStorage値を持つオブジェクト。 |
fingerprint | オブジェクト | ブラウザフィンガープリントパラメータ。CookieおよびlocalStorageと一緒に使用して、ソフトウェアでワーカーブラウザーセッションを再作成します。 HTTP リクエストで self.navigator.userAgent 値をユーザー エージェントとして使用します。 |
url | 文字列 | テンプレートの実行が終了したページのURL |
lastRequestHeaders | 配列 | ブラウザーのメイン ウィンドウ フレームから Web サイトに送信された最後の要求ヘッダー。 |
レスポンス例
{
"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
}