Предстоит задача - парсить сайт, который защищён от парсинга средствами 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 и буду проверять теорию, но дабы не терять время решил сразу закинуть вопрос на хабр. Кто может помочь любым ответом или комментарием - буду безмерно благодарен!
Как же вы задолбали, твари
Нормальному человеку уже шагу ступить в интернете нельзя, чтобы капчу не вводить на каждый чих
А им все мало - обязательно ручонки надо протянуть к чужому.
Психология пятилетнего кадавра - чтобы заработать себе копейку, надо засрать весь интернет другим людям, сделать так, чтобы провайдеры еще сильнее закрутили гайки. после нас - хоть потоп.
1. Что такое headless бразуер? Я плохо это понял и ранее с подобным не работал.
Selenium, Puppeteer
2. Как можно организовать многопоточность (Много...вкладочность?) через такой headless браузер?
Взависимости от выбранного браузере вбиваете в гугл "многопоточность selenium\puppeteer"
3. Сработает ли вообще такой подход для обхода защиты Cloudflare?
Да, погуглите как обходить защиту.
Мой подход :
запускаю docker из https://github.com/yoori/flare-bypasser
дергаю вызов /get_cookies с нужным url, далее с этими куками дергаю сайт через обычный python requests