Intereting Posts
PHP включает () перед doctype, вызывая пробел обрабатывать несколько запросов по почте на тот же URL-адрес Laravel 5 Свободная память PHP после отмены PHP Twitter Hashtag Search не показывает результаты в синтаксическом анализе, но данные присутствуют в массиве Как уничтожить сеанс с закрытием браузера в codeigniter 3 Как закодировать php-функцию или задать параметры для возврата значений высоты NO для изображений? PHP / CodeIgniter – установка переменных в __construct (), но они недоступны из других функций загрузить файл внутри формы html Как установить переменную сеанса при нажатии ссылки <a> CodeIgniter $ _POST данные пустые Как извлечь только текст из строки HTML с PHP? Как передать данные между страницами в PHP? Yii :: app () -> user-> isAdmin () неправильно работает на странице макета Регулярное выражение PHP для соответствия буквенно-числовым строкам с некоторыми (но не все) пунктуациями Программно построение htpasswd

PHP cURL: HTTP-заголовки показывают 302 и файлы cookie, файлы cookie сохраняются и отправляются, появляются одни и те же заголовки?

Это отвлекает внимание от вопроса, заданного вчера: Кажется, не удается получить содержимое веб-страницы через cURL – пользовательский агент и HTTP-заголовки оба установлены?

Я пытаюсь получить доступ к содержимому url, проблема в том, как этот URL обрабатывает запрос.

URL: http://www.deindeal.ch/deals/atlas-grand-hotel-2-naechte-30-2/

Первый запрос (без файлов cookie):

После «обучения» использовать завиток в командной строке (реквизит на @ d3v3us), простой запрос curl -i http://www.deindeal.ch/deals/atlas-grand-hotel-2-naechte-30-2/ показывает следующее:

 curl -i http://www.deindeal.ch/deals/atlas-grand-hote l-2-naechte-30-2/ HTTP/1.1 302 FOUND Date: Fri, 30 Dec 2011 13:15:00 GMT Server: Apache/2.2.16 (Debian) Vary: Accept-Language,Cookie,Accept-Encoding Content-Language: de Set-Cookie: csrftoken=edc8c77fc74f5e788c53488afba4e50a; Domain=www.deindeal.ch; Max-Age=31449600; Path=/ Set-Cookie: generic_cookie=1; Path=/ Set-Cookie: sessionid=740a8a2cb9fb51166dcf865e35b91888; expires=Fri, 27-Jan-2012 13:15:00 GMT; Max-Age=2419200; Path=/ Location: http://www.deindeal.ch/welcome/?deal_slug=atlas-grand-hotel-2-naechte- 30-2 Content-Length: 0 Connection: close Content-Type: text/html; charset=utf-8 

Второй запрос (с куки-файлами):

Итак, я сохраняю файл cookie с помощью -c , проверяю, что он сохраняет cookie.txt и снова запускает запрос с добавлением -b cookie.txt , получая следующее:

 curl -i -b cookie.txt http://www.deindeal.ch/deals/atlas-grand-hotel-2-naechte-3 0-2/ HTTP/1.1 302 FOUND Date: Fri, 30 Dec 2011 13:38:17 GMT Server: Apache/2.2.16 (Debian) Vary: Accept-Language,Cookie,Accept-Encoding Content-Language: de Set-Cookie: csrftoken=49f5c804d399f8581253630631692f5f; Domain=www.deindeal.ch; Max-Age=31449600; P ath=/ Location: http://www.deindeal.ch/welcome/?deal_slug=atlas-grand-hotel-2-naechte-30-2 Content-Length: 0 Connection: close Content-Type: text/html; charset=utf-8 

Для меня это похоже на то же содержимое, минус один или два параметра в cookie, но, может быть, я что-то пропускаю?

Я пытаюсь заставить запрос curl функционировать и возвращать то же содержимое, что и при запросе этого URL-адреса через браузер, но я не уверен, что делать дальше.

Примечание. Я пометил этот PHP, поскольку я использую PHP для запросов, я просто использую командную строку, чтобы легко отображать возвращенные заголовки, поэтому, если есть другие библиотеки или методы PHP, которые будут работать (лучше или в место, которое cURL не будет), пожалуйста, не стесняйтесь предлагать какие-либо.

Любая помощь будет очень признательна;).

Ты нуждаешься в этом,

 curl -iL -c cookie.txt -b cookie.txt http://www.deindeal.ch/deals/atlas-grand-hotel-2-naechte-3 

-b используется для чтения файлов cookie. Для файла, который будет использоваться для сохранения cookie после использования транзакции http, используйте флаг -c . Его назвали кукурузой .

Использование WebGet (извините, написанное мной), потянув содержимое, довольно просто.

 require "WebGet.php"; $w = new WebGet(); $w->cookieFile = 'cookie.txt'; // must be writable $w->requestContent("https://github.com/shiplu/dxtool"); print_r($w->responseHeaders) // prints response headers print_r($w->cachedContent) // prints url content 

Возможно, я не понимаю ваш вопрос, но ответ 302 означает найденный контент, и вам просто нужно следовать правилу «Местоположение»? cUrl выполнит только один запрос, в отличие от вашего браузера, который увидит, что 302 (установите куки-файлы, как и вы, затем следуйте этому заголовку местоположения). Похоже, ваше местоположение имеет «?» в нем нет в оригинале. Запустите cUrl, с тем же банком cookie, на URL-адрес местоположения.

http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection