Bỏ qua màn hình chống bot
Đây là loại nhiệm vụ mà nhân viên của chúng tôi điều hướng đến một trang web mà bạn chọn, bỏ qua mọi màn hình chống bot, lấy cookie và đưa chúng trở lại ứng dụng của bạn. Sau đó, bạn có thể sử dụng các cookie này để tự do điều hướng tại trang web này bằng ngôn ngữ lập trình yêu thích của mình. Để vượt qua thành công loại trang bắt bot này, bạn cũng cần có giá trị Tác nhân người dùng của trình duyệt nhân viên của chúng tôi và cung cấp cho chúng tôi proxy có chất lượng tốt. Nếu không có proxy, phương pháp này sẽ không hoạt động, vì tất cả các giải pháp chống bot đều khớp cookie của họ với địa chỉ IP của khách truy cập và Tác nhân người dùng của họ.

Những gì chúng tôi lấy ở trang cuối cùng:
- Bánh quy
- vân tay trình duyệt
- Tiêu đề của yêu cầu HTTP cuối cùng được tạo từ khung cửa sổ chính
Công nghệ này được xây dựng trên mẫu AntiGate của chúng tôi, ngoại trừ việc chúng tôi tự quản lý các mẫu và cập nhật chúng. Sử dụng loại nhiệm vụ này sẽ yêu cầu đăng ký, với chi phí là 5 tín chỉ cho mỗi nhiệm vụ. Giá đăng ký bắt đầu từ 9,90 đô la một tháng với 5.000 lượt bỏ qua. Nếu bạn không muốn mua một mẫu, bạn có thể tự tạo một mẫu bằng cách sử dụng hướng dẫn này và tiếp tục thanh toán từ số dư của mình với chi phí khoảng 0,002 đô la cho mỗi tác vụ.
Tất cả quy trình được kiểm soát bởi một plugin trình duyệt mà nhân viên của chúng tôi cài đặt trước khi nhận nhiệm vụ. Họ không làm bất cứ điều gì theo cách thủ công, về cơ bản, một tab mới được mở tự động khi bật proxy của bạn, điều hướng đến trang bạn chọn, đợi cho đến khi màn hình chống bot được thông qua, lấy dữ liệu, đóng tab và chuyển dữ liệu đến ứng dụng của bạn thông qua API.
Chỉ những proxy chất lượng cao mới được chấp nhận, không có tên máy chủ, không có "proxy dân cư", không có nhóm proxy được chia sẻ. Thuê VPS ở Hoa Kỳ/Châu Âu và cài đặt máy chủ SQUID với hướng dẫn của chúng tôi sẽ luôn hoạt động. Proxy được kiểm tra tốc độ và khả năng tương thích trước khi thực hiện tác vụ. Họ phải có thời gian phản hồi nhanh dưới 1 giây, nếu không nhân viên sẽ hủy nhiệm vụ của bạn.
Kiểm tra xem website có hỗ trợ màn hình anti-bot hay không:
Lưu ý rằng một số màn hình chống bot đang sử dụng các kỹ thuật lấy dấu vân tay nâng cao như SSL handshake fingerprinting, có thể xác định loại ứng dụng khách SSL/TLS nào đang kết nối với trang web. Ví dụ: trình duyệt Chrome có một dấu vân tay, Firefox khác và CURL là một dấu vân tay hoàn toàn khác. Đừng nhầm lẫn với Tác nhân người dùng, đó là thứ gì đó ở cấp độ thấp hơn. Trong trường hợp này để sử dụng dịch vụ của chúng tôi, bạn sẽ cần sử dụng cùng một phiên bản trình duyệt để tạo lại phiên làm việc của nhân viên của chúng tôi. Vì hầu hết nhân viên của chúng tôi đang sử dụng trình duyệt Chrome nên một gói NodeJS+Puppeteer+Chromium hoặc Selenium+Chromedriver sẽ thực hiện công việc. Ví dụ bao gồm.
Đối tượng tác vụ
Thuộc tính | Loại | Bắt buộc | Mục đích |
---|---|---|---|
type | Chuỗi | Có | AntiBotCookieTask |
websiteURL | Chuỗi | Có | Địa chỉ của trang web đích mà nhân viên của chúng tôi sẽ điều hướng tới. |
proxyAddress | Chuỗi | Có | Địa chỉ IP Proxy ipv4/ipv6. Không có tên máy chủ hoặc địa chỉ IP từ mạng cục bộ. |
proxyPort | Số nguyên | Có | Cổng proxy |
proxyLogin | Chuỗi | Có | Thông tin đăng nhập cho proxy yêu cầu cấp phép (cơ bản) |
proxyPassword | Chuỗi | Có | Mật khẩu proxy |
Ví dụ về yêu cầu
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);
})();
Ví dụ về phản hồi
{
"errorId": 0,
"taskId": 7654321
}
{
"errorId": 1,
"errorCode": "ERROR_KEY_DOES_NOT_EXIST",
"errorDescription": "Account authorization key not found in the system"
}
Truy xuất lời giải
Đối tượng giải của tác vụ
Thuộc tính | Loại | Mục đích |
---|---|---|
cookies | Đối tượng | Cookies từ trang phía sau màn hình chống bot. Tham gia tất cả chúng lại với nhau và sử dụng trong các yêu cầu HTTP của bạn. |
localStorage | Đối tượng | Giống như cookies, một biến đối tượng với giá trị Lưu trữ cục bộ gắn ở cuối trang. |
fingerprint | Đối tượng | Tham số vân tay trình duyệt. Sử dụng tham số vân tay trình duyệt cùng với cookies và Lưu trữ cục bộ để tạo phiên trình duyệt của nhân viên trong trình duyệt của bạn. Sử dụng giá trị self.navigator.userAgent làm tác nhân người dùng trong các yêu cầu HTTP của bạn. |
url | Chuỗi | Đã hoàn thành URL của trang thực hiện cùng mẫu |
lastRequestHeaders | Dãy | Tiêu đề yêu cầu cuối cùng được gửi đến trang web từ khung cửa sổ chính của trình duyệt. |
Ví dụ về phản hồi
{
"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
}