Curl pars, защита cloudflare

semur123
На сайте с 06.12.2016
Offline
70
3064

Добрый день!)

Возможно вы знаете как парсить такие сайты.

Перед входом на сайт появляется вот это

Checking your browser before accessing animepace.si.

This process is automatic. Your browser will redirect to your requested content shortly.

Please allow up to 5 seconds…

ДП
На сайте с 23.11.2009
Offline
203
#1

Насколько понимаю - то парсить через боль и страдания.

Не помню точно cloudflare там был или какая-то аналогичная защита, но суть была в том, что там выполнялся код на js, который определял на selenium ли или что-то аналогичное у вас и ставил нужную куку. Кука, естественно каждый раз разная и код обфусцрован. В общем, пришлось в дополнение к selenium'у прикручивать еще Fiddler2 и фильтровать траффик, подменяя то ли сам js, то ли запрос, кторый js-скрипт в итоге посылал. Но у меня была разовая задачка - там такая доля ручного труда была оправдана.

Вам советую посмотреть на эту страничку в бразере и dev tools вкладка network или fiddler - чтобы понять, какие файлы там запрашиваются. А потом попвыряться с скриптах, чтобы понять, что там происходит.

MT
На сайте с 17.01.2017
Offline
22
#2

При помощи phantomjs парсится элементарно. Выставляешь нужный таймаут и забираешь страницу.

semur123
На сайте с 06.12.2016
Offline
70
#3

Добавил заголовки к curl, теперь работает на localhost, а на хостинге нет.

Почему?

tommy-gung
На сайте с 22.11.2006
Offline
287
#4

ты бы показал, что curl возвращает

Здесь не могла быть ваша реклама
semur123
На сайте с 06.12.2016
Offline
70
#5
tommy-gung:
ты бы показал, что curl возвращает

Warning: array_merge(): Argument #1 is not an array in

Warning: Invalid argument supplied for foreach() in

Он не может получить страницу, странно на openserver всё работает через куки

curl_setopt($curl, CURLOPT_ENCODING , "utf-8");

curl_setopt($curl, CURLOPT_HTTPHEADER, [Тут заголовки моего браузера]

Проблема на хостинге ? заметил версия php 5.5 сервера, а localhost 5.7

Aisamiery
На сайте с 12.04.2015
Offline
293
#6

semur123, версии 5.7 не существует если что

И ошибка у вас не в курл, а в том что у вас вместо массива какой то шлак лезет туда, где ожидается массив

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
semur123
На сайте с 06.12.2016
Offline
70
#7
Aisamiery:
semur123, версии 5.7 не существует если что
И ошибка у вас не в курл, а в том что у вас вместо массива какой то шлак лезет туда, где ожидается массив

Ну 5.6.23 хорошо

Я говорю что курл не может получить страницу .. и выдает ошибку.

Почему работает тогда на localhost этот код ?

Если убрать с заголовка 'accept-encoding:gzip, deflate, br', тогда работает localhost, с ним же выдает ту же ошибку на localhost

Возможно курл получает не utf-8 формат, и не может найти html теги?

Я пользуюсь регуляркой

Aisamiery
На сайте с 12.04.2015
Offline
293
#8

Вы показали ошибку функции слияния массивов array_merge и то что в цил foreach передаете не итерируемый элемент.

То что у вас где то работает, а где то не работает это не значит что вина не в вас, скорее всего вы просто не понимаете особо что делаете от сюда и ноги растут... как и руки :)

semur123
На сайте с 06.12.2016
Offline
70
#9
Aisamiery:
Вы показали ошибку функции слияния массивов array_merge и то что в цил foreach передаете не итерируемый элемент.

То что у вас где то работает, а где то не работает это не значит что вина не в вас, скорее всего вы просто не понимаете особо что делаете от сюда и ноги растут... как и руки :)

Мда... ///

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий