1

我正在尝试通过此链接使用 Cryptsy api:http ://pubapi.cryptsy.com/api.php?method=orderdatav2

当我使用浏览器去那里时,我得到 236.2 KB 的响应。

当我将 php 与 curl/fopen/file_get_contents 一起使用并产生一个 GET 请求时,我得到了 1.2M 具有相同数据的响应!(下载需要更长的时间)。

我试图复制确切的标题,但结果仍然相同。

我怀疑这是因为浏览器使用的是 gzip 而不是 php?

还有其他选择吗?我正在用这个追逐我的尾巴。

问题是什么导致了这个?

4

2 回答 2

1

原因是,您的浏览器发送以下 Header Accept-Encoding: gzip, deflate

服务器正在检查此标头是否存在,然后使用gzip.

如果需要,您的浏览器会接收内容并解压缩。

CURL默认情况下,不会。您可以使用以下代码更改此设置:

curl_setopt($ch,CURLOPT_ENCODING , "gzip");

另请注意,此选项关注整个过程。您不必设置自定义Accept-EncodingHeader 或解压缩。你不需要处理它。

更多信息:

http://www.php.net/manual/en/book.curl.php

http://en.wikipedia.org/wiki/HTTP_compression

http://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/

于 2014-05-30T20:55:42.993 回答
0

实际上 curl_setopt($ch,CURLOPT_ENCODING , "gzip"); 对我不起作用。

我找到的解决方案写在这里php - Get compressed contents using cURL

$ch = curl_init("http://games2k.net/");
curl_setopt($ch,CURLOPT_ENCODING , "");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch);
curl_close($ch);
echo $output;

你对 gzip 的看法是对的 :)

于 2014-05-30T21:00:50.163 回答