【问题标题】:cURL response different than web responsecURL 响应不同于 Web 响应
【发布时间】:2016-07-05 13:08:22
【问题描述】:

我想获取我拥有它们的所有页面内容 url

我为获取https://fonts.googleapis.com/css?family=Open+Sans的内容编写了以下php代码

 function curl_file_get_content($url){
    $agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
    $ch=curl_init();
    curl_setopt_array($ch, [
            CURLOPT_URL=>$url,
            CURLOPT_USERAGENT=>$agent,
            CURLOPT_RETURNTRANSFER=>1,
            CURLOPT_TIMEOUT=>5,
            CURLOPT_VERBOSE=>0,
            CURLOPT_SSLVERSION=>3,
            CURLOPT_SSL_VERIFYPEER=>0,
            CURLOPT_SSL_VERIFYHOST=>0,
        ]);
    $page=curl_exec($ch);
    $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    if($httpcode>=200 && $httpcode<300) return $page;
    else return false;
}
if($content=curl_file_get_content("https://fonts.googleapis.com/css?family=Open+Sans")){
    echo $content;
}else{
    echo "the Website is DOWN" ;
}

输出如下代码

@font-face {
  font-family: 'Open Sans';
  font-style: normal;
  font-weight: 400;
  src: url(https://fonts.gstatic.com/s/opensans/v13/cJZKeOuBrn4kERxqtaUH3fY6323mHUZFJMgTvxaG2iE.eot);
}

如果您查看 url https://fonts.googleapis.com/css?family=Open+Sans,您会注意到此页面的内容,并且我的代码输出是不同的,并且我的代码输出是该页面的一部分

但此代码可正常用于获取本地主机文件的内容

有什么问题? 我可以得到这个页面的完整内容吗?

【问题讨论】:

    标签: php html curl load php-curl


    【解决方案1】:

    这是您使用的用户代理,当我将其设置为 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36 时,它似乎返回了应有的完整内容。

    function fetch($url) {
        $ch = curl_init();
        curl_setopt_array($ch, [
            CURLOPT_URL => $url,
            CURLOPT_USERAGENT => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36',
            CURLOPT_RETURNTRANSFER => 1,
            CURLOPT_TIMEOUT => 5,
            CURLOPT_VERBOSE => 0,
            CURLOPT_SSLVERSION => 3,
            CURLOPT_SSL_VERIFYPEER => 0,
            CURLOPT_SSL_VERIFYHOST => 0,
            ]);
        $page = curl_exec($ch);
        $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        return array($code, $page);
    }
    
    list ($code, response) = fetch('https://fonts.googleapis.com/css?family=Open%20Sans');
    
    if ($code == 200) {
        echo $response;
    } else {
        echo 'Unable to fetch content: ' . $code;
        echo 'Response: ' . $response;
    }
    

    【讨论】:

    • 非常感谢! - 为什么谷歌不返回Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) 的完整内容并返回Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36 的完整内容我的代理问题是什么?你知道吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 2014-02-08
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    相关资源
    最近更新 更多