中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何從UserAgent識別搜索引擎并判斷真假蜘蛛

發布時間:2020-07-20 11:40:57 來源:億速云 閱讀:479 作者:清晨 欄目:編程語言

小編給大家分享一下如何從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識別搜索引擎并判斷真假蜘蛛有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

叙永县| 岳阳县| 富锦市| 华坪县| 阿克| 涪陵区| 松溪县| 兴化市| 达日县| 内黄县| 门头沟区| 德阳市| 麟游县| 三门县| 安岳县| 泰兴市| 邛崃市| 抚顺市| 淮北市| 北流市| 桂平市| 永德县| 青海省| 镇江市| 五台县| 漠河县| 怀仁县| 通河县| 德昌县| 安远县| 唐海县| 玉龙| 从江县| 东平县| 铜川市| 珠海市| 娄烦县| 鹤山市| 山阳县| 盐山县| 永嘉县|