通过PHP脚本读取URL会导致X5在浏览器中产生更大的响应

时间:2014-05-30 17:59:00

标签: php curl httprequest httpresponse get-request

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

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

当我使用php和curl / fopen / file_get_contents并生成一个GET请求时,我得到1.2M响应并使用相同的数据! (这需要更长的时间才能下载)。

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

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

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

问题是造成这种情况的原因?

2 个答案:

答案 0 :(得分:1)

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

服务器正在检查此标头是否存在,然后使用gzip压缩输出。

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

CURL默认情况下,不是。您可以使用此代码更改此内容:

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

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

更多信息:

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/

答案 1 :(得分: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说得对:)