Добрый день.
Стоит задача спарсить сайт, который защищен cloudflare. Желательно на php.
Первым делом я взял postman и отправил get запрос на получение нужной страницы через него. И получил нужный результат! После чего я попробовал запросить контент через file_get_contents и ожидаемо получил 403 ошибку. Значит cloudflare все таки работает. Тогда я попробовал спарсить через curl с сохранением куков. Через курл результат получился: "Just a moment... Checking if the site connection is secure".
На этом моменте я застрял и пошел гуглить как все это работает. Нагуглил информацию, что cloudflare посылает в браузер js скрипт. Отработал - значит норм, нет - бот. Решил это проверить. Запустил оперу, отключил у нее js и куки и чтобы вы думали? Сайт прекрасно открывается! Пол сайта не работает (т.к. на js) но вся нужная информация отображается, никаким cloudflare не пахнет. Я решил скопировать весь запрос как curl (чтобы и юзерагент там был такой же, и всякие прочие параметры), но у меня результат все тот же: "Just a moment".
Гуглил, что есть системы обхода на питоне, есть хедлесс браузеры. Нагуглил инфу, что мол cloudflare обойти легко, достаточно перехватить математический пример на js, решить его и вернуть. А еще кто-то сказал, что достаточно 5 секунд выждать. В итоге 5 секунд я выжидал благодаря sleep(5) - результата нет, а что за математический пример и где его взять - я не понял.
Так что я уже запутался. Скажите, на php вообще реально написать такой парсер? и если да, то что для этого надо делать? Спасибо.
Дополнительно:
Содержание
Попросите владельца отключить Cloudflare
Ответы:
можно. но придется повозиться. cloudflare будет тригерится на любую как ему кажется подозрительную активность, как то серверный ip, частые обращения и так далее. пробуйте через headless браузеры + php-webdriver/php-webdriver или chrome-php/chrome или еще чего то подобное
- правильно же я понимаю, что при работе с хедлесс браузерами необходимо наличие реального? Например, если используем chrome-php/chrome , то необходимо, чтобы на компе был установлен хром, верно? Как быть в случае, если на локальном компе я работаю в докере? Есть какие-то минифицированные версии без gui для alpine?
- lolrofl01,
1. headless браузеры это реальный браузер просто без реальной отрисовки на экране.
2. вы можете взять селеноид - все возможные браузеры в докере. Но вообще стоит искать сборку которая прячет информацию о том что браузер запущен в режиме автоматизации, потому что некоторые по ней блочат обращения к сайту - например Imperva Incapsula
Пробей домен по сканерам субдоменов, подсетей итд - высока возможность найти чистый ип если сервис не сильно большой
- реальный я нашел, но по нему вылезает 403 ошибка. Видимо закрыли. Сервис большой - один из крупных онлайн маркетплейсов.
- lolrofl01, не дураки там сидят значит. Тогда да, только хедлес
Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.
Оставить комментарий Отменить
Ответы
- Есть ответ! к записи Как уменьшить масштаб меньше 100% в Windows 10 (22H2)
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Как называется человек, который дизайн придумает для сайта и сверстает его?
- Есть ответ! к записи Можно ли установить Яндекс.Диск на АльтЛинукс?
- Есть ответ! к записи Картинки мутные только на сафари, есть выход?
- Есть ответ! к записи Keenetic. Как настроить SSTP клиент с сертификатом?
- Есть ответ! к записи Чем заменить executor в aiogram 3?
Для парсинга сайтов, защищенных Cloudflare, с использованием PHP, можно использовать следующий подход.
1. Используйте библиотеку GuzzleHttp для отправки HTTP-запросов. Установите ее с помощью Composer, добавив зависимость в файл composer.json:
2. Далее, создайте скрипт, который будет отправлять GET-запрос к целевому сайту. Обязательно добавьте заголовки, которые помогут обойти защиту Cloudflare. Пример кода:
3. После этого необходимо обработать полученный HTML-код с помощью парсера, например, библиотеки PHP Simple HTML DOM Parser. Установите ее также с помощью Composer:
4. Пример использования PHP Simple HTML DOM Parser для поиска и вывода всех ссылок на странице:
Таким образом, используя вышеперечисленные шаги и библиотеки, вы сможете парсить сайты, защищенные Cloudflare, на PHP.