欧美性猛交xxx嘿人猛交_又色又爽又高潮免费观看_精品国产一区二区三区久久影院_青娱乐极品视觉盛宴国产视频

技術頻道導航
HTML/CSS
.NET技術
IIS技術
PHP技術
Js/JQuery
Photoshop
Fireworks
服務器技術
操作系統
網站運營

贊助商

分類目錄

贊助商

最新文章

搜索

UserAgent設置不當導致php抓取網頁失敗

作者:admin    時間:2013-11-18 21:44:40    瀏覽:

php抓取網頁,可謂輕而易舉,幾行代碼就可以搞定。不過,如果你有所疏忽,程序寫得不夠嚴密,就會出現有的網頁抓取成功有的網頁卻抓不了的問題。

先來看看php抓取代碼的一個方法:

<?php
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, ‘http://www.cuckooft.com/’);
$data = curl_exec($curl);
?>

代碼中$data就是要抓取的網頁html代碼了。

但是如果使用這個程序去抓取網頁文件,無疑是十分脆弱的。這可能對抓取大多數網頁沒有什么問題,但是某些網頁,你會抓不到目標文件,取而代之的抓到意想不到的網頁代碼。這是什么原因呢?

其實,curl_setopt()的可選參數有的是十分重要的,在抓取網頁這部分,有一個參數我們必須要考慮進去,那就是UserAgent。什么是UserAgent?UserAgent簡稱(UA),是一個只讀的字符串,它聲明了瀏覽器用于 HTTP 請求的用戶代理頭的值。簡單來說,就是“聲明用什么瀏覽器來打開目標網頁”。

說到這里,可能有的人會意識到不同的UserAgent會得到不同的網頁請求了,例如手機瀏覽器和PC瀏覽器,就會得到不同的網頁文件。舉個例子,假如PC瀏覽器和手機瀏覽器,打開www.cuckooft.com,就會得到不同的結果頁,這其實就是UserAgent的不同的結果。居于這個原因,卡卡測速網網站速度測試的程序就使用了用戶自定義UA的網頁抓取程序。

好了,說到這里,我想大家都明白上述代碼應該怎樣修改了吧。

正確的寫法應該是這樣的:

<?php
$UserAgent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)'
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, ‘http://www.cuckooft.com/’);
curl_setopt($curl, CURLOPT_USERAGENT, $UserAgent);
$data = curl_exec($curl);
?>

上述代碼聲明使用IE瀏覽器打開網頁。

當然,你也可以聲明用Firefox的UserAgent打開網頁,代碼如下:

$UserAgent = 'Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1';

你還可以聲明用其他UserAgent打開網頁。下面是IE8的UserAgent:

IE8 on Windows Vista (兼容瀏覽)
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0)

IE8 on Windows Vista
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)

IE8 on Windows 7
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)

64-bit IE on 64-bit Windows 7:
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0)

32-bit IE on 64-bit Windows 7:
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0)

Firefox的UserAgent:

Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1
Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070309 Firefox/2.0.0.3
Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070803 Firefox/1.5.0.12

Chrome的UserAgent:

Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13

Navigator的userAgent:

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080219 Firefox/2.0.0.12 Navigator/9.0.0.6

Safari的userAgent:

Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13 
Mozilla/5.0 (iPhone; U; CPU like Mac OS X) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.3

Opera的userAgent:

Opera/9.27 (Windows NT 5.2; U; zh-cn) 
Opera/8.0 (Macintosh; PPC Mac OS X; U; en) 
Mozilla/5.0 (Macintosh; PPC Mac OS X; U; en) Opera 8.0

通過設置UserAgent,可以避免有的網頁因UA不同而返回不同http請求的錯誤,讓自己的抓取網頁程序更加完善嚴密。

標簽: UserAgent  
相關文章
    x