PHP cURL: HTTP заголовки показывают 302 и куки установлены, куки сохранены и отправлены, появляются те же заголовки? - PullRequest
2 голосов
/ 30 декабря 2011

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

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

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

Первый запрос (безкуки):

После «обучения» использованию curl в командной строке (props to @ 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):

Итак, я сохраняю файл 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 не будет), пожалуйста, не стесняйтесь предлагать любые.

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

Ответы [ 2 ]

1 голос
/ 30 декабря 2011

Это необходимо, флаг

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
0 голосов
/ 30 декабря 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...