Closer to the Metal: Leaving Playwright for CDP
Прощай, Playwright — здравствуй, CDP
Мы отказались от Playwright и перешли на «родной» Chrome DevTools Protocol. Это ускорило извлечение элементов, скриншоты и действия, добавило асинхронные реакции и нормальную работу с кросс-доменными iframe.
Проклятие абстракции
Playwright скрывает важные детали, вносит лишнюю задержку через WebSocket-прокси и не нужен для узких задач AI-агентов. Мы решили реализовать только нужные вызовы сами.
Краткая история автоматизации браузеров
- 2011–2017: PhantomJS → Chrome Remote Debugging → WebKit RDP → CDP.
- 2017: Headless Chrome + Puppeteer.
- 2018: WebDriver стал W3C-стандартом.
- 2020: бывшие разработчики Puppeteer создали Playwright.
- 2023–2024: WebDriver BiDi в ChromeDriver и Puppeteer.
Современные драйверы
pydoll, go-rod, chromedp, puppeteer, playwright, selenium, cypress, appium.
Но ни один не подошёл, поэтому мы написали собственный cdp-use
.
Комментарии (103)
- Автор перенёс Playwright, Browser Use и Selenium в расширения Chrome, отказавшись от CDP и полагаясь на DOM- и extension-API.
- Сообщество спорит: кто-то считает это «NIH-синдромом», другие — полезным способом избежать фингерпринтинга и ускорить работу.
- Поднимаются вопросы о Firefox (без CDP), ограничениях расширений и невозможности автоматизировать другие расширения.
- Некоторые напоминают, что Selenium/подобные инструменты работали уже до 2011, и «тёмные века» — субъективны.
- Итог: проект пока ориентирован на Chromium-браузеры, CDP всё ещё используется для снимков и фреймов, а полный переход на extension-only решает не все задачи.
Why are anime catgirls blocking my access to the Linux kernel? 🔥 Горячее 💬 Длинная дискуссия
Anubis — «весы душ» для HTTP-запросов, защищают сайты от ИИ-ботов. Вместо CAPTCHA требует перебора nonce, чтобы SHA-256(challenge+nonce) начиналась с 4 нулей (16 бит). Это Proof-of-Work, как в биткоине, но не майнинг.
Проблема: задача легка для дата-центра ИИ, но трудна для обычных пользователей без мощного железа.
Сайты ядра Linux (git.kernel.org, lore.kernel.org) теперь требуют этот PoW, что ломает скрипты и консольные клиенты.
Цифры
- Сложность 4 → 2¹⁶ ≈ 65 536 SHA-256 на токен.
- Токен живёт 7 дней.
- 11 508 «звёзд» GitHub ≈ столько сайтов с Anubis.
- На бесплатной e2-micro GCP: 3688 кБ/с SHA-256 → ≈ 230 000 хэшей/с.
- Для обхода всех сайтов за неделю: 11 508 × 65 536 ≈ 754 млн хэшей → 54 минуты CPU на одном ядре.
Цена: копейки, даже в облаке. ИИ-вендору это ничто, а владельцу VPS-128 МБ — проблема.
Альтернативы
- Rate-limit, WAF, robots.txt, API-ключи, CDN, client-cert.
- Использовать Tor Browser (JS включён) или Selenium.
- Патчить curl/wget, добавляя JS-движок или готовый PoW-скрипт.
- Прокси-браузер (Puppeteer, Playwright) в headless-режиме.
Workarounds
anubis-pass
— консольный майнер на Go, решает задачу и выдаёт cookie.- Пользовательские скрипты, которые запрашивают страницу, вычисляют PoW и продолжают сессию.
Комментарии (770)
- Anubis — это PoW-заглушка, которая заставляет клиента выполнить небольшой вычислительный «тест» и получить токен на неделю; таким образом сервер получает идентификатор для рейт-лимита и борется с массовым «распылением» запросов ботами.
- Многие участники считают, что PoW легко обходится при наличии вычислительных ресурсов, но пока большинство AI-краулеров просто не стали заморачиваться, поэтому Anubis «работает» в реальности, хоть и не идеален.
- Критика: задержки 10–20 с на слабых устройствах, проблемы с доступом без JS, «аниме-девочка» вызывает у кого-то раздражение, а у кого-то ностальгию.
- Часть комментаторов предлагает альтернативы: микроплатежи, «человеческие» вопросы, лабиринты-ловушки, VPN-сети или просто блокировки по ASN.
- Самое главное: Anubis не решает проблему окончательно, но добавляет достаточно трения, чтобы заставить владельцев краулеров пересмотреть объёмы сканирования.