Имитация браузера с поддержкой cookie в PHP - PullRequest
3 голосов
/ 18 ноября 2008

Как я могу открыть веб-страницу и получить ее куки с помощью PHP?

Мотивация : я пытаюсь использовать feed43 для создания RSS-канала с веб-сайта HighLearn без поддержки RSS (веб-сайт удаленного обучения). Я нашел веб-страницу, содержащую содержимое фида, которое мне нужно проанализировать, однако для этого необходимо сначала войти в систему. К счастью, войти в систему можно с помощью запроса GET, так что это так же просто, как, например, fopen () ing "http://highlearn.website/login_page.asp?userID=foo&password=bar". Но мне все еще нужно получить файлы cookie, сгенерированные при входе в систему передать куки реальному клиенту (возможно, с помощью setcookie ()?), а затем перенаправить.

Ответы [ 3 ]

5 голосов
/ 18 ноября 2008

Для HTTP-клиента на стороне сервера вы должны использовать модуль cURL . Это позволит вам сохранять файлы cookie в нескольких запросах. Он также делает некоторые другие полезные вещи, такие как запросы на связывание (curl_multi) и прозрачную обработку перенаправлений.

Когда дело доходит до возвращения сеанса вашему пользователю, я не думаю, что это возможно. Вы должны быть в состоянии перезаписать файлы cookie других доменов. Это может вызвать серьезные проблемы с безопасностью, поэтому ни один браузер не сможет его реализовать.

1 голос
/ 18 ноября 2008

Я использовал компонент Scriptable Browser от Simpletest для такого рода очистки экрана. Он довольно хорошо симулирует браузер.

Вам не нужно передавать сеанс реальному клиенту (даже если может быть возможным, в зависимости от уровня безопасности сайта) - Вы можете просто позволить вашему PHP-скрипту быть прокси между целевым сайтом и вашим конечным пользователем.

0 голосов
/ 18 ноября 2008

К сожалению, это невозможно, если сайты не находятся в одном домене. Файлы cookie действительны только на том домене, с которого они были созданы. Также субдомены считаются разными доменами. В противном случае (имейте в виду, что я не использовал много php), вы можете извлечь заголовки из ответа и скопировать cookie на клиент.

...