2011-05-14 39 views
2

我需要編寫一個網絡爬蟲,並希望能夠使用已知的用戶代理進行爬網。例如,我希望我的抓取工具充當iPhone抓取網站的移動網站,然後使用Mozilla PC代理等再次抓取。我需要爲特定的用戶代理編寫網絡爬蟲

這樣,我就能夠抓取每個「類型」網站(手機& PC)。不過,我也希望能夠設置我的抓取工具的用戶代理,因此網站管理員也會在其統計信息中看到它是一個訪問其整個網站的抓取工具,而不是真正的用戶。

所以我的問題是,你們是否知道如何在PHP中同時設置移動代理+爬蟲代理?它甚至有可能嗎?

回答

3

請參考RFC1945User Agent應如何形成:

10.15用戶代理

的用戶代理請求 - 報頭字段包含有關 用戶代理髮起請求信息。這是爲了統計目的, 協議違反的跟蹤以及爲了定製響應以避免特定用戶代理限制而對代理的用戶 進行自動識別。雖然這不是必需的,但用戶代理應該在請求中包含此字段 。該字段可以包含多個 產品標記(第3.7節)以及標識代理的註釋和構成用戶代理的重要部分的任何子產品。按照 的慣例,產品標記按其 的順序列出以標識應用程序。

User-Agent  = "User-Agent" ":" 1*(product | comment) 

例子:

User-Agent: CERN-LineMode/2.15 libwww/2.17b3 

所以你放什麼有或多或少的給你。你可能對是Googlebot移動:

或假裝成一個iPhone,並添加自己的東西

Mozilla/5.0 (iPhone; U; CPU iPhone OS) (compatible; MyBot/1.0; +http://about.my/bot") 
+0

你只是一個奇怪的。這完全是我所需要的。非常感謝你的幫助。非常感謝! – 2011-05-14 15:19:06

0
function crawl($url){ 

     $headers[] = "User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"; // <-- this is user agent 
     $headers[] = "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; 
     $headers[] = "Accept-Language:en-us,en;q=0.5"; 
     $headers[] = "Accept-Encoding:gzip,deflate"; 
     $headers[] = "Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.7"; 
     $headers[] = "Keep-Alive:115"; 
     $headers[] = "Connection:keep-alive"; 
     $headers[] = "Cache-Control:max-age=0"; 

     $curl = curl_init(); 
     curl_setopt($curl, CURLOPT_URL, $url); 
     curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); 
     curl_setopt($curl, CURLOPT_ENCODING, "gzip"); 
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
     $data = curl_exec($curl); 
     curl_close($curl); 
     return $data; 

    } 

echo crawl("http://www.google.com"); // revenge 

您可以隨時使用例如http://m.facebook.com/ W/O用戶代理,雖然大多數的網站通過讀取用戶代理重定向用戶適當的內容。

+0

是啊,我知道如何設置一個用戶代理一個特定的瀏覽器和平臺。但是,怎樣才能讓用戶代理讓網絡服務器知道我們是一個爬蟲。 – 2011-05-14 14:44:54

+0

webservers不關心它是什麼類型的流量,腳本或.htaccess是基於useragent,ip,referrer ect – 2011-05-14 14:53:09

+0

什麼是重定向勞倫斯:不,我真的需要讓web服務器知道我的爬蟲是一個爬蟲,而不是一個真正的用戶因爲我希望他們能夠使用他們的.htaccess文件阻止我的機器人。我還需要能夠將我的用戶代理設置爲移動,以便我也可以抓取移動網站。 – 2011-05-14 14:56:41