【问题标题】:Making PHP cURL skip binary data like images, video, etc使 PHP cURL 跳过图像、视频等二进制数据
【发布时间】:2011-06-23 16:11:40
【问题描述】:

像这样设置 curl:

  $ch = curl_init();
      curl_setopt($ch,CURLOPT_URL,$this->domain);
      curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
      curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,3);
      curl_setopt($ch,CURLOPT_FAILONERROR,TRUE);
      curl_setopt($ch,CURLOPT_USERAGENT,"Useragent");
      curl_setopt($ch,CURLOPT_FOLLOWLOCATION,TRUE);
      curl_setopt($ch,CURLOPT_MAXREDIRS,1);
      $str = curl_exec($ch); 
      return $str;   
      $str = $this->cURL();

将 url 传递给 html 页面,一切都很好 - 但是将链接 direct 传递给 .jpg 例如,它会返回大量乱码数据。

我想确保如果页面重定向到 .jpg 或 .gif 等 - 它会被忽略并且只返回 html 页面。

我似乎找不到用于 curl 的 setopt 来执行此操作。

有什么想法吗?

-天鹅。

【问题讨论】:

    标签: php curl binary web-crawler


    【解决方案1】:

    Curl 不关心内容的文本 (html) 还是二进制垃圾 (jpg),它只会返回您告诉它获取的内容。您已经告诉 curl 使用“CURLOPT_FOLLOWLOCATION”选项跟踪重定向,因此它只会遵循重定向链,直到达到常规限制或下载某些内容

    如果您事先不知道 URL 可能包含的内容,则必须采取一些变通办法,例如发出自定义 HEAD 请求,该请求将返回 URL 的正常 http 标头,您可以从中可以提取响应的 mime 类型 (Content-type: ...) 并决定是否要获取它。

    或者只是获取 URL,然后根据完整响应标头中的 mime 类型保留/丢弃数据。

    【讨论】:

      【解决方案2】:

      我的想法 - 使用 HEAD 请求,检查内容类型是否有趣(例如另一个 HTML),然后发出 GET 数据请求。

      为 HEAD 请求设置 CURLOPT_NOBODY

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-19
        • 2016-03-04
        • 2013-02-15
        • 2014-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多