Практический demo-проект для статьи: Node.js подключается к 2Captcha Browser API через CDP, управляет существующим browser context из профиля, ищет страницу 2captcha.com через Google, извлекает данные, решает demo reCAPTCHA v2 и сохраняет артефакты.
ARTICLE.md- готовая статья с объяснением и фрагментами кода.src/demo.js- полный demo-сценарий.src/list-profiles.js- безопасный вывод списка профилей без паролей и connection URI..env.example- пример переменных окружения без реальных секретов.artifacts/- сюда скрипт сохраняет screenshots,result.json,error.json.
npm installТак как имя 2CAPTCHA_API_KEY начинается с цифры, его неудобно экспортировать обычным export. Надежнее запускать через env:
env \
'2CAPTCHA_API_KEY=YOUR_2CAPTCHA_API_KEY' \
BROWSER_ACCOUNT_ID='YOUR_BROWSER_ACCOUNT_ID' \
BROWSER_PROFILE_ID='YOUR_BROWSER_PROFILE_ID' \
npm startДля пула профилей:
env \
'2CAPTCHA_API_KEY=YOUR_2CAPTCHA_API_KEY' \
BROWSER_ACCOUNT_ID='YOUR_BROWSER_ACCOUNT_ID' \
BROWSER_PROFILE_IDS='profile_id_1,profile_id_2,profile_id_3' \
npm startenv \
'2CAPTCHA_API_KEY=YOUR_2CAPTCHA_API_KEY' \
BROWSER_ACCOUNT_ID='YOUR_BROWSER_ACCOUNT_ID' \
npm run list:profiles- Не логировать API key, browser passwords, proxy passwords и
connectionUri. - Не использовать
networkidle. - Не строить сценарий на
waitForTimeout. - Получать свежий
connectionUriчерез/browser/connection. - Использовать существующий
browser.contexts()[0]. - Не создавать новый browser context.
- Один профиль поддерживает одно активное CDP-подключение.