|
|
|
| При соединении с удалённым сервером через сокет
<?php
$fp = fsockopen("localhost", 80);
$query ="GET http://site HTTP/1.0
Content-Type: application/x-www-form-urlencoded
User-Agent: Opera/9.23 (Windows NT 5.1; U; ru)
Referer:
Accept: image/gif, image/jpeg, */*
Accept-Charset: windows-1251
Cache-Control: no-cache
Connection: keep-alive
";
fwrite($fp, $query); // отправление запроса
$res = stream_get_contents($fp); // запись ответа в строку $res
fclose($fp); // закрытие соединения
$res = preg_replace("/^.+?\r\n\r\n/s", "", $res); // удаление заголовка ответа
echo $res; // отображение в браузер
?>
|
возвращается HTML-код страницы, без рисунков. Каким образом получить всё содержимое страницы? | |
|
|
|
|
автор: rusty_angel (09.02.2008 в 13:48) |
|
|
для: Alex14
(09.02.2008 в 11:32)
| | Так же, как это делают броузеры: парсить html, находить ссылки на изображения, скрипты, css, embed'ы, и т.д. и отправлять веб-серверу(ам) соответствующие запросы. | |
|
|
|
|
|
|
|
для: rusty_angel
(09.02.2008 в 13:48)
| | Так значит за одно соединение нельзя сразу весь контент забрать? Вместо того, чтобы парсить HTML, лучше наверное изменять соответствующие объекты JavaScript. Т.е. поменяли все адреса картинок и css-файлов (чтобы они грузились через вышеприведённый php-скрипт), и перезагрузили. Но как сделать перезагрузку? В смысле, не всего документа сразу (это опять приведёт в выводу голого html-кода), а отдельных объектов - рисунков, css-файлов и т.п. В JavaScript я не силён, может кто подскажет? | |
|
|
|
|
|
|
|
для: Alex14
(09.02.2008 в 16:16)
| | >Так значит за одно соединение нельзя сразу весь контент забрать?
За один http-запрос - нельзя.
Вы не сможете и за одно соединение.
>(чтобы они грузились через вышеприведённый php-скрипт)
И что Вы намерены получить в качестве результата? архив с контентом? | |
|
|
|
|
|
|
|
для: Trianon
(09.02.2008 в 16:50)
| | Да, правильней было написать "запрос". В интернет через местный прокси-сервер хожу, ставят ли на них ограничение на количество одновременно открытых соединений? | |
|
|
|
|
|
|
|
для: Alex14
(09.02.2008 в 16:59)
| | Цель - получить полноценную страницу в браузере. Но запросы-ответы сервера и клиента осуществляются через php-скрипт. Он нужен для возможности размещения прокси-скриптов на удалённых серверах. | |
|
|
|
|
|
|
|
для: Alex14
(09.02.2008 в 17:01)
| | браузер сам формирует нужный поток с запросами каждого из документов. | |
|
|
|
|
|
|
|
для: Trianon
(09.02.2008 в 18:34)
| | Ну и как же поток из браузера в скрипт направить? | |
|
|
|
|
автор: rusty_angel (10.02.2008 в 04:04) |
|
|
для: Trianon
(09.02.2008 в 16:50)
| | > За один http-запрос - нельзя.
> Вы не сможете и за одно соединение.
Вообще-то есть Connection: Keep-Alive | |
|
|
|
|
|
|
|
для: rusty_angel
(10.02.2008 в 04:04)
| | >> За один http-запрос - нельзя.
>> Вы не сможете и за одно соединение.
>Вообще-то есть Connection: Keep-Alive
Конечно. но:
a) в версии протокола 1.1 , а не 1.0
б) клиент может лишь запросить такое поведение, сервер же может и отклонить.
в) для реализации нужно знать протокол 1.1 (который сложнее 1.0 на два порядка) , а у автора темы даже базовых знаний не хватает.
C тем, что у Вас может получиться, я спорить не буду. | |
|
|
|
|
|
|
|
для: Alex14
(09.02.2008 в 11:32)
| | Существует ли функция, работающая так, чтобы поток от сервера исполнялся браузером. Т.е. чтобы не только html-код отображался, но ещё и заголовки ответа обрабатывались - например, куки устанавливались. В том способе, который я привёл в первом сообщении темы, заголовки просто уничтожаются, иначе они просто выведутся в браузер. | |
|
|
|
|
|
|
|
для: Alex14
(10.02.2008 в 20:36)
| | Вы же даже в коментарии написали "удаление заголовка ответа".
Удаление! А не разбор, интерпретация и исполнение!
Чему же Вы удивляетесь?
Браузер здесь не при чем.
Роль клиента исполняет ваш скрипт. | |
|
|
|
|
|
|
|
для: Trianon
(11.02.2008 в 00:49)
| | если всё-равно для браузера делаете , создайте второй скрипт, который будет ходить за картинками.
и замените в коде страницы адреса картинок на "./второйСкрипт?img=adres" | |
|
|
|