繁体   English   中英

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

[英]How to decode “Content-Encoding: gzip, gzip” using curl?

我正在尝试使用以下代码使用CURL对网页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); 

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

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

“ } {w 6 9 ?X n ..........”约100行。

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

请在下面找到答案:获取http://www.dealstan.com/

200 OK 18.87 kB 490 ms查看请求查看响应HEADERS

Cache-Control:max-age = 0,no-cache

Cf-Ray:18be7f54f8d80f1b-IAD

连接:保持活力

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

内容类型:text / html; 字符集= UTF-8

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

服务器:cloudflare-nginx

Set-Cookie:__ cffidid = d1cff1e3134c5f32d2bddc10207bae0681416422019; 到期=星期四,19日 - 11月15日18:33:39 GMT; 路径= /; 域= .dealstan.com; 仅Http

转移编码:分块

变化:接受编码

X-Page速度:1.8.31.2-3973

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

X-Powered-By:HHVM / 3.2.0 BODY查看原始

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

任何人都知道如何使用标题“Content-Encoding:gzip,gzip”解码响应,

该网站正在firefox,chrome等正确加载,但是,我无法使用CURL进行解码。

请帮我解码这个问题?

你可以通过修剪标题和使用gzinflate来解码它。

$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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM