броузер подменяет мои "$headers" в Get запросах, что делать?

RigVan

Постоянный член клуба
броузер подменяет мои "$headers" в Get запросах, что делать?

Проблема в следующем:
мне нужно с localhost отослать GET запрос на один сервер и получить от него ответ...

Для этого я составил следующий скрипт:
<?php
$host = "www.thefreedictionary.com";
$path = "/table";
$fp = fsockopen($host,80,$errno,$errstr,30);
if(!$fp) echo"$errstr ($errno)<br />\n";
else{

$headers = "GET /table HTTP/1.1";
$headers .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.50";
$headers .= "Host: www.thefreedictionary.com";
$headers .= "Accept: application/xhtml+voice+xml;version=1.2, application/x-xhtml+voice+xml;version=1.2, text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1";
$headers .= "Accept-Language: ru, en";
$headers .= "Accept-Charset: windows-1251, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1";
$headers .= "Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0";
$headers .= "Connection: Keep-Alive, TE";
$headers .= "TE: deflate, gzip, chunked, identity, trailers";


fwrite($fp,$headers);
while($text != "\r\n") $text = fgets($fp,128);
$text = "";
while(!feof($fp)) $text .= fgets($fp,4096);
fclose($fp);
}
echo $text;
?>

через броузер вызываю скрипт, а он гад, подменяет мои "$headers", и пишет свои:

(Request-Line):GET /mysite/connect.php HTTP/1.1
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.50
Host:localhost
Accept:application/xhtml+voice+xml;version=1.2, application/x-xhtml+voice+xml;version=1.2, text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language:ru, en
Accept-Charset:windows-1251, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1
Accept-Encoding:deflate, gzip, x-gzip, identity, *;q=0
Connection:Keep-Alive

Естественно ни какого ответа от сервера я не получаю. Чего можно сделать ума не приложу :(
 

realman

Новичок
как насчет переводов строк в хэдерах?
\n - в конец каждой строки $headers.
 

RigVan

Постоянный член клуба
realman
они и так есть, но это ни что не меняет...
 

realman

Новичок
Автор оригинала: RigVan
realman
они и так есть, но это ни что не меняет...
PHP:
$headers = "GET /table HTTP/1.1";
$headers .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.50";
$headers .= "Host: [url]www.thefreedictionary.com[/url]";
$headers .= "Accept: application/xhtml+voice+xml;version=1.2, application/x-xhtml+voice+xml;version=1.2, text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1";
$headers .= "Accept-Language: ru, en";
$headers .= "Accept-Charset: windows-1251, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1";
$headers .= "Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0";
$headers .= "Connection: Keep-Alive, TE";
$headers .= "TE: deflate, gzip, chunked, identity, trailers";
покажи хотя бы один в вышеприведенном коде.
 

RigVan

Постоянный член клуба
realman
Поверь на слово :)
$headers = "GET /table HTTP/1.1\r\n";
$headers .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.50\r\n";
$headers .= "Host: www.thefreedictionary.com\r\n";
$headers .= "Accept: application/xhtml+voice+xml;version=1.2, application/x-xhtml+voice+xml;version=1.2, text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n";
$headers .= "Accept-Language: ru, en\r\n";
$headers .= "Accept-Charset: windows-1251, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1\r\n";
$headers .= "Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0\r\n";
$headers .= "Connection: Keep-Alive, TE\r\n";
$headers .= "TE: deflate, gzip, chunked, identity, trailers\r\n";

Они и без этих знаков, кстати обычно считываются без проблем...
 

realman

Новичок
а ты проверял?

твой вариант - ответа нет.
мой вариант:
PHP:
<?php
$host = "www.thefreedictionary.com";
$path = "/table";
$fp = fsockopen($host,80,$errno,$errstr,30);
if(!$fp) echo"$errstr ($errno)<br />\n";
else{
$headers = "GET /table HTTP/1.1\n";
$headers .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.50\n";
$headers .= "Host: www.thefreedictionary.com\n";
$headers .= "Accept: application/xhtml+voice+xml;version=1.2, application/x-xhtml+voice+xml;version=1.2, text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\n";
$headers .= "Accept-Language: ru, en\n";
$headers .= "Accept-Charset: windows-1251, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1\n";
$headers .= "Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0\n";
$headers .= "Connection: Keep-Alive, TE\n";
$headers .= "TE: deflate, gzip, chunked, identity, trailers\n\n";
fwrite($fp,$headers);
$text = '';
while(!feof($fp))
{
	$text .= fgets($fp,4096);
}
fclose($fp);
echo $text;
}
?>
ответ:
PHP:
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Mon, 02 Jan 2006 04:48:27 GMT
X-AspNet-Version: 1.1.4322
Set-Cookie: track=1; domain=.thefreedictionary.com; path=/
Cache-Control: private
Expires: Mon, 02 Jan 2006 06:28:27 GMT
Content-Type: text/html; charset=iso-8859-1
Content-Length: 39479

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1">
<LINK rel="stylesheet" type="text/css" href="http://img.tfd.com/t.css">
<script src="http://img.tfd.com/dict2.js?7" LANGUAGE=javascript></script>
<script LANGUAGE=javascript>Domain='thefreedictionary.com'</script><base href="http://www.thefreedictionary.com/">
<title>table - definition of table by the Free Online Dictionary, Thesaurus and Encyclopedia.</title>
<meta name="description" content="Definition of table in the Online Dictionary. Meaning of table. What does table mean? table synonyms, table antonyms. Information about table in the free online English dictionary and encyclopedia. periodic table, pool table, coffee table, table tennis, kitchen table, dining table, round table, console table, billiard table, card table, cocktail table, conference table, table tennis table">
<meta name="Keywords" content="table, online dictionary, thesaurus, dictionary, English dictionary, table definition, definition of table, legal, medical, encyclopedia, term, law, explanation, information, periodic table, pool table, coffee table, table tennis, kitchen table, dining table, round table, console table, billiard table, card table, cocktail table, conference table, table tennis table">
<script>word='table'</script>
</head> ...
 

RigVan

Постоянный член клуба
realman
У меня твой вариант тоже не работает... :( , а у тебя он работает?
 

RigVan

Постоянный член клуба
Вот "отловленный" заголовок...

GET /mysite/connect.php HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.50
Host: localhost
Accept: application/xhtml+voice+xml;version=1.2, application/x-xhtml+voice+xml;version=1.2, text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru, en
Accept-Charset: windows-1251, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Cache-Control: no-cache
Connection: Keep-Alive, TE
TE: deflate, gzip, chunked, identity, trailers

-~{}~ 02.01.06 08:02:

realman

т.е. ты открываешь этот файл броузером, и он нормально конектится и выводит инфу?

-~{}~ 02.01.06 08:03:

не пойму в чем у меня косяк тогда.... :(
 

realman

Новичок
я отсылаю запрос скриптом - сервер мне возвращает хэдеры и хтмл-код страницы.
 

RigVan

Постоянный член клуба
Тогда вообще ничего не понимаю, у меня он ни как ни хочет подключаться все что получаю в ответ:
Fatal error: Maximum execution time of 30 seconds exceeded in C:\mysite\connect.php on line 20
 

SiMM

Новичок
> все что получаю в ответ
Вот и разбирайся со своим файрволом или ещё чем - PHP тут не при чём.
 

Burunduk-13

[CBT], Старожил РНРClub'a
тов RigVan

-----
(Request-Line):GET /mysite/connect.php HTTP/1.1
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.50
Host:localhost
-----

Эти заголовки браузер посылает на ВАШ сервер, так что в них проблем нету.

А вот эта строчка жутко проясняет ситуацию:
> Fatal error: Maximum execution time of 30 seconds exceeded in C:\mysite\connect.php on line 20

возможно из-за того что в заголовках нету переносов (это из первого листинга)
возможно из-за ненастроенного домашнего файервола, который php\apache не пускает наружу.
 

RigVan

Постоянный член клуба
Burunduk-13
Но эти же заголовки получает в конце концов и сервер, для которого и предназначается запрос. А на нем естественно нет папки и файла mysite/connect.php....

Знатоки подскажите, что делать!!!
 

SiMM

Новичок
> $headers .= "Connection: Keep-Alive, TE\n";
> while(!feof($fp))
Ты же сам не закрываешь соединение - так какого же лешего ты пытаешься определить конец контента по feof?
 

RigVan

Постоянный член клуба
SiMM
Может подскажешь как надо, если не сложно.. или хотя бы ссылочку. У меня тут 4 книги лежит и ни в одной не написано толком про это ничего. В иннете тоже часа 3 копал все без толку, видимо ни там искал. Не сочти за труд пожалуйста...
 

RigVan

Постоянный член клуба
SiMM
Вот что он мне теперь пишет...
Warning: fsockopen() [function.fsockopen]: unable to connect to http://www.yandex.ru:80 (Unable to find the socket transport "http" - did you forget to enable it when you configured PHP?) in C:\mysite\connect.php on line 5
Unable to find the socket transport "http" - did you forget to enable it when you configured PHP? (81133568)

по типу не настроен socket transport "http", как же мне это проверить?
 
Сверху