tregor
@tregor
Senior PHP Backend developer

Как обойти защиту Cloudflare при парсинге?

Приветствую!

Предстоит задача - парсить сайт, который защищён от парсинга средствами Cloudflare.
Т.е. обычный file_get_contents вернёт HTTP ошибку 403.

Немного разобравшись в принципах и устройстве данной защиты пришёл к тому, что Cloudflare проксирует запросы и перед тем, как выдать HTML код, выдаёт некую "невидимую" JavaScript капчу. По сути эта капча - JS код который отрабатывает сразу после загрузки и позволяет загрузить оставшуюся часть страницы.
При обычных запросах само собой JS у нас не отрабатывает.

Пошарив по нету нашёл несколько устаревших решений а-дя Guzzle Cloudflare bypass, однако ни одно из готовых решений запустить не удалось.

Если я правильно понял алгоритм, нам необходимо делать запрос через браузер с отработкой JS. Для этого, в теории, должен подойти консольный headless браузер.

Вопросы:
1. Что такое headless бразуер? Я плохо это понял и ранее с подобным не работал.
2. Как можно организовать многопоточность (Много...вкладочность?) через такой headless браузер?
3. Сработает ли вообще такой подход для обхода защиты Cloudflare?
4. Какие подводные камни ожидать?

P.S.: Сейчас сижу разворачиваю на второй машине Docker c chromium и буду проверять теорию, но дабы не терять время решил сразу закинуть вопрос на хабр. Кто может помочь любым ответом или комментарием - буду безмерно благодарен!
  • Вопрос задан
  • 3852 просмотра
Пригласить эксперта
Ответы на вопрос 2
@FasterTans
1. Что такое headless бразуер? Я плохо это понял и ранее с подобным не работал.
Selenium, Puppeteer
2. Как можно организовать многопоточность (Много...вкладочность?) через такой headless браузер?
Взависимости от выбранного браузере вбиваете в гугл "многопоточность selenium\puppeteer"
3. Сработает ли вообще такой подход для обхода защиты Cloudflare?
Да, погуглите как обходить защиту.
Ответ написан
Комментировать
@yoori
Мой подход :
запускаю docker из https://github.com/yoori/flare-bypasser
дергаю вызов /get_cookies с нужным url, далее с этими куками дергаю сайт через обычный python requests
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы