|
0 / 0 / 0
Регистрация: 08.05.2017
Сообщений: 3
|
|||||||||||||
CURL, промежуточная страница с редиректом на 40408.05.2017, 19:37. Показов 3129. Ответов 5
Всем доброго времени суток.
Есть ресурс: disk-space.ru Открываем через любой браузер: попадаем на промежуточную страницу "Идет загрузка страницы, подождите" с таймером 4 сек. После чего нас успешно редиректит на сайт. Я в сетевых технологиях не шарю, php только осваиваю параллельно с поставленной задачей, соответственно и cURL для меня механизм далеко не освоенный. Хотя попарился я со своей задачей изрядно, решаю я ее уже битый день. Многому научился, но проблема не сдвигается с места!! Как можно было уже догадаться, проблема: не могу забрать целевую страницу с этого disk-space.ru!! Насколько я понял, cURL применяют с имитацией заголовков запроса браузера. Есть подобная проблема, которая решена, на этом же форуме по ссылке Не достучаться до сайта используя Curl. Ошибка 404 not found/ Не нашел подробную информацию в сети, как грамотно составлять запросы, имитирующие браузерные, от и до, до достижения всегда необходимой страницы. Часто, видимо, бывает достаточно стандартного cURL запроса с одной лишь опцией URL. Либо вообще обходятся известной функцией - file_get_contents($url). По ссылке на подобную проблему выше: там все просто, нет ПРЕДВАРЯЮЩЕЙ страницы, дополнительных редиректов. Именно этим осложняется мой случай. Даже на основную страницу - http://disk-space.ru - попадаешь через промежуточную "Идет загрузка" с таймером - ЕСЛИ НЕТ КУКОВ (о куках далее). Простым cURL запросом без лишних опций мы получаем эту промежуточную страницу. cURL запрос сделан и завершен. А полученная страница по истечении таймера просто редиректует нас на ОТНОСИТЕЛЬНУЮ ссылку "/cdn-cgi/l/chk_jschl...", где вместо многоточия идут ключи с ответами, отправленные из формы. То есть промежуточная страница имеет скрытую форму с уже сгенерированными двумя случайными значениями для инпутов name=value, а также есть javascript для таймера и javascript, генерирующий третье случайное число, которое идет как value для третьего инпута формы без предустановленного value, после чего функция джаваскрипта f.submit() отправляет форму GET-запросом, и мы попадаем на что-то вроде: "/cdn-cgi/l/chk_jschl?jschl_vc=e6b053d3854b567b3dbba 2261929eaaf&pass=1494161963.724-KX8vlWihJr&jschl_answer=1129". А так как такой страницы нет на локалхосте или на удаленном хостинге, мы получаем ошибку 404. Возникает понимание, что нужен второй cURL запрос. Я сделал 2 php-страницы. На первой странице происходит первый cURL запрос, получаем страницу ожидания. Также здесь я через preg_replace заменил относительный адрес (action отправочной формы) - /cdn-cgi/l/chk_jschl - на адрес своей второй страницы. Это сделано для удобства получения целого адреса со всеми ключами - переход на 2ю страницу, и я достаю его из браузерной строки (т.к. метод GET) посредством $_SERVER['REQUEST_URI'] с удалением приставки названия моей второй страницы. Здесь же я делаю второй запрос cURL, подробный, с множеством опций и браузерными заголовками. Я через Firefox в консоли Firebug посмотрел второй запрос (полный адрес со всеми ключами) и сделал точь-в-точь. УВЫ, целевая страница так и не достается мне!!! Для первой своей страницы переписывать заголовки с Firebug'а не стал. По кукам: при первом обращении, как я уже сказал, мы попадаем на промежуточную страницу ожидания со скрытой формой отправки методом GET на относительный адрес. И получаем первый кукис "cfduid". В момент отправки формы происходит переход по адресу "/cdn-cgi/l/chk_jschl..." со статусом 302 Moved Temporarily (Firebug), сервак делает нам второй кукис "cf_clearance", затем редирект на целевой адрес - и вот мы на нужной странице! Это через браузер. Что у меня: вторая страница делает запрос, и тут у меня было 2 варианта: либо пустая страница, либо СНОВА промежуточная страница ожидания - и вылет на поганую 404. Если FOLLOWLOCATION выставить false, то белая страница с жирным уведомлением "302 Moved Temporarily"; в этом случае и в первом варианте (пустая страница) как будто бы наблюдается какой-то успех, однако второго кукиса не создается. Приведу HEADER промежуточной страницы при первом запросе:
При втором запросе во втором моем варианте (когда повторно получаю страницу ожидания и вылетаю на 404) HEADER следующий:
Проверяю я в основном со своего компа (Denwer, "localhost/..."). Есть хостинг, там в принципе то же самое, но геморройно постоянно заливать страницы и редактировать. В начале темы привел пример подобной головной боли, но там все гораздо проще, человеку сказали в заголовках убрать User-agent и Referer и сделать его опциями cURL-запроса - и автор говорит, что все получилось! Я же что только ни подставлял, ни мешал в значениях. Вплоть до того, что сносил/восстанавливал крайний слеш для какого-нибудь там реферера... Я просто исчерпал весь свой опыт в этой сфере. Заголовки для браузера для меня стали в новинку, когда я продвигался в решении проблемы. В Firebug со страницы ожидания (статус 503) происходит переход на адрес готового вида со всеми ключами: "http://disk-space.ru/cdn-cgi/l/chk_jschl?jschl_vc=8265cdd0fbcb4f62679e2 02229b76997&pass=1494153842.072-lzRbZ7x7bB&jschl_answer=447448". Статус - 302. Браузер отдает среди прочих заголовков заголовок Cookie (первый кукис), а сервер ему дает "Location: http://disk-space.ru/" и генерит второй кукис - и браузер переходит на главную страницу сайта. Аки "фейс-контроль прошел". В чем у меня тогда дело-то??? Я и в первом, и во втором запросах проставлял опции COOKIEJAR и COOKIEFILE. Получаю только первый кукис - при первом обращении (страница ожидания). Второй кукис не генерировался ни в одном из моих случаев. Я даже, усомнившись в действии COOKIEJAR и COOKIEFILE, замутил код вытаскивания строки кукиса из файла для передачи ее в заголовках по заголовку Cookie (в Firebug есть такой заголовок во втором обращении). В общем, кто что подскажет? Речь идет о любой странице сайта disk-space.ru, я пытаюсь забрать главную, хотя цель другая, но получить главную - как простейший случай для начала. Вот мои две несчастные страницы: Первая
Вторая
Неужто мой случай - самый сложный в опыте парсинга сайтов с cURL? Сам ресурс, на который ломлюсь, что характерно, довольно халявно смотрится выполненным и обладает не лучшей репутацией. Буду очень благодарен за помощь.
0
|
|||||||||||||
| 08.05.2017, 19:37 | |
|
Ответы с готовыми решениями:
5
Промежуточная страница
Страница 404 |
|
313 / 312 / 221
Регистрация: 11.07.2015
Сообщений: 1,107
|
|
| 09.05.2017, 19:23 | |
|
Сначала нужно получить разрешение владельца сайта на применение парсера curl
0
|
|
|
0 / 0 / 0
Регистрация: 08.05.2017
Сообщений: 3
|
|
| 14.05.2017, 00:03 [ТС] | |
|
А разве cURL не является той самой технологией, которая спокойно минует всякие ограничения владельцев сайтов?
0
|
|
|
313 / 312 / 221
Регистрация: 11.07.2015
Сообщений: 1,107
|
|
| 14.05.2017, 20:45 | |
|
Если он поставил защиту, значит не хочет, чтобы его сайтом пользовались роботы. Насилие в отношении других людей, а также содействие насилию может привести к заболеваниям.
0
|
|
|
0 / 0 / 0
Регистрация: 08.05.2017
Сообщений: 3
|
|
| 14.05.2017, 23:01 [ТС] | |
|
plohoyav, насилие может привести к заболеваниям? Серьезно? К каким, например?
Если нечего дельного сказать по сабжу, то, как правило, проходят мимо. Но ты молодец, что написал. Возможно, еще не все так запущено, и визит к психиатру может спасти от дальнейшего развития заболевания межушного нервного узла. Скорее в ПНД! Если шиза, то еще немного, и роботы начнут совершать насилие в отношении людей, и никакая защита не спасет роботов от неизбежных заболеваний! Бедные роботы!... Ник наверно тоже неспроста, плохо наяву, когда шиза, нечего и добавить тут. Побольше галоперидола, и сон, сон, целебный сон... Психиатр в общем разберется там.
0
|
|
|
313 / 312 / 221
Регистрация: 11.07.2015
Сообщений: 1,107
|
|
| 15.05.2017, 07:46 | |
|
Например, люди, которые оказывают давление на окружающих, сами страдают от повышенного артериального давления.
Согласно закона человек обязан помогать окружающим, в частности тонущим. Уши психиатор не лечит, уши лечит послушание окружающих. Сон не является целебным, по статистике люди, спящие 12 часов в день, живут на 10-15 лет меньше остальных. При входе на сайт http://disk-space.ru/ после счётчика происходит перенаправление и выводится ошибка Error establishing a database connection Видимо хостинг не справляется с нагрузкой.
0
|
|
| 15.05.2017, 07:46 | |
|
Помогаю со студенческими работами здесь
6
Страница 404 Не достучаться до сайта используя Curl. Ошибка 404 not found/ Возвращение 404 ошибки от ссылки Yandex через CURL Страница ошибки 404 Страница не найдена 404 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|