| |
|
|
| | Я меня щас крыша поедет. Пытаюсь взять информация о герое из БК, вот код для выбивания информации из страницы
<?php
$file=@file("http://suncity.combats.ru/inf.pl?login=hugi");
$content=@implode("",$file);
print_r ($content);
?>
но он выбивает йЪ╩Ч[uZы[cbЭPЙр)I├╓�3ki╠Edи∙жрИw╩счнd╕И╓m╬ ну и тому подобную фигню. Помогите, как мне открыть эту страницу. Остальные страницы из нета читаются. | |
| |
|
|
| |
|
|
| |
для: hugi
(14.08.2007 в 01:53)
| | | А почему бы не использовать функцию:
<?php
$content = file_get_contents("http://suncity.combats.ru/inf.pl?login=hugi");
print_r ($content);
?>
|
| |
| |
|
|
| |
|
|
| |
для: 0ne
(14.08.2007 в 02:38)
| | | Дело не в том. Там в заголовках
Приходит сжатая страница. | |
| |
|
|
| |
|
|
| |
для: hugi
(14.08.2007 в 01:53)
| | | Просто скрипт inf.pl вычислил, что обращение идёт не из браузера и поэтому выдаёт всякую лабуду. Но что мешает прикинуться обычным браузером?
<?php
$fp = fsockopen("suncity.combats.ru", 80);
$query = "GET /inf.pl?login=hugi HTTP/1.0\r\n"
."Host: suncity.combats.ru\r\n"
."Referer: http://suncity.combats.ru/\r\n"
."User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.51\r\n"
."Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1\r\n"
."Accept-Language: ru,en;q=0.9\r\n"
."Connection: Keep-Alive\r\n"
."Accept-Charset: windows-1251, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1\r\n\r\n";
fwrite($fp, $query);
$buff = "";
while(!feof($fp)) $buff .= fread($fp, 1024);
fclose($fp);
list($headers, $body) = explode("\r\n\r\n", $buff, 2);
print $body;
|
| |
| |
|
|
| |
|
|
| |
для: Саня
(14.08.2007 в 02:44)
| | | Не совсем так. Контент отсылается правильный, но с использованием сжатия gzip, которое поддерживают браузеры.
Дело в заголовке:
, который предлагает серверу не использовать сжатие.
ps.Точнее, в сочетании заголовков User-Agent и Accept
Словом, достаточно этого:
<?php
if($socketDescriptor = fsockopen("suncity.combats.ru", 80, $error_code, $error_message, 60))
{
stream_set_blocking($socketDescriptor, FALSE);
fputs($socketDescriptor, "GET /inf.pl?login=hugi HTTP/1.0\r\n");
fputs($socketDescriptor, "Accept: text/html\r\n");
fputs($socketDescriptor, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n\r\n");
while(!feof($socketDescriptor))
{
echo fgets($socketDescriptor, 4096);
}
fclose($socketDescriptor);
} else echo $error_code.": ".$error_message;
?>
|
| |
| |
|
|
| |
|
|
| |
для: Shiva
(14.08.2007 в 02:51)
| | | Может быть, но почему тогда gzuncompress() и gzinflate() отказываются работать? | |
| |
|
|
| |
|
|
| |
для: Саня
(14.08.2007 в 02:55)
| | | Нужно отбросить первые 10 байтов (заголовок) и последние 4 байта (контрольная сумма).
Вот так работает:
<?php
$data=file_get_contents("http://suncity.combats.ru/inf.pl?login=hugi");
echo gzinflate(substr($data, 10, -4));
?>
|
| |
| |
|
|
| |
|
|
| |
для: Shiva
(14.08.2007 в 03:05)
| | | Можно вопрос: а как ты до этого додумался, ход рассуждений. На будущее. | |
| |
|
|
| |
|
|
| |
для: hugi
(14.08.2007 в 03:09)
| | | Сделал сокет, который приводил выше, и увидел заголовки сервера, в т.ч.
| |
| |
|
|
| |
|
|
| |
для: hugi
(14.08.2007 в 01:53)
| | | Дааа, никогда бы не додумался, большое спасибо. | |
| |
|
|
| |
|
|
| |
для: hugi
(14.08.2007 в 01:53)
| | | Кстати если кто может выложите ссылки на ресурсы насчет gzip, хочу разобраться. | |
| |
|
|