使用CURL訪問站點的時候出現403的解決辦法

curl的功能很強大,這裏就不作詳細的描述,具體的curl相關文章能夠參考本站的curl目錄下的文章,包括各個參數都有詳細的描述。瀏覽器

然而有些網站多是出於安全的考慮不容許curl命令的訪問,就像有些網站不讓ping同樣。可是經過瀏覽器是能夠訪問的。這種狀況咱們就須要採用人工模擬瀏覽器的方式去訪問,也就是採用設置User-Agent的方式來作。安全

我如今用curl都是採用命令行和代碼的方式。下面我對兩種狀況列出解決代碼。curl

命令行網站

加 -A參數,設置User-Agentthis

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代碼url

加上CURLOPT_USERAGENT參數便可,該參數既是設置User-Agent的。spa

 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 }
相關文章
相關標籤/搜索