@gracer

Как получить контент страницы через соккеты?

Есть функция, которая с помощью сокетов получает контент страницы с заголовками. Но на некоторых сайтах после заголовков, прямо перед html кодом вставляется набор символов непонятно откуда.
Например
Content-Language: ru
X-Frame-Options: SAMEORIGIN

f23
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


Тут f23 лишние.
Что это может быть?

function get_content($hostname, $path) 
{ 
$line=""; 
//устанавливаем соединение, имя которого 
//передано в параметре $hostname 
$fd=fsockopen($hostname, 80, $errno, $errstr, 30); 
//проверяем успешность установки соединения 
if(!$fd) echo "$errstr ($errno)<br>/>\n"; 
else 
{ 
//формируем HTTP-запрос для передачи его серверу 
$headers="GET $path HTTP/1.1\r\n"; 
$headers.="Host: $hostname\r\n"; 
$headers.="Connection: Close\r\n\r\n"; 
//отправляем HTTP-запрос серверу 
fwrite ($fd, $headers); 
//получаем ответ 
while (!feof($fd)) 
{ 
$line.=fgets($fd, 1024); 
} 
fclose($fd); 
} 
return $line; 
} 
$hostname="forum.searchengines.ru"; 
$path="/"; 
//устанавливаем большее время работы 
//скрипта- пока вся страница не загружена, 
//она не будет отображаться 
set_time_limit(180); 
//вызываем функцию 
echo get_content($hostname, $path);
  • Вопрос задан
  • 3385 просмотров
Пригласить эксперта
Ответы на вопрос 2
@alltrash
Найдите $headers="GET $path HTTP/1.1\r\n";
и поменяйте на $headers="GET $path HTTP/1.0\r\n"; и они исчезнут.
Ответ написан
Комментировать
Zerstoren
@Zerstoren
Попробуйте повторить те-же действия, но через telnet.

Так-же добавьте больше хидеров. Скопируйте из браузера.
Текст точно присылает сервер.

Если заголовки не помогли, откройте через браузер эту страницу и посмотрите в исходники. Вполне вероятно что сервер присылает эту фигню из-за бага или какого-то echo
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы