Имитация браузера с поддержкой cookie в PHP

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

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

3 ответа

Решение

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

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

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

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

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

Другие вопросы по тегам