تجاوز شاشة مكافحة الروبوت
هذا النوع من المهام حيث ينتقل عاملنا إلى صفحة ويب من اختيارك ، ويتجاوز أي شاشة مضادة للروبوتات ، ويلتقط ملفات تعريف الارتباط ويعيدها إلى تطبيقك. يمكنك بعد ذلك استخدام ملفات تعريف الارتباط هذه للتنقل بحرية في هذا الموقع باستخدام لغة البرمجة المفضلة لديك. لتجاوز هذا النوع من صفحات التقاط الروبوت بنجاح ، ستحتاج أيضًا إلى قيمة 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 -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 | Object | ملفات تعريف الارتباط من الصفحة خلف شاشة مكافحة الروبوتات. انضم إليهم جميعًا واستخدمهم في طلبات HTTP الخاصة بك. |
localStorage | Object | مشابه لملفات الارتباط، وهو عبارة عن كائن يحتوي على قيم التخزين المحلي التي تم استخراجها من أخر صفحة. |
fingerprint | Object | عوامل بصمة المتصفح: ينبغي أن يتم استخدامها مع ملفات الارتباط وخاصية التخزين المحلي من أجل إعادة إنشاء جلسة متصفح للعامل في البرنامج الخاص بك. استخدم قيمة self.navigator.userAgent كوكيل مستخدم في طلبات HTTP. |
url | String | عنوان صفحة الويب التي تم إنهاء تنفيذ القالب عليها. |
lastRequestHeaders | Array | رؤوس الطلبات الأخيرة التي تم إرسالها إلى موقع الويب من إطار النافذة الرئيسية للمتصفح. |
مثال على الاستجابة
{
"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
}