您好,登錄后才能下訂單哦!
小編給大家分享一下如何從UserAgent識別搜索引擎并判斷真假蜘蛛,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
一般搜索引擎去爬取一個網站時,首先是去讀取網站的robots.txt 文件,看看網站管理員有沒有在該文件設置禁止某些蜘蛛,或禁止訪問
哪些路徑。然而一些流氓蜘蛛不會顧及robots.txt 文件,想爬哪就爬哪。這種情況管理員只能通過應用程序去識別判斷,是否限制某些訪
問。
識別搜索引擎
通過UserAgent 字符串來識別,下面例子是使用Go 來實現
簡單的是通過正則來識別:
spiderReg = regexp.MustCompile(`(?i)bot|crawl|spider|slurp|sohu-search|lycos|robozilla|google|Baidu`)
上面的正則就能識別大多數搜索引擎,使用方法:
if spiderReg.MatchString(r.Header.Get("User-Agent")) { // 對搜索引擎作響應 }
如果要想要從UserAgent 里分析出更多的信息,可借助一些庫來解析,如下面:
import "github.com/mssola/user_agent" ua = user_agent.UserAgent{} ua.Parse("Mozilla/5.0 (compatible; Googlebot/2.1;+http://www.google.com/bot.html)") fmt.Printf("%v\n", ua.Bot()) // => true name, version = ua.Browser() fmt.Printf("%v\n", name) // => Googlebot fmt.Printf("%v\n", version) // => 2.1
識別真假
UserAgent 字符串可以在 http 請求時設置,任何一個客戶端都可以偽造成一個搜索引擎去訪問你的網站。可以通過下面兩個步驟去識別真正的搜索引擎。
在 *nix 系統下使用 host 命令,使用方法如下面兩個示例:
$ host 207.46.13.178 178.13.46.207.in-addr.arpa domain name pointer msnbot-207-46-13-178.search.msn.com. $ host msnbot-207-46-13-178.search.msn.com msnbot-207-46-13-178.search.msn.com has address 207.46.13.178 $ host 203.208.60.24 24.60.208.203.in-addr.arpa domain name pointer crawl-203-208-60-24.googlebot.com. $ host crawl-203-208-60-24.googlebot.com crawl-203-208-60-24.googlebot.com has address 203.208.60.24
解釋一下上面的過程,首先通過來訪 IP 作DNS反向查詢,得到相關域名,再把得到的域名再做一次查詢,得到 IP,與原來的IP 相同才是比較靠譜的搜索引擎。
Go 語言里的 net 包可以實現這樣的查詢:
names, err := net.LookupAddr(ip) addrs, err := net.LookupHost(name)
通過這種方式建立一個IP白名單,就可以屏蔽掉一些來路不明的蜘蛛。
看完了這篇文章,相信你對如何從UserAgent識別搜索引擎并判斷真假蜘蛛有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。