我一直在尝试使用PHP从链接中获取网络内容。我已经尝试过使用file_get_contents()
curl和curl,但是两者都无法使用我想要的链接。我的curl
代码如下:
function request($url){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($curl);
curl_close($curl);
return $res;
}
echo request("http://...");
此代码显示类似“”的内容
此代码适用于Google之类的网站,但不适用于我想要的网址。但是,当我使用curl
terminal命令尝试它时,它将从那里开始工作。可能是什么问题呢 ?
这是curl -I
输出:
HTTP/1.1 200 OK
Date: Mon, 09 Jun 2014 23:47:43 GMT
Server: Apache
Set-Cookie: PHPSESSID=m7fs1ikt47epgoiekg68nnq064; path=/; domain=.sozlukspot.com
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
X-Powered-By: PleskLin
Connection: close
Content-Type: text/html
尝试这个。我使用curl
为从远程URL获取内容而设置的一组标准选项对功能进行了改进。我相信它应该起作用。
我认为问题是您尝试连接的网站拒绝了来自未设置适当用户代理,纯curl
请求或仅具有空白用户代理的Web请求的连接。因此设置CURLOPT_USERAGENT
incurl
应该可以。我在这里将其设置为一个相当通用的Mozilla/5.0
设置,但是将其更改为您认为需要将其设置为任何其他代理。
function request($url){
// The actual curl request.
$curl_timeout = 5;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $curl_timeout);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
$res = curl_exec($curl);
curl_close($curl);
return $res;
}
echo request("http://...");
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句