Комментарии 17
Думаю, да, в определенных ситуациях это и есть оптимальное решение.
Я puppeteer не пробовал, но попробовал Selenium, насколько я знаю, у них примерно одинаковый принцип работы. Добиться стабильной работы в связке с C# не получилось, и я пошел делать расширение. Если бы получилось — остановился бы на нем.
В puppeteer имеется аналог selenoid или selenium hub?
Последний год имел тесное знакомство с парсингом амазона, ебея и волмарта. Вот волмарт послал куда подальше с этой связкой.
Проблема в том, что headless браузер выдает отрицательный результат при одной из проверок. И это никак нельзя обойти, кроме как писать инъекцию в код сайта.
Однако, если запустить headful браузер, то проблемы нет. Так что просто запихнул все в докер, подрубил туда графическую оболочку, и пошло поехало. Спокойно на 1к проксей это обкатывал.
Ну и да, я бы отметил, что эмуляция браузера под каждый запрос страницы как правило не нужна. Я обычно проводил первичную инициализацию через браузер, сохранял куки, затем эти куки юзал в обычных хттп запросах. Затем если ловил капчу - вызывал браузер для ее решения.
Проблема в том, что headless браузер выдает отрицательный результат при одной из проверок. И это никак нельзя обойти, кроме как писать инъекцию в код сайта.
Мне интересно по какому параметру был детект, сможете припомнить?
А все, неактуально. Тут недавно статью написали, со способом обхода этой проблемы: https://habr.com/ru/post/716434/
Можно попробовать на самой странице по таймеру делать document.location.reload();
Что то типа такого (раз в 5 секунд)
reloader = setTimeout(reload, 5000);
function reload(){document.location.reload()
};
На linux можно обойтись без X-ов и танцев с фейковым монитором просто используя chrome-headless https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md
Спасибо за ссылку.
Возможно, я делаю что-то не так, но проверку cloudflare такой метод у меня не проходит.

Возможно, установить этот параметр в false будет достаточно для headless режима. А вообще, есть такая возможность? Протестирую, когда будет возможность.
Когда я исследовал работу Selenium, то дело было не в этом, там в контексте страницы появляется глобальная переменная вида "cdc_*", и требуется патч для драйвера.
Версия, которая, теоретически, не детектируется, не определяется при
первом посещении сайта запущенным браузером, но детектируется со второго
посещения. Почему — непонятно. Браузер нужно постоянно перезапускать.
Я видел пример такой реализации. Там код вебдрайвера загружался при первом обращении к его api, а не сразу при старте браузера. На самом деле самое эффективное прохождение cloudflare
Спасибо большое за туториал, сохранил на память. Парсил сайт под защитой Cloudflare, нужны были json в ответ на гет запрос. На удивление, хватило всего лишь подмены заголовка для проверки. А вот с доступам к изображениям такой подход не подошел, теперь есть над чем подумать и как реализовать обход.
Парсим сайты с защитой от ботов