php 如何解压 http gzip

qqsweb 2010-07-21 10:44:35
Content-Encoding: gzip
远程获取到内容
乱码 如何解压??
...全文
1150 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
BooJS 2010-07-23
  • 打赏
  • 举报
回复
最好提供你请求的url
qqsweb 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 mrshelly 的回复:]
请求的时候, 把 Accept-Encoding 整个去掉...
[/Quote]
没用的 只有接受GZIP 才有数据反馈给我 只有解压GZIP
mrshelly 2010-07-23
  • 打赏
  • 举报
回复
请求的时候, 把 Accept-Encoding 整个去掉...
qqsweb 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 xuzuning 的回复:]
学艺不精,确实不好解压。


但是可以绕着走!
记得我上次说过,发送的头中
$out.="Accept-Encoding: gzip,deflate\r\n";
是可以接受 gzip 压缩数据,但有解压的麻烦
其实你只要去掉 gzip
$out.="Accept-Encoding: deflate\r\n";
就可以得到明文了
[/Quote]

今天早上7点测试时发现 服务器无视我的请求 Accept-Encoding: deflate这样没任何信息给我 昨天下午测试有明文 使用gzip后可以得到压缩后的数据 貌似服务器有设置
qqsweb 2010-07-23
  • 打赏
  • 举报
回复
http://blog.csdn.net/wfqxx/archive/2009/07/16/4353801.aspx
qqsweb 2010-07-23
  • 打赏
  • 举报
回复
http://blog.csdn.net/sxldfang/archive/2010/04/12/5478078.aspx
qqsweb 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 xuzuning 的回复:]
引用 19 楼 qqsweb 的回复:

C++语言区看到人家成功解压了 不懂怎么应用到PHP来

给出链接看看
[/Quote]
http://topic.csdn.net/u/20081106/21/5c5020c1-e9e5-4c32-a3d1-000cc7089754.html
xuzuning 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 qqsweb 的回复:]

C++语言区看到人家成功解压了 不懂怎么应用到PHP来
[/Quote]
给出链接看看
qqsweb 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 boojs 的回复:]
最好提供你请求的url
[/Quote]
伪造来路还是?
访问的URL 我在上面的代码已经提供了
这几天GOOGLE了几个函数 都失败告终 无法正确的解压出来
C++语言区看到人家成功解压了 不懂怎么应用到PHP来
qqsweb 2010-07-22
  • 打赏
  • 举报
回复
上面去HTTP头有错误 用这个是完全取GZIP 可能有错误 总之无法解压

function cut($file,$from,$end,$num=1){

$message=explode($from,$file);
$message=explode($end,$message[$num]);
return $message[0];
}
$str=cut($str,"Transfer-Encoding: chunked

","

HTTP/1.1 400 Bad Request");
echo $str;
qqsweb 2010-07-22
  • 打赏
  • 举报
回复

$str="";
$fp = fsockopen("ask.39.net", 80, $errno, $errstr, 30);

if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {

$out = "GET /question/10819414.html HTTP/1.1\r\n";
$out .= "Accept: application/x-shockwave-flash, image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*/\r\n";
$out.="Accept-Language: zh-cn\r\n";
$out.="Accept-Encoding: gzip,deflate\r\n";
$out.="User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n";
$out .= "Host: ask.39.net\r\n";



// $out.="Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7\r\n";
//$out.="Keep-Alive: 300\r\n";
$out.="Connection: keep-alive\r\n";
$out .= "Cookie: onlineId=5347153279694344113; ip_to_city=%BD%AD%CE%F7%CA%A1%B8%D3%D6%DD%CA%D0+%B5%E7%D0%C5; __utma=56571124.2013124916.1279761358.1279761358.1279761358.1; __utmb=56571124.3.10.1279761358; __utmz=56571124.1279761358.1.1.utmcsr=baidu|utmccn=(organic)|utmcmd=organic|utmctr=39; online_bbs=4799118517545223018; laston_bbs=634153871235869750; Hm_lvt_e517564e98c2825803fdf00b6c0d9ee7=1279761404390; Hm_lvt_1827105cf5cfac624c8dbf5159abfdb4=1279761721875\r\n\r\n";
$out.="Cache-Control: max-age=0\r\n";

fwrite($fp, $out);

while (!feof($fp)) {
$str.=fgets($fp, 128);
//echo $str;
}
fclose($fp);
}

echo $str;





我要处理的就是这个内容

下面是处理HTTP头 及一些没用的错误反馈

function cut($file,$from,$end,$num=1){

$message=explode($from,$file);
$message=explode($end,$message[$num]);
return $message[0];
}
$str=cut($str,"X-UA-Compatible: IE=EmulateIE7","

HTTP/1.1 400 Bad Request");
echo $str;


用gzuncompress给出的是数据错误
Dleno 2010-07-22
  • 打赏
  • 举报
回复
解压的话,应该是gzuncompress。
但我这里测试,直接读到gzip压缩的内容就可以用,不会乱码。
qqsweb 2010-07-22
  • 打赏
  • 举报
回复
可以压缩不是说明我的环境可以支持解压么

在PHP手册里头找到一个gzdecode自定义函数

调用解压输入内容为空白 我已经去掉了HTTP头 还是一样
kyzy_yy_pm 2010-07-22
  • 打赏
  • 举报
回复
相对应的类库文件有么
qqsweb 2010-07-22
  • 打赏
  • 举报
回复
那位兄弟有代码分享下 急急急啊
qqsweb 2010-07-22
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 xuzuning 的回复:]
学艺不精,确实不好解压。


但是可以绕着走!
记得我上次说过,发送的头中
$out.="Accept-Encoding: gzip,deflate\r\n";
是可以接受 gzip 压缩数据,但有解压的麻烦
其实你只要去掉 gzip
$out.="Accept-Encoding: deflate\r\n";
就可以得到明文了
[/Quote]
这点下午GOOGLE的时候 也发现了 的确解决了所有问题 但是网上还有种情况服务器 无视HTTP头发送的信息 想解决这个解压问题 以后遇上了 就不用烦恼
cheng20100915 2010-07-22
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 xuzuning 的回复:]
学艺不精,确实不好解压。


但是可以绕着走!
记得我上次说过,发送的头中
$out.="Accept-Encoding: gzip,deflate\r\n";
是可以接受 gzip 压缩数据,但有解压的麻烦
其实你只要去掉 gzip
$out.="Accept-Encoding: deflate\r\n";
就可以得到明文了
[/Quote]
有道理
xuzuning 2010-07-22
  • 打赏
  • 举报
回复
学艺不精,确实不好解压。


但是可以绕着走!
记得我上次说过,发送的头中
$out.="Accept-Encoding: gzip,deflate\r\n";
是可以接受 gzip 压缩数据,但有解压的麻烦
其实你只要去掉 gzip
$out.="Accept-Encoding: deflate\r\n";
就可以得到明文了
qqsweb 2010-07-22
  • 打赏
  • 举报
回复
等结果~~~~米人帮忙啊~
qqsweb 2010-07-21
  • 打赏
  • 举报
回复
zlib.output_compression = on
;zlib.output_compression_level = -1
本机php.ini里头有这个zlib.output_compression = on开启后 我本机测试程序也可以以gzip压缩后输出


不知道这样是否已经加载了zlib模块

问题是还不懂如何解压 具体如何配置???
加载更多回复(3)

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧