Как мы форкнули undetected-chromedriver и добавили SOCKS5, мультипроцессинг и модуль капчи
Dark_bear 3 минуты назад Как мы форкнули undetected-chromedriver и добавили SOCKS5, мультипроцессинг и модуль капчи Уровень сложности Средний Время на прочтение 8 мин Охват и читатели 28 Python * Браузеры Google Chrome...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. Dark_bear 3 минуты назад Как мы форкнули undetected-chromedriver и добавили SOCKS5, мультипроцессинг и модуль капчи Уровень сложности Средний Время на прочтение 8 мин Охват и читатели 28 Python * Браузеры Google Chrome Управление разработкой * Обзор Парсинг сайтов как мы зделали rtfox-browser — форк undetected-chromedriver с поддержкой SOCKS5 ⚠️ Статья носит познавательный и развлекательный характер. Автор не призывает к нарушению правил сервисов. Недавно мы столкнулись с темой парсинга.
Начали искать инструменты — BeautifulSoup, Selenium, Playwright, Puppeteer. Сразу скажу: мы не конкуренты этим библиотекам, далее объясним почему. Нам нужно было обойти CloudFlare, запускать несколько процессов одновременно, и чтобы на каждый процесс был свой SOCKS5 прокси с авторизацией.
Технические детали
Как мы нашли отправную точку Нам попалась библиотека undetected-chromedriver . Библиотека перестала поддерживаться разработчиком, но функционал сохранялся. При первом запуске сразу столкнулись с ошибкой — проблема была в патчинге ChromeDriver и его скачивании.
После исправления запуск удался и капча была пройдена. В дальнейшем возникли проблемы с SOCKS5 и многопроцессорностью. Тогда пришла мысль: почему бы не взять эту же библиотеку, прикрутить прокси и добавить многопроцессорность?
Но чтобы это осуществить, нужно сначала понять как вообще всё работает. Как устроена цепочка Chrome → ChromeDriver → Selenium Прежде чем рассказывать что мы сделали — разберём архитектуру изнутри. exe Обычный браузер при запуске открывает WebSocket-сервер на каком-то порту и слушает команды DevTools Protocol (CDP).
Отраслевые последствия
Через WebSocket можно отправить например: { "id": 1, "method": "Page. navigate", "params": {"url": " } Звено 2 — ChromeDriver ChromeDriver — это отдельная программа, которая работает как переводчик между вашим кодом (Selenium) и браузером Chrome. Вы пишете на Python driver.
get(" ") , Selenium превращает это в HTTP-запрос и отправляет ChromeDriver. А ChromeDriver уже объясняет Chrome на его родном языке (DevTools Protocol) что нужно открыть страницу. ChromeDriver одновременно является: HTTP-сервером (слушает порт, принимает команды от Selenium) WebSocket-клиентом (подключается к Chrome, отправляет CDP-команды) Звено 3 — Selenium Selenium — это библиотека для Python которая позволяет программно управлять браузером.
Selenium не управляет браузером напрямую — он отправляет команды ChromeDriver, а тот уже разбирается с Chrome. Полная цепочка запуска Ваш код: driver = webdriver. Chrome() ↓ Selenium запускает ChromeDriver.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





