| iillyyaa |
26.04.2011 19:47 |
PHP Сокет gzip
что не верно в коде ? код простой, но вот если сайт использует сжатие, возникают проблемы... никак не могу распаковать эти данные.. уверен проблема в том, как заполняю переменную, видимо какую каретку где то упускаю...
PHP код:
$host = 'url.ru'; $my_User_Agent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; SV1; MyIE2; .NET CLR 1.1.4322)"; $cookie = 'Cookie: xx=7;'; $url = '/index.php'; $nn="\r\n";
function zapros() { $nn="\r\n"; global $url; global $cookie; global $my_User_Agent; global $host; $all_data = ""; flush(); $zapros= "GET " . $url . " HTTP/1.1" .$nn. "Accept: */*" .$nn. "Accept-Language: ru-RU" .$nn. "Referer: " . '' .$nn. "Accept-Encoding: gzip, deflate" .$nn. "User-Agent: " . $my_User_Agent .$nn. "Host: " . $host .$nn. "" . $cookie .$nn. "Connection: Keep-Alive" .$nn.$nn; echo "------------------ Запрос ------------------\n\n" . $zapros . "\n\n------------------ ответ ------------------\n\n"; flush(); $fp = fsockopen($host, 80, &$errno, &$errstr, 1); if (!$fp) { sleep(1); $return_err='err'; return; } stream_set_timeout($fp, 1); fputs($fp,$zapros); for ($i=0;;$i++): $data = fgets($fp,2048); if ($data === false) break; if ($data != "\r\n") { if (empty($qqqqq)) { echo $data; } else { ## if (!empty($all_data)) $all_data .= "\r\n"; $all_data .= $data; // echo $nn . htmlspecialchars($data); // echo $data . $nn; } continue; } else { # break; if (empty($qqqqq)) { echo "\n\n------------------ Содержимое страницы ------------------\n\n"; $qqqqq = 1; } else { echo "\r\n"; } } endfor; fclose($fp); return $all_data; }
$all_data = zapros(); $job_test_err = @gzinflate($all_data); if ($job_test_err === false) echo "errr<br><br>\r\n\r\n";
Добавлено через 3 минуты
бьюсь уже не один час... не пойму где косяк...
даже делал скрипт, тестил, образал разное колво символов в начале и конце...
Добавлено через 17 часов 18 минут
решение найдено
PHP код:
$all_data = @gzinflate(substr($all_data, 10, -8));
|