В этом уроке вы узнаете следующее:
- Что такое Cloudflare.
- Более глубокий взгляд на механизм WAF.
- Как работает система защиты от ботов с технической точки зрения.
- Что происходит, когда вы нацеливаетесь на сайт, защищенный Cloudflare, с помощью стандартных средств автоматизации.
- Высокоуровневые подходы к обходу Cloudflare.
- Как обойти человеческую проверку Cloudflare в Python.
- Как обойти Cloudflare в масштабе.
Давайте погрузимся!
Что такое Cloudflare?
Cloudflare – компания, специализирующаяся на веб-инфраструктуре и безопасности, управляющая одной из крупнейших сетей в Сети. Она предлагает полный набор услуг, призванных сделать веб-сайты более быстрыми и безопасными.
По своей сути Cloudflare функционирует как CDN(сеть доставки контента), кэшируя содержимое сайтов в глобальной сети для улучшения времени загрузки и снижения задержек. Кроме того, она предоставляет такие функции, как защита от DDoS(Distributed Denial-of-Service), WAF (Web Application Firewall), управление ботами, услуги DNS и многое другое.
Благодаря интеграции с сетью Cloudflare сайты могут быстро получить повышенную безопасность и оптимизированную производительность. Благодаря этому Cloudflare стал популярным решением для миллионов сайтов по всему миру.
Понимание механизмов защиты от ботов в Cloudflare
Одной из причин популярности Cloudflare является наличие WAF(Web Application Firewall). Он может быть включен на любой веб-странице, обслуживаемой через глобальную сеть компании. Более того, он представляет собой одно из самых эффективных решений против скреперов, нежелательных краулеров и ботов в целом.
Если говорить точнее, Cloudflare WAF находится перед вашими веб-приложениями. Он проверяет и фильтрует входящие запросы в режиме реального времени, чтобы остановить атаки или нежелательный трафик до того, как они достигнут ваших серверов или получат доступ к вашим веб-страницам.
В рамках многоуровневой стратегии защиты Cloudflare WAF использует запатентованные алгоритмы для обнаружения и блокировки вредоносных ботов. Эти алгоритмы анализируют несколько характеристик входящего трафика, в том числе:
- Отпечатки пальцев TLS: Проверяет, как выполняется рукопожатие TLS клиентом HTTP или браузером. Он рассматривает такие детали, как предлагаемые наборы шифров, порядок переговоров и другие низкоуровневые характеристики. Боты и нестандартные клиенты часто имеют необычные, не похожие на браузерные, подписи TLS, которые выдают их.
- Детали HTTP-запроса: Изучение HTTP-заголовков, файлов cookie, строк пользовательского агента и других аспектов. Боты часто используют стандартные или подозрительные конфигурации, которые отличаются от тех, что используются в настоящих браузерах.
- Отпечатки JavaScript: Запускает JavaScript в браузере клиента для сбора подробной информации о среде. Сюда входят точная версия браузера, операционная система, установленные шрифты или расширения и даже тонкие характеристики оборудования. Эти данные формируют отпечаток пальца, который помогает отличить реальных пользователей от автоматических скриптов.
- Поведенческий анализ: Одним из самых сильных признаков автоматизированного трафика является неестественное поведение. Cloudflare отслеживает такие закономерности, как быстрые запросы, отсутствие движений мышью, одинаковые траектории кликов, время простоя и многое другое. С помощью машинного обучения он определяет, соответствует ли поведение пользователя человеческому или ботскому. Это одна из самых сложных технологий защиты от ботов.
Cloudflare обычно предоставляет два способа проверки человеком:
- Всегда показывайте вызов для проверки человека.
- Автоматизированная проверка человеком (только при обнаружении подозрительной активности)
Изучите оба варианта ниже!
Режим № 1: Всегда показывать вызов на верификацию человека
Первый способ менее распространен, но обеспечивает более надежную защиту. Идея заключается в том, чтобы всегда требовать проверки человеком при первом доступе к сайту.
Например, вот как работает StackOverflow на момент написания этой статьи. Попробуйте зайти на него в режиме инкогнито (чтобы обеспечить свежую сессию без куки), и вы увидите CAPTCHA под названием Cloudflare Turnstile, даже если вы настоящий пользователь:
Примечание: К тому времени, когда вы будете читать эту статью, защита StackOverflow от ботов может измениться или работать по-другому.
В этом случае, если вы создаете автоматизированный скрипт, единственным вариантом будет автоматизация взаимодействия с Turnstile CAPTCHA в человекоподобной манере. Это особенно сложно, поскольку Turnstile полагается на скрытый анализ поведения и другие фирменные проверки. Именно так ему удается проверить, что вы человек, одним щелчком мыши.
Способ №2: Задача автоматизированной человеческой верификации
В этом режиме Cloudflare выдает вызов, только если подозревает, что запрос может исходить от бота. Для этого он представляет вызов JavaScript, который незаметно запускается в браузере, чтобы убедиться, что клиент ведет себя как легитимный пользователь:
Этот процесс не вызывает затруднений и обычно завершается автоматически, если вы являетесь человеком, использующим обычный браузер. Если вы пройдете проверку, вы сможете продолжить навигацию по сайту без перерыва. Поскольку этот режим вызывает минимальные сбои в работе обычных пользователей, он является самым распространенным режимом Cloudflare.
Однако если вызов JavaScript не проходит (то есть Cloudflare делает вывод, что клиент, скорее всего, бот), он переходит к показу CAPTCHA Turnstile для проверки человеком:
Теперь вы вернулись к тому, что видели в предыдущем сценарии. В этом режиме использование бота, который представляет отпечатки пальцев, похожие на человеческие, может быть достаточным для прохождения первичной проверки, избегая CAPTCHA турникета. Тем не менее, если он все-таки появится, вам нужно найти способ справиться с ним.
Как работает Cloudflare в деталях с технической точки зрения
Попробуйте открыть тестовую страницу NopeCHA Cloudflare в режиме инкогнито в своем браузере. Эта страница защищена Cloudflare WAF, поэтому сразу же начнется автоматический процесс проверки на основе JavaScript.
В фоновом режиме происходит обмен сериями POST-запросов с конечными точками Cloudflare, передающими зашифрованные данные в своей полезной нагрузке:
Точное содержимое этих полезных нагрузок публично не документировано. Однако, основываясь на известных стратегиях обнаружения Cloudflare, можно предположить, что они включают в себя несколько типов отпечатков браузера и системы.
Поскольку конфигурация вашего браузера и оборудования соответствует нормам, этот вызов должен пройти автоматически. В противном случае выполните требуемое взаимодействие с пользователем (например, щелкните флажок).
После успешной проверки сервер Cloudflare выдает cookie cf_clearance
, который указывает, что данной конкретной сессии пользователя разрешен доступ к сайту:
В данном случае cookie действует в течение 15 дней. Это означает, что теоретически он может быть повторно использован автоматическим ботом в течение нескольких недель для доступа к целевому сайту без повторного прохождения процедуры проверки.
Что происходит, когда вы пытаетесь подключиться к сайту, защищенному Cloudflare
Теперь давайте посмотрим, что на самом деле происходит, когда автоматический бот пытается посетить страницу, защищенную Cloudflare.
Примечание: приведенные ниже примеры скриптов написаны на языке Python, но те же принципы применимы независимо от выбранного вами языка программирования, HTTP-клиента или средства автоматизации браузера.
Для этой демонстрации мы будем использовать страницу вызова Cloudflare из ScrapingCourse:
Это сайт, который требует прохождения проверки Cloudflare. После успешного решения задачи отображается следующая страница:
В следующих примерах мы специально проверим, содержит ли содержимое полученной страницы строку:
"You bypassed the Cloudflare challenge! :D"
Это подтвердит, что процесс проверки был успешно завершен.
В качестве базового теста мы посмотрим, что произойдет при посещении страницы, защищенной Cloudflare, используя два разных подхода:
- С помощью HTTP-клиента, например, Requests
- С помощью такого инструмента автоматизации браузера, как Playwright
Направление запросов на защищенные страницы Cloudflare
Проверьте, могут ли запросы автоматически обходить человеческую проверку Cloudflare:
# pip install requests
import requests
# Connect to the target page
response = requests.get(
"https://www.scrapingcourse.com/cloudflare-challenge"
)
# Raise exceptions in case of HTTP error status codes
response.raise_for_status()
# Verify if you received the success page
html = response.text
print("Cloudflare Bypassed:", "You bypassed the Cloudflare challenge! :D" in html)
Обратите внимание, что сценарий даже не дойдет до финального оператора print()
. Вместо этого он потерпит неудачу:
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://www.scrapingcourse.com/cloudflare-challenge
Как видите, Cloudflare распознал запрос как исходящий от автоматического скрипта и заблокировал его с помощью ответа 403 Forbidden
.
Посещение защищенных Cloudflare страниц с помощью Playwright
Теперь попробуем использовать решение для автоматизации браузера, например Playwright:
# pip install playwright
# python -m playwright install
from playwright.sync_api import sync_playwright
from playwright.sync_api import TimeoutError
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
# Go to the target page
page.goto("https://www.scrapingcourse.com/cloudflare-challenge")
try:
# Wait for the desired text to be on the page
page.locator("text=You bypassed the Cloudflare challenge! :D").wait_for()
challenge_bypassed = True
except TimeoutError:
challenge_bypassed = False
# Close the browser and release its resources
browser.close()
print("Cloudflare Bypassed:", challenge_bypassed)
Этот скрипт указывает браузеру Chromium посетить целевую страницу. Затем он с помощью локатора проверяет, появился ли на странице элемент, содержащий нужный текст, и автоматически ждет его (по умолчанию Playwright ждет до 30 секунд).
Запустите необходимые команды установки и выполните приведенный выше сценарий. Вы увидите следующий результат:
Cloudflare Bypassed: False
Если запустить его в режимеheadless (headless=False
), вы заметите, что скрипт застревает на странице проверки Cloudflare. На ней отображается капча Turnstile CAPTCHA и ожидается, пока она будет решена вручную:
Примечание: Если вы попытаетесь автоматизировать нажатие флажка “Турникет”, проверка не пройдет. Это связано с тем, что Cloudflare достаточно умна, чтобы определить, что это автоматическое, а не реальное взаимодействие с человеком.
Высокоуровневые подходы к обходу Cloudflare
Изучите три подхода, которые можно использовать для обхода защиты Cloudflare с помощью автоматизированного скрипта.
Подход № 1: полностью обойти Cloudflare
Не забывайте, что Cloudflare работает как CDN, то есть кэширует и распределяет содержимое сайта по нескольким географически распределенным серверам. Поэтому сайты, распространяемые через Cloudflare, обычно доступны только через серверы в сети CDN.
А теперь представьте, что вам удалось узнать IP-адрес сервера сайта, находящегося за CDN. В результате вы смогли бы взаимодействовать с сайтом, минуя Cloudflare. Ведь Cloudflare может оценивать только те запросы, которые проходят через ее сеть.
Это возможно, если обратиться к инструментам поиска истории DNS, таким как SecurityTrails, чтобы выявить все исторические записи DNS, которые раскрывают IP-адрес оригинального сервера. Получив IP-адрес, вы можете попытаться отправить запросы непосредственно на сервер, минуя Cloudflare.
Проблема в том, что на сервере могут быть установлены дополнительные настройки, позволяющие принимать запросы только с IP-адреса Cloudflare. Это сделает практически невозможным прямое подключение к сайту без блокировки. Кроме того, успешно найти оригинальный IP-адрес сервера довольно сложно и маловероятно.
Подход № 2: Положитесь на решателя Cloudflare
В Интернете можно найти несколько бесплатных библиотек с открытым исходным кодом, предназначенных для обхода Cloudflare. Среди наиболее популярных можно назвать следующие:
- cloudscraper: Python-модуль для решения задач Cloudflare по борьбе с ботами.
- Cfscrape: Легкий PHP-модуль для обхода страниц Cloudflare, защищающих от ботов.
- Гуманоид: Пакет Node.js для обхода JavaScript-задач Cloudflare по борьбе с ботами.
Неудивительно, что большинство из этих проектов не получали обновлений годами. Причина в том, что разработчики отказались от них из-за постоянной борьбы с обновлениями Cloudflare. Таким образом, эти инструменты, как правило, работают недолго.
Подход № 3: Используйте решение для автоматизации с возможностью обхода Cloudflare
В большинстве случаев лучшим решением для соскабливания сайтов, защищенных Cloudflare, является использование универсального решения для автоматизации. Чтобы быть эффективными, эти библиотеки или онлайн-сервисы должны обладать как минимум следующими возможностями:
- Рендеринг JavaScript, чтобы JavaScript-задачи Cloudflare выполнялись правильно.
- Подделка TLS, заголовков HTTP и отпечатков пальцев браузера для имитации реальных пользователей и избежания обнаружения.
- Возможность решения CAPTCHA с помощью турникета, чтобы справиться с человеческой проверкой Cloudflare, когда она появится.
- Имитация человекоподобного взаимодействия, например, перемещение мыши по кривой B-сплайна для имитации естественного поведения пользователя.
Кроме того, решения премиум-класса часто включают интегрированную прокси-сеть для ротации IP-адресов и снижения риска блокировки.
В следующих двух главах вы увидите в действии как решения с открытым исходным кодом, так и решения премиум-класса!
Как обойти человеческую проверку Cloudflare на Python
Большинство решений с открытым исходным кодом, претендующих на обход Cloudflare, справляются с этой задачей лишь в течение ограниченного периода времени. Это происходит потому, что по сути это игра в кошки-мышки, и их открытый исходный код (где инженеры Cloudflare могут легко изучить их код) не помогает.
Поэтому неудивительно, что многие инструменты, которые когда-то работали (например, Puppeteer Stealth), больше не достигают цели. Тем не менее, на момент написания статьи существует два решения, которым действительно удается обойти защиту Cloudflare:
- Camoufox: Python-браузер с открытым исходным кодом и защитой от обнаружения, основанный на адаптированной сборке Firefox, предназначенный для обхода обнаружения ботов и веб-скрапинга.
- SeleniumBase: Python-инструментарий с открытым исходным кодом профессионального уровня для расширенной веб-автоматизации.
Давайте посмотрим, как они справятся с задачей Cloudflare на странице ScrapingCourse!
Обход турникета Clouflare с помощью Camoufox
Сначала установите Camoufox в ваш Python-проект с помощью:
pip install camoufox[geoip]
Затем извлеките необходимые дополнительные зависимости с помощью:
python -m camoufox fetch
Для получения дополнительной информации обратитесь к официальному руководству по установке.
Библиотека Camoufox Python построена на базе Playwright, поэтому ее API очень похожи. Посетите целевой сайт, дождитесь появления вызова турникета и обработайте его (если он действительно появится), используя следующую логику:
# pip install camoufox[geoip]
# python -m camoufox fetch
from camoufox.sync_api import Camoufox
from playwright.sync_api import TimeoutError
with Camoufox(
headless=False,
humanize=True,
window=(1280, 720) # So that the Turnstile checkbox is on coordinate (210, 290)
) as browser:
page = browser.new_page()
# Visit the target page
page.goto("https://www.scrapingcourse.com/cloudflare-challenge")
# Wait for the Cloudflare Turnstile to appear and load
page.wait_for_load_state(state="domcontentloaded")
page.wait_for_load_state("networkidle")
page.wait_for_timeout(5000) # 5 seconds
# Ckick the Turnstile checkbox (if it is present)
page.mouse.click(210, 290)
try:
# Wait for the desired text to appear
page.locator("text=You bypassed the Cloudflare challenge! :D").wait_for()
challenge_bypassed = True
except TimeoutError:
# The text did not appear
challenge_bypassed = False
# Close the browser and release its resources
browser.close()
print("Cloudflare Bypassed:", challenge_bypassed)
Обратите внимание, что логика работы с турникетом немного запутанная. Она основана на предположении, что флажок Turnstile появится примерно в координатах (210, 290) в окне браузера с разрешением 1280×720.
Запустите приведенный выше сценарий, и вы получите следующий результат:
Автоматическое движение мыши к координате (210, 290) выглядит реалистично благодаря параметру Humanize=True
.
Как показано здесь, Camoufox успешно справляется с нажатием на флажок. В результате в терминале вы увидите следующий вывод:
Cloudflare Bypassed: True
Миссия выполнена!
Избегайте Clouflare с помощью SeleniumBase
Установите SeleniumBase с помощью:
pip install seleniumbase
Затем используйте его для работы с Cloudflare:
# pip install seleniumbase
from seleniumbase import Driver
from seleniumbase.common.exceptions import TextNotVisibleException
# Launch in undetected-chromedriver mode
driver = Driver(uc=True)
# Visit the target page
url = "https://www.scrapingcourse.com/cloudflare-challenge"
driver.uc_open_with_reconnect(url, 4)
# Click the Turnstile (if it is present) and reload the page
driver.uc_gui_click_captcha()
try:
# Wait for the desired text to appear
driver.wait_for_text("You bypassed the Cloudflare challenge! :D", "main")
challenge_bypassed = True
except TextNotVisibleException:
# The text did not appear
challenge_bypassed = False
# Close the browser and release its resources
driver.quit()
print("Cloudflare Bypassed:", challenge_bypassed)
В режиме uc=True
(который использует undetected-chromedriver
под капотом) SeleniumBase может воспользоваться специальным методом uc_gui_click_captcha()
для обработки Turnstile CAPTCHA – если она появляется. Это означает, что на этот раз нет необходимости в пользовательской логике клика.
Запустите скрипт, и вы увидите:
На этот раз сценарий автоматизации обходит начальный этап проверки, даже не задействуя CAPTCHA Turnstile. В любом случае метод uc_gui_click_captcha()
успешно справился бы с этим. Это возможно благодаря режиму UC, о котором вы можете узнать больше в нашем руководстве по скраппингу на SeleniumBase.
И вуаля! Cloudflare снова обошли.
Как обойти Cloudflare в масштабе
Две библиотеки, представленные ранее, хорошо подходят для простых сценариев автоматизации, но имеют три основных недостатка:
- Чтобы добиться высокого процента эффективных результатов, им приходится запускать браузеры в режиме head. Это потребляет много системных ресурсов и усложняет масштабируемость.
- Они непостоянны и могут временно перестать работать, если Cloudflare обновляет логику обнаружения. Поскольку эти решения поддерживаются сообществом, выпуск обновлений может занять несколько дней или даже недель.
- Официальной поддержки нет. Вы должны полагаться на онлайн-ресурсы и помощь сообщества.
По этим причинам библиотеки с открытым исходным кодом и возможностью обхода Cloudflare не рекомендуется использовать в производственных проектах. Для получения более масштабируемых и стабильных результатов, а также поддержки со стороны круглосуточной службы поддержки вамнужны продукты премиум-класса , такие как продукты Bright Data.
В частности, здесь мы сосредоточимся на следующих двух решениях:
- Web Unlocker: Универсальная конечная точка для скраппинга, включающая все возможности обхода антиботов для получения HTML с любого сайта.
- Браузерный API: Бесконечно масштабируемый облачный браузер, созданный для поддержки любого рабочего процесса автоматизации. Он интегрируется с Puppeteer, Selenium, Playwright и любыми другими инструментами автоматизации браузера. Он включает в себя расширенное управление отпечатками пальцев, встроенное решение CAPTCHA и автоматическую ротацию прокси.
Узнайте, как интегрировать эти инструменты на Python (хотя они поддерживают любой язык программирования) в ваши сценарии автоматизации!
Обход Cloudflare с помощью Web Unlocker
Прежде чем приступить к работе, следуйте официальному руководству по бесплатной настройке Web Unlocker в вашей учетной записи Bright Data. Вам также потребуется сгенерировать API-ключ Bright Data для аутентификации запросов к конечной точке Web Unlocker.
Здесь мы будем считать, что имя вашей зоны Web Unlocker – web_unlocker
.
После выполнения описанных выше действий протестируйте Web Unlocker на целевой странице, использованной в этой статье:
# pip install requests
import requests
BRIGHT_DATA_API_KEY = "<YOUR_BRIGHT_DATA_API_KEY>" # Replace with your Bright Data API key
headers = {
"Authorization": f"Bearer {BRIGHT_DATA_API_KEY}",
"Content-Type": "application/json"
}
data = {
"zone": "web_unlocker", # Replace with the name of your Web Unlocker zone
"url": "https://www.scrapingcourse.com/cloudflare-challenge",
"format": "raw"
}
# Perform a request to the Web Unlocker endpoint
response = requests.post(
"https://api.brightdata.com/request",
json=data,
headers=headers
)
# Get the response and check if Cloudflare was bypassed
html = response.text
print("Cloudflare Bypassed:", "You bypassed the Cloudflare challenge! :D" in html)
Web Unlocker вернет HTML-содержимое страницы, находящейся за стеной проверки Cloudflare. В частности, переменная html
будет содержать следующее содержимое:
<!doctype html>
<html lang="en"><head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Cloudflare Challenge - ScrapingCourse.com</title>
<!-- omitted for brevity ... -->
<main class="page-content py-4" id="main-content" data-testid="main-content" data-content="main">
<div class="container" id="content-container" data-testid="content-container" data-content="container">
<div class="cloudflareChallenge">
<h1 id="page-title" class="page-title text-4xl font-bold mb-2 text-left gradient-text highlight gradient-text leading-10" data-testid="page-title" data-content="title">
Cloudflare Challenge
</h1>
<div class="challenge-info bg-[#EDF1FD] rounded-md p-4 mb-8 mt-5" id="challenge-info" data-testid="challenge-info" data-content="challenge-info">
<div class="info-header flex items-center gap-2 pb-2" id="info-header" data-testid="info-header" data-content="info-header">
<img width="25" height="15" src="https://www.scrapingcourse.com/assets/images/challenge.svg" data-testid="challenge-image" data-content="challenge-image">
<h2 class="challenge-title text-xl font-bold" id="challenge-title" data-testid="challenge-title" data-content="challenge-title">
You bypassed the Cloudflare challenge! :D
</h2>
</div>
</div>
</div>
</div>
</main>
<!-- omitted for brevity ... -->
</html>
Это именно то HTML-содержимое страницы, которая находится за стеной человеческой проверки Cloudflare. Поэтому нет ничего удивительного в том, что результат работы скрипта будет таким:
Cloudflare Bypassed: True
Обратите внимание, что плата взимается только за успешные запросы, а пробная версия доступна бесплатно!
Автоматизация Cloudflare с помощью API браузера
В качестве предварительного условия настройте продукт Browser API в своей учетной записи Bright Data. На странице зоны скопируйте URL-адрес подключения Playwright CDP:
Этот URL-адрес содержит ваши учетные данные и позволяет указать любому решению для автоматизации браузера, поддерживающему удаленныйпротокол CDP(Chrome DevTools Protocol), подключиться к Bright Data Browser API. Другими словами, ваш инструмент автоматизации будет работать с удаленно размещенным экземпляром браузера, управляемым Bright Data. Это означает, что масштабируемость и обслуживание браузера будут осуществляться за вас.
Расширьте сценарий Playwright, показанный ранее, чтобы подключиться к Browser API через CDP URL:
# pip install playwright
# python install -m playwright install
from playwright.sync_api import sync_playwright
from playwright.sync_api import TimeoutError
BRIGHT_DATA_API_CDP_URL = "<YOUR_BRIGHT_DATA_API_CDP_URL>" # Replace with your Browser API Playwright CDP URL
with sync_playwright() as p:
# Connect to the remote Browser API
browser = p.chromium.connect_over_cdp(BRIGHT_DATA_API_CDP_URL)
page = browser.new_page()
# Go to the target page
page.goto("https://www.scrapingcourse.com/cloudflare-challenge")
try:
# Wait for the desired text to be on the page
page.locator("text=You bypassed the Cloudflare challenge! :D").wait_for()
challenge_bypassed = True
except TimeoutError:
challenge_bypassed = False
# Close the browser and release its resources
browser.close()
print("Cloudflare Bypassed:", challenge_bypassed)
На этот раз скрипт успешно обойдет проверку Cloudflare благодаря расширенным возможностям Browser API. В терминале вы увидите следующий вывод:
Cloudflare Bypassed: True
Отличная работа! Обход Cloudflare больше не является проблемой.
Заключение
В этой статье вы узнали, как работает Cloudflare, и рассмотрели практические решения по его обходу в своих рабочих процессах автоматизации. Как вы убедились, обойти меры Cloudflare по защите от скрепинга сложно, но вполне возможно.
Независимо от того, какой подход вы выберете, все станет проще с такими профессиональными, быстрыми и надежными решениями, как:
- Web Unlocker: Конечная точка, которая автоматически обходит ограничения скорости, отпечатки пальцев и другие антиботские ограничения.
- Браузерный API: Полностью хостируемый браузер, позволяющий автоматизировать взаимодействие с любой веб-страницей.
Зарегистрируйтесь бесплатно и узнайте, какое из решений Bright Data лучше всего подходит для ваших нужд!