所以我试图获取特定网页的内容。
我尝试使用curl
,但结果是,我被重定向到主页,我无法从所需页面中检索我想要的信息。
每当我使用file_get_contents()
并将网址传递给我尝试从中获取信息的网页时,它都能正常运行,但file_get_contents()
无法在服务器上运行,而我仍然坚持使用{ {1}}。
有没有办法使用curl
并获得类似行为的curl
?
我相信我尝试从中获取信息的网页是为了封装数据而将页面内容视图仅限于通过浏览器进入其网站的人员。
感谢您的帮助。
答案 0 :(得分:0)
由于您在cURL
上获得了重定向,因此需要将此参数添加到现有设置中。
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
答案 1 :(得分:0)
尝试此功能,您可以根据需要进行更改:
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