使用CURL访问站点的时候出现403的解决办法

作者: Francis_Soung
发布时间:2015-06-11 18:30:24

curl的功能很强大,这里就不做详细的描述,具体的curl相关文章可以参考本站的curl目录下的文章,包括各个参数都有详细的描述。

然而有些网站可能是出于安全的考虑不允许curl命令的访问,就像有些网站不让ping一样。但是通过浏览器是可以访问的。这种情况我们就需要采用人工模拟浏览器的方式去访问,也就是采用设置User-Agent的方式来做。

我现在用curl都是采用命令行和代码的方式。下面我对两种情况列出解决代码。

命令行

加 -A参数,设置User-Agent

curl --head http://www.akamai.com -A "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11"

PHP代码

加上CURLOPT_USERAGENT参数即可,该参数既是设置User-Agent的。

 1 public function init($url){   2    3 $ch=curl_init();   4    5 $opt=array();   6    7 $opt[CURLOPT_URL]=$url;   8    9 $opt[CURLOPT_HEADER]=false;  10   11 $opt[CURLOPT_CONNECTTIMEOUT]=15;  12   13 $opt[CURLOPT_TIMEOUT]=300;  14   15 $opt[CURLOPT_AUTOREFERER]=true;  16   17 $opt[CURLOPT_USERAGENT]='Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11';  18   19 $opt[CURLOPT_RETURNTRANSFER]=true;  20   21 $opt[CURLOPT_FOLLOWLOCATION]=true;  22   23 $opt[CURLOPT_MAXREDIRS]=10;  24   25 //user defined opt  26   27 if(!empty($this->opt))  28   29 foreach($this->opt as $k=>$v)  30   31 $opt[$k]=$v;  32   33 curl_setopt_array($ch,$opt);  34   35 return $ch;  36   37 }

 

标签:
来源:http://www.cnblogs.com/songchaoke/p/3371478.html

推荐: