【问题标题】:Curl Redirect Hidden Content卷曲重定向隐藏内容
【发布时间】:2014-02-19 03:51:54
【问题描述】:

所以我正在尝试获取特定网页的内容。 我尝试使用curl,但结果,我被重定向到主页,我无法从所需页面检索我想要的信息。

每当我使用 file_get_contents() 并将 URL 传递到我试图从中获取信息的网页时,它都能正常工作,但 file_get_contents() 在服务器上不起作用,我被 curl 卡住了。

有没有办法使用curl 并获得file_get_contents() 类似的行为?

我相信我试图从中获取信息的网页是故意封装数据并将页面内容视图仅限于通过浏览器进入其网站的人。

感谢您的所有帮助。

【问题讨论】:

  • 如果您使用的是 chrome,那么您可以在开发者工具中打开网络选项卡并在浏览器中请求该页面。然后,您可以右键单击请求并复制 cURL 请求。

标签: php html curl httprequest


【解决方案1】:

由于您在 cURL 上获得重定向,因此您需要将此参数添加到现有集合中。

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

【讨论】:

    【解决方案2】:

    试试这个功能,你可以根据需要改变它:

    function url_get_contents($url,$ref="http://google.com",$posts=false){
        $crl = curl_init();
        $timeout = 5;
        $userAgent  = "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/28.0.1500.71 Chrome/28.0.1500.71 Safari/537.36";
        curl_setopt ($crl, CURLOPT_USERAGENT,  $userAgent);
        curl_setopt ($crl, CURLOPT_URL, $url);
        curl_setopt ($crl, CURLOPT_ENCODING, 'UTF-8');
        curl_setopt ($crl, CURLOPT_HEADER, false);
        curl_setopt ($crl, CURLOPT_REFERER, $ref);
        curl_setopt ($crl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt ($crl, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt ($crl, CURLOPT_AUTOREFERER, true);
        curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
        if($posts){
            curl_setopt ($crl, CURLOPT_POST, true);
            curl_setopt ($crl, CURLOPT_POSTFIELDS, http_build_query($posts));
        }
        $ret = curl_exec($crl);
        $info = curl_getinfo($crl);
    
    if ($ret === false || $info['http_code'] != 200) {
       $ret = "No cURL data returned for $url [". $info['http_code']. "]";
       if (curl_error($crl))
         $ret .= "\n". curl_error($crl);
    }
        curl_close($crl);
        return $ret;
    }
    

    如果您认为它是 UserAgent,您可以轻松更改它,或传入引荐来源网址

    $url = "somewebsitehere.com";
    $contents = url_get_contents($url); #use google.com as referrer
    $content2 = url_get_contents($url,$url); #use same url as referrer
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-15
      • 2012-04-23
      • 2013-07-05
      • 2017-11-23
      • 1970-01-01
      • 2017-06-12
      相关资源
      最近更新 更多