Menu

Обход защиты против ботов

Это тип задачи, в котором наш работник переходит на веб-страницу по вашему выбору, проходит защиту от роботов, собирает куки и передает их в ваше приложение. Далее вы можете использовать эти куки для свободной навигации по сайту, используя ваш любимый язык программирования. Чтобы успешно обходить такой тип защиты от ботов, вам потребуется значение User-Agent от нашего работника, а также предоставить нам прокси высокого качества. Без прокси этот метод не будет работать, так как все анти-бот решения опираются на сопоставление кук с IP адресами и значением User-Agent.
Пример защиты от ботов
Что мы собираем на последней странице:
  • Куки
  • Отпечаток браузера
  • HTTP-заголовки последнего запроса к сайту от главного окна браузера

Эта технология основана на наших шаблонах AntiGate, с той разницей, что мы сами управляем шаблонами и обновляем их по необходимости. Использование этого типа задач требует наличия подписки, со стоимостью 5 кредитов за каждую задачу. Стоимость подписки начинается с $9.90 в месяц, которая даст вам 5,000 задач. Если вы не хотите покупать подписку, то всегда можно составить свой шаблон AntiGate используя этот урок, и продолжить платить за каждую задачу отдельно.

Весь процесс контролируется плагином для браузера, который наши работники устанавливают себе перед получением задач. Они не делают ничего вручную, это выглядит так: открывается новая вкладка с вашим прокси, работник переходит по адресу, плагин ожидает когда работник пройдет защиту от роботов и перейдет на целевой сайт. Там плагин собирает данные и закрывает вкладку. Куки далее передаются в ваше приложение через API.

Принимаются только прокси высокого качества, никаких доменных имен вместо IP-адресов, никаких "резидентских мобильных прокси". Арендованная VPS в США/Европе с сервером SQUID, установленным по нашей инструкции будет работать всегда. Прокси проверяются на скорость и совместимость до старта задачи. Скорость ответа должна быть менее 1 секунды, иначе работники будут отменять ваши задачи.

Проверьте, если защита против ботов поддерживается на странице:

Эта защита еще не поддерживается. Свяжитесь с нами, чтобы запросить поддержку.

Имейте ввиду, что некоторые сервисы защиты от ботов используют продвинутые методики составления отпечатков, такие как SSL handshake fingerprinting, которые определяют какой тип SSL/TLS клиента подсоединяется к веб-сайту. Например, у браузера Chrome один отпечаток, у Firefox другой, у CURL третий и так далее. Не перепутайте это с User-Agent, эти вещи происходят на более низком уровне. В этом случае, чтобы использовать наш сервис, вам нужно использовать тот же самый браузер для навигации, что и у наших работников. Так как большинство работников используют браузер Chrome, то подойдет связка NodeJS+Puppeteer+Chromium или Selenium+Chromedriver. Примеры опубликованы.

Объект задачи

Свойство Тип Требуется Назначение
type Строка Да AntiBotCookieTask
websiteURL Строка Да Адрес целевой страницы куда перейдет наш работник.
proxyAddress Строка Да Адрес прокси в ipv4/ipv6. Имена хостов или адреса из локальной сети не допускаются.
proxyPort Integer Да Порт прокси
proxyLogin Строка Да Логин, если требуется авторизация прокси (basic)
proxyPassword Строка Да Пароль прокси

Пример запроса

Python
Javascript
PHP
#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)

Объект решения задачи

Свойство Тип Назначение
cookies Объект Куки со страницы за противоботным экраном. Соедините их и используйте в ваших HTTP-запросах.
localStorage Объект Аналогично cookies, объект со значениями localStorage, собранными на последней странице.
fingerprint Объект Параметры отпечатка браузера. Используйте их вместе с cookies и localStorage, чтобы воссоздать браузерную сессию работника в вашем приложении.
Используйте значение "self.navigator.userAgent" как user-agent в ваших HTTP-запросах.
url Строка URL последней страницы где было закончено выполнение шаблона
lastRequestHeaders Массив HTTP-заголовки последнего запроса к сайту от главного окна браузера.

Пример ответа

{
    "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
}