Как стать автором
Обновить

Комментарии 31

Ну в общем-то все эти Chrome-драйверы есть обёртки для встроенного в Chrome Remote Debugging Mode. В Puppeteer можно явно указывать, к какому адресу/порту коннектится. Там, кстати, тоже есть свой stealth - puppeteer stealth plugin

О как. Большое спасибо! Никогда не вникал в подноготную ChromeDriver’ов. Значит, путь всё тот же, но браузер получается более «голый», не обвешанный «следами» Selenium.

Всё это не так просто. Насколько я понимаю, даже голый Хром в headless режиме оставляет следы. И эти stealth плагины борятся не столько со следами от Chrome- драйверов, сколько от самого Chrome. Есть сайты, на которых можно проеверить свой Хром на предмет известных следов headless режима, например вот

Вообще puppeteer спокойно может запускать любой chromium-based браузер установленный в системе. То есть оригинальный хром, или яндекс браузер например, со всем, что есть внутри него.

Интересно. Прочитал про puppeteer. По сути он оперирует через тот же протокол Chrome Dev Tools, только более уверенно и с поддержкой всех обновлений. Смотрю, и порт под .NET есть https://www.puppeteersharp.com/ Нужно будет проверить, возможно, уменьшит необходимость вручную модифицировать legacy-библиотеку, как я это делал в статье.

Он может и через firefox работать, но там есть нюансы в апи, которые надо учитывать

Как оказалось, дело здесь даже не в .NET, не в порте библиотеки под .NET, и не в том, что какой-то service не смог стартануть на localhost. И в экосистеме Python давно знают об этом. Cloudflare научился обнаруживать даже UndetectedChromeDriver, и теперь есть новое решение - stealth-обёртка. Можно обернуть свой ChromeDriver в stealth, и никакой Cloudflare об этом не узнает! В данном случае, портов под .NET я не нашёл, но, возможно, это и к лучшему.

О, спасибо. Пригодится. Плюс

Сложноватый путь. Я парсил озон обычной библиотекой selenium, через debug port. Браузер запускается чистый, единственно cloudflare засекает использование chrome devtool. Но это обходится отключением драйвера от браузера на время проверки. А вот PerumetrX капча - вот это жесть...

Известно как они технически это делают?

Кто они? Как cloudflare засекает selenium? Там проверяются переменные с помощью js, которые selenium оставляет в среде. Проверяется useragent, headers. Если норм, то потом делается рукопожатие браузера. Рукопожатие вроде бы содержится в самом движке chromium браузера. А он то знает управляют им или нет.

Очень не конкретно выразился, сори.
Вопрос касался вот этого фрагмента "единственно cloudflare засекает использование chrome devtool". С детектом selenium все более или менее понятно, он просто много следит, но как он определяет devtool подключение не совсем понятно.

Предполагаю, что с помощью размера экрана, открытый девтул по дефолту занимает X пикселей в высоту

Мы говорим про подключение через порт протокола. а не открытия devtools. Я вот жду ответа от @Bagir123

предлагаю зайти с помощью Selenium сюда https://www.browserscan.net/ru/bot-detection.
Как это засекается не знаю, но факт осатется фактом

Мы же говорили не о Selenium, а о DevTool.

"единственно cloudflare засекает использование chrome devtool"

Не знаю о чем Вы говорили, я говорил о Selenium, что он использует Dev Tools. В отличии от того, что утверждается в статье обычным Selenium можно парсить Ozon через chrominium браузер с контролем его через debug port без использования хакерских библиотек типа Selenium Stealth.

Зачем такие сложности, если есть ZennoPoster и BrowserAutomationStudio , которые обходят и решают Cloudflare ?

Спасибо. Смотрю, что ZennoPoster вроде бы платный. BrowserAutomationStudio существует и в бесплатной версии. Надо будет попробовать, но хочется не решать Cloudflare, а именно его обходить.

Я парсил 1.3 миллиона страниц сайта с решением hCaptcha. Тренировал как-то неделю нейросеть CapMonster для решения особенной текстовой капчи, для парсинга 4,3 миллиона страниц. Решать, не решать. У самурая нет цели, только путь.

Как странно видеть manual reset event и Task.Run вместе

Скелет кода был взят из примера в github-репозитории, который не обновлялся около 6 лет. Буду благодарен за пример более современного варианта для достижения тех же целей.

Спасибо, подход интересный. Из статьи только не понял, поддерживает ли при таком способе автоматизированный переход на другие страницы?

Ну по идее в самом протоколе есть метод Page.navigate. Мне он с дефолтной страницы Chrome не давал двинуться далее, т.к. блочил по same-Origin policy. Но я смотрю, что у него в параметрах можно передавать referrerPolicy, можно попробовать поиграться с этим.

Лично я в своих проектах использую CloudScraper для Python, и этого достаточно.

Мы для задач по работе с веб-сервисами автоматически (не парсинг, а замена/упрощение человеческого труда) используем playwright.dev - разрабатывается Microsoft, поэтому .NET нативный. Работает так же по портам браузера.

Так как мы не боты, а работаем легально, то мы можем связываться с разработчиками сервисов для помощи. Работаем с банками, и вот однажды залетели, что пришлось реально просить помощи и просить добавить нас во все белые списки, чтобы не блокировали. Защита была отечественная. Не реклама, но вдруг кому интересно, то qrator.ru - ребята из Сколково.

Привет! Вместо стандартного движка Selenium WebDriver использую undetected_chromedriver, отлично обходит CloudFlare.

Это хорошо. По ответам смотрю, что в экосистеме Python вариантов тьма. Я пробовал конкретно этот способ затянуть в .NET, тем более и порт библиотеки есть. Но столкнулся с проблемами, описанными а статье.

С конца 2023 у меня uc перестал обходить защиту CloudFlare

До этого работало

Pupetter + 2captcha.com. Да, это будет обходится в 100/200 р за 1000 каптч, но это работает точно и всегда.

CDP на продакшн хроме + мобильные прокси - вот и весь секрет практически гарантированного обхода любых детектов.

А самый простой вариант реализации связки - через Playwright.

а что этот метод не может обойти?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории