Php 下载gz格式的网页

Php 下载gz格式的网页,php,curl,Php,Curl,我正在运行一些PHP代码到我的浏览器 如果我导航到像google.com这样的URL,它会告诉我文档已经移动到这里了。i、 e到另一个谷歌链接 我将cURLfollow location设置为true 还有。当查询实际通过时,它会强制我的浏览器下载.gz文件中的网页 请帮忙。我不想下载。我想把它展示出来 curl_setopt($ch, CURLOPT_URL, trim("http://".trim($host).$q)); curl_setopt($ch, CURLOPT_PORT, in

我正在运行一些PHP代码到我的浏览器

如果我导航到像google.com这样的URL,它会告诉我文档已经移动到这里了。i、 e到另一个谷歌链接

我将
cURL
follow location设置为true

还有。当查询实际通过时,它会强制我的浏览器下载.gz文件中的网页

请帮忙。我不想下载。我想把它展示出来

curl_setopt($ch, CURLOPT_URL, trim("http://".trim($host).$q)); 
curl_setopt($ch, CURLOPT_PORT, intval(trim($port)));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $v);
编辑::

请求stackoverflow.com等网站时,您的浏览器发送了错误的请求。甚至4shared.com也做同样的事情

这是我在
cURL
中使用的
HTTPHEADER
数组

Array
(
    [0] => Proxy-Connection: Close

    [1] => Cache-Control: max-age=0

    [2] => User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1017.2 Safari/535.19

    [3] => Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

    [4] => Accept-Encoding: gzip,deflate,sdch

    [5] => Accept-Language: en-US,en;q=0.8

    [6] => Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

    [7] => Cookie: __qca=P0-9

    [8] => Connection: Close
)
这与我上面使用的curl代码相同

    Host: stackoverflow.com                                 
    Q: /questions/tagged/java

要解决gzip问题,请在设置
CURLOPT\u HTTPHEADER
之前尝试设置为空字符串。问题是cURL不希望得到压缩响应(因为您没有设置它应该接受的编码),而是使用自定义HTTP头手动请求压缩响应。

WOW!谢谢,先生!它起作用了。但是你知道为什么像stackoverflow这样的网站会说你的浏览器发送了一个错误的请求吗?@Blank这个问题是在你应用了我的解决方案之后才开始出现的吗?在这种情况下,cURL现在可能会发送两次
Accept-Encoding
头;如果将
CURLOPT_VERBOSE
设置为
true
,则可以验证是否存在这种情况。如果是的话,最简单的解决方案就是从
HTTPHEADER
数组中去掉头。如果不是这样,则可能是标头存在其他问题。您需要进行一些调试(例如,逐个删除它们)以查看是什么导致了它。不,在您的代码之前。您的代码修复了以gz格式下载网页的问题。@Blank我似乎无法重现您的错误请求问题。。。这是我的和相应的,一个正常的200状态代码,后跟stackoverflow主页。您能否创建一个导致服务器发送错误请求响应的测试用例?我遇到了一些问题。您的浏览器发送了错误的请求。请求错误。