首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用curl解码"Content-Encoding: gzip,gzip“?

如何使用curl解码"Content-Encoding: gzip,gzip“?
EN

Stack Overflow用户
提问于 2014-11-20 03:04:32
回答 1查看 14.8K关注 0票数 10

我正在尝试通过使用以下代码使用CURL来解码网页www.dealstan.com:

代码语言:javascript
复制
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); // Define target site
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // Return page in string
curl_setopt($cr, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.3 Safari/533.2');
curl_setopt($ch, CURLOPT_ENCODING , "gzip");     
curl_setopt($ch, CURLOPT_TIMEOUT,5); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); // Follow redirects

$return = curl_exec($ch); 
$info = curl_getinfo($ch); 
curl_close($ch); 

$html = str_get_html("$return");
echo $html;

但是,它显示了一些垃圾字符

"��}{w�6����9�X�n���..........“大约100行。

我试着在hurl.it中找到响应,发现了一个有趣的点,看起来html被编码了两次(只是猜测,基于响应)

找到下面的响应: GET http://www.dealstan.com/

200 OK 18.87 kB 490毫秒查看请求查看响应头

Cache-Control: max-age=0,无缓存

Cf-Ray: 18be7f54f8d80f1b-IAD

连接:保持连接

内容编码: gzip,gzip ==============>?怀疑到这一点,有人知道吗?

Content-Type: text/html;charset=UTF-8

日期:星期三,2014年11月19日18:33:39 GMT

服务器: cloudflare-nginx

Set-Cookie:__cfduid=d1cff1e3134c5f32d2bddc10207bae0681416422019;expires=Thu,19-Nov-15 18:33:39 GMT;path=/;domain=.dealstan.com;HttpOnly

传输编码:分块

变化:接受-编码

X-Page-Speed: 1.8.31.2-3973

X-Pingback:http://www.dealstan.com/xmlrpc.php

X-Powered-By: HHVM/3.2.0 BODY view raw

H4sIAAAAAAAAA5V8Q5AoWrBk27Ztu/u2bdu2bdu2bdu2bds2583f/pjFVOQqozZnUxkVJ7PwoyAA/qeAb3y83LbYHs/3Hv79wKm/2N5cZyJVtCWu1xyteyzLNqYuWbdtHeELCyIZRRp/1Fe7es3+wL3Vfb

任何人都知道如何解码带有头部"Content-Encoding: gzip,gzip“的响应,

该网站是正确加载在火狐,铬等,但我不能解码使用CURL。

请帮我解码这个问题好吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-20 05:29:11

您可以通过修剪头部并使用gzinflate对其进行解码。

代码语言:javascript
复制
$url = "http://www.dealstan.com"

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); // Define target site
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // Return page in string
curl_setopt($cr, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.3 Safari/533.2');
curl_setopt($ch, CURLOPT_ENCODING, "gzip");     
curl_setopt($ch, CURLOPT_TIMEOUT, 5); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); // Follow redirects

$return = curl_exec($ch); 
$info = curl_getinfo($ch); 
curl_close($ch); 

$return = gzinflate(substr($return, 10));
print_r($return);
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27024900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档