亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 建站經驗 > 正文

網絡爬蟲---必須干掉

2024-04-25 20:26:38
字體:
來源:轉載
供稿:網友

在關于網絡爬蟲的那些事(一)提到,如果爬蟲偽裝自己的User-Agent信息,就必須尋找新的辦法來封殺爬蟲了。事實上對網站來說,最大的挑戰就是如何準確的甄別一個IP發起的請求,究竟是真實用戶訪問還是爬蟲訪問呢?

先說點題外話,在很多年以前(2000年),我就做過網站流量統計系統。主流的網站流量統計系統不外乎兩種策略:一種策略是在網頁里面嵌入一段js,這段js會向特定的統計服務器發送請求的方式記錄訪問量;另一種策略是直接分析服務器日志,來統計網站訪問量。

在理想的情況下,嵌入js的方式統計的網站流量應該高于分析服務器日志,這是因為用戶瀏覽器會有緩存,不一定每次真實用戶訪問都會觸發服務器的處理。但實際情況是,分析服務器日志得到的網站訪問量遠遠高于嵌入js方式,極端情況下,甚至要高出10倍以上。

現在很多網站喜歡采用awstats來分析服務器日志,來計算網站的訪問量,但是當他們一旦采用Google Analytics來統計網站流量的時候,卻發現GA統計的流量遠遠低于awstats,所以開始懷疑GA的準確性。其實GA的統計確實會略低于真實的用戶訪問量,但數據的真實性比較靠譜,不會偏差特別大。之所以略低是因為GA的服務器有時候用戶訪問不到,還有一種情況是訪問JavaEye的用戶所在公司使用了白名單,他能訪問JavaEye卻無法訪問GA服務器,此外也有可能用戶還沒有等到GA加載就跳轉到下一頁了,所以統計量沒有被GA計算。

那么為什么GA和awstats統計會有這么大差異呢? 罪魁禍首就是把自己偽裝成瀏覽器的網絡爬蟲。一些網絡爬蟲為了避免被網站以識別User-Agent的方式封殺,就修改了自己的User-Agent信息,通常偽裝成WindowsXP上的IE6瀏覽器,也有偽裝成Firefox瀏覽器的。這種情況下awstats無法有效的識別了,所以awstats的統計數據會虛高。不過說句公道話,這也怪不了awstats,只怪爬蟲太狡猾,不但awstats無法有效識別,就算我們肉眼去查看日志,也往往無法有效識別。

因此作為一個網站來說,如果希望了解自己的網站真實訪問量,希望精確了解網站每個頻道的訪問量和訪問用戶,開發自己的網站流量統計系統就顯得非常有必要性。JavaEye網站就開發了自己的網站流量統計系統,采用在頁面里面嵌入js的方式來實現網站流量統計。因此我們可以精確的掌握登錄用戶和非登錄用戶的比例,不同的訪問偏好,JavaEye每個頻道精確的流量和比例,真實的用戶數量和分布等GA無法提供的有價值的信息。

JavaEye自己的流量統計系統盡管并不是為了甄別爬蟲而編寫的,但是他可以幫助甄別網絡爬蟲。我們知道只有用戶使用瀏覽器訪問頁面的時候才會執行js,而爬蟲并不會執行頁面里面的js,所以rails的production.log里面出現的IP地址,卻并沒有相應的流量統計系統記錄這個IP地址,我們可以99%的斷定這個IP是個爬蟲。如果爬蟲編寫者專門偽裝真實IP向流量統計服務器發起請求的話,流量統計系統也有自己的防范作弊的機制,以及數據分析機制來甄別異常的訪問請求,這點就不展開討論了。

總之有了JavaEye流量統計系統提供的真實IP作為參考標準,我們就可以拿日志里面出現的IP地址進行比較,如果日志里面某個IP發起了大量的請求,在流量統計系統里面卻根本找不到,或者即使找得到,可訪問量卻只有寥寥幾個,那么這無疑就是一個網絡爬蟲,我們可以直接用iptables封殺該C段地址了。

根據這種策略,我們可以重新調整封殺方案。首先統計production.log,統計訪問最多的200個C段地址,這僅僅需要一條shell命令:

grep Processing production.log | awk ‘{print $4}’ | awk -F‘。’ ‘{print $1“。”$2“。”$3“.0”}’ | sort | uniq -c | sort -r -n | head -n 200 》 stat_ip.log

這200個C段地址就是我們需要重點考察的對象,網絡爬蟲就混跡在這200個C段地址之內。它的格式大致如下,顯示訪問請求最多的C段IP地址和請求次數:

99650 203.208.60.0

55813 123.125.66.0

21131 221.235.58.0

18360 72.14.199.0

14632 121.0.29.0

11789 202.165.185.0

10539 61.135.216.0

10153 65.55.106.0

7001 65.55.211.0

4240 65.55.207.0

3789 219.133.0.0

3721 194.8.74.0

然后我們還需要流量統計系統提供的真實IP地址的C段地址作為參考,這已經由流量統計系統提供給我們了。

接著我們還需要準備一個白名單列表,比方說Google和百度的爬蟲IP地址段,對于這些爬蟲,我們給予放行,究竟放行哪些爬蟲,就需要完全根據自己網站的情況而定了。例如JavaEye現在的白名單(還在不斷添加中):

60.28.204.0 抓蝦

61.135.163.0 百度

61.135.216.0 有道

65.55.106.0 微軟

65.55.207.0 微軟

65.55.211.0 微軟

66.249.66.0 Google

72.14.199.0 Google

121.0.29.0 阿里巴巴

123.125.66.0 百度

124.115.10.0 騰訊搜搜

124.115.11.0 騰訊搜搜

124.115.12.0 騰訊搜搜

203.208.60.0 Google

209.85.238.0 Google

219.239.34.0 鮮果

220.181.50.0 百度

220.181.61.0 搜狗

最后我們還需要準備一個IP地址庫,對于那些被我們揪出來的爬蟲,我們還需要甄別一下他的身份,它究竟是一個惡意的爬蟲,還是一個未被我們放入白名單的合法爬蟲呢?IP地址庫很容易從互聯網下載一份,所以也不展開討論了??傊辛诉@些素材,我們要甄別網絡爬蟲就十分簡單了,僅僅十幾行ruby代碼就搞定了:

whitelist = []

IO.foreach(“#{RAILS_ROOT}/lib/whitelist.txt”) { |line| whitelist 《《 line.split[0].strip if line }

realiplist = []

IO.foreach(“#{RAILS_ROOT}/log/visit_ip.log”) { |line| realiplist 《《 line.strip if line }

iplist = []

IO.foreach(“#{RAILS_ROOT}/log/stat_ip.log”) do |line|

ip = line.split[1].strip

iplist 《《 ip if line.split[0].to_i 》 3000 && !whitelist.include?(ip) && !realiplist.include?(ip)

end

Report.deliver_crawler(iplist)

代碼的實現很簡單,就是讀入訪問請求次數超過3000次的C段地址,根據經驗來說,超過3000次的訪問請求已經非??梢闪恕H缓笕サ舭酌麊卫锩娴腃段地址,再去掉出現在真實訪問列表中的IP地址段,最后剩下來的就是高度可疑的C段地址了。對于這些地址查詢IP地址數據庫信息,再格式化成報告自動給我發送電子郵件。

最后需要人肉的簡單識別,比方說某地址的來源信息顯示為“Google公司總部”,那么我就知道這個地址需要添加到白名單里面。除去這些可以肉眼識別的地址,剩下來的就可以統統干掉了。

另外,對于這個簡單的程序還需要進一步完善,比方說不是簡單的根據realiplist進行比對和排除,而是給realiplist也建立一個ip段的統計信息,即使該段地址有真實訪問量,仍然需要進一步甄別,用該地址的請求數量除以realiplist里面的訪問數量,如果倍數大于一個閥值比方說1000,就可以斷定仍然是網絡爬蟲。

四、使用瀏覽器內核驅動的網絡爬蟲

有人在文章后面的評論里面提到一種新的爬蟲的爬取方式,就是不用程序去爬取,而是編程控制一個真正的瀏覽器內核去爬取網站,由于瀏覽器內核可以真正執行js,所以會被識別為真實用戶訪問,從而避開網站的檢查機制。這種爬蟲是最難以甄別的爬蟲,如果精心編寫,甚至可以欺騙Google的服務器。由于Safari的webkit瀏覽器內核和Firefox的Gecko瀏覽器內核都是開源的,因此一個水平比較高的程序員自己動手編寫程序驅動一個真實的瀏覽器內核作為爬蟲并不是非常困難的事情。

實際上這種爬蟲我們也遇到過幾次,但也并不難以甄別,只是需要一定的手工甄別機制,難以用程序全部自動化甄別。我們知道一個網站的真實用戶訪問量如果沒有短期的市場推廣活動,那么會保持一個比較穩定的水平,如果網站的訪問量出現一個比較大的跳躍,或者網站頻道之間的訪問比例出現突變,就可以99%斷定有此類爬蟲出現了。

那么要甄別它也很簡單,對真實訪問IP進行統計和排序,挑選出來前200名C段IP地址中每天訪問量超過3000次的IP段地址,然后去除白名單,最后再用IP地址數據庫去比對。根據經驗來說,一個C段地址每天超過3000次訪問已經肯定是一個大公司在訪問JavaEye了,可如果該來源C段并非出自像阿里巴巴,IBM中國公司,搜狐,騰訊這樣的公司地址,就可以99%斷定是網絡爬蟲,直接用iptables干掉該C段地址。

總之,通過這種方式目前已經可以有效甄別偽裝的網絡爬蟲,以及通過n多國外代理服務器的分布式網絡爬蟲,不過網站和爬蟲之間的戰爭永遠不會結束,我們可以通過每天的日志報告來檢測網站的運行狀況,一旦發現數據報告異常,就知道有新的爬蟲出現,那么就可以通過日志分析尋找封殺它的新辦法。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线丨暗呦小u女国产精品| 亚洲精品电影在线| 国产精品www网站| 热re91久久精品国99热蜜臀| 欧美又大粗又爽又黄大片视频| 久久久国产成人精品| 成人综合国产精品| 欧美日韩免费区域视频在线观看| 在线视频免费一区二区| 国产主播欧美精品| 日韩av网址在线观看| 国产精品久久久亚洲| 国产成人午夜视频网址| 亚洲一区二区三区成人在线视频精品| 日韩av理论片| 日韩精品在线免费观看视频| 啊v视频在线一区二区三区| 国产一区二区三区视频免费| 精品毛片三在线观看| 亚洲精品99久久久久中文字幕| 亚洲国产毛片完整版| 欧美裸体xxxx极品少妇| 中文字幕精品视频| 在线视频欧美日韩| 97**国产露脸精品国产| 国产成人久久久| 在线亚洲男人天堂| 国产女人18毛片水18精品| 亚洲亚裔videos黑人hd| 国产午夜精品视频免费不卡69堂| 久久人人爽人人爽爽久久| 91青草视频久久| 91网站在线免费观看| 亚洲国产精久久久久久| 欧美成人午夜剧场免费观看| 精品夜色国产国偷在线| 亚洲国产福利在线| 久久久影视精品| 精品久久久av| 51视频国产精品一区二区| 日韩av在线高清| 中文字幕亚洲二区| 日韩av在线高清| 欧美高清电影在线看| 精品露脸国产偷人在视频| 国产日韩av高清| 亚洲网站在线播放| 精品自拍视频在线观看| 日韩精品中文在线观看| 日韩在线免费视频观看| 成人h视频在线观看播放| 欧美日本在线视频中文字字幕| 欧美成人黄色小视频| www.欧美精品一二三区| 久久久久中文字幕| 91久久国产精品| 91精品国产91久久| 国产在线视频2019最新视频| 亚洲va男人天堂| 日韩精品极品视频| 91av在线网站| 欧美成年人视频网站欧美| 91九色国产社区在线观看| 欧美片一区二区三区| 欧美情侣性视频| 亚洲色图17p| 欧美高清理论片| 粗暴蹂躏中文一区二区三区| 欧美高清第一页| 欧美日韩激情小视频| 久久久久久噜噜噜久久久精品| 国产精品视频网址| 日韩美女毛茸茸| 中日韩午夜理伦电影免费| 国产精品美乳在线观看| 色综合91久久精品中文字幕| 中文字幕亚洲欧美日韩2019| 国产成人精品久久| 热re99久久精品国产66热| 日韩av在线电影网| 欧亚精品在线观看| 亚洲风情亚aⅴ在线发布| 亚洲色图在线观看| 亚洲福利在线观看| 精品久久香蕉国产线看观看gif| 久久成人在线视频| 欧美孕妇孕交黑巨大网站| 性日韩欧美在线视频| 国产成人福利视频| 美日韩精品免费视频| 国产精品嫩草影院久久久| 日韩精品视频在线免费观看| 久久久人成影片一区二区三区| 亚洲人成在线观看| 欧洲亚洲女同hd| 日韩精品在线影院| 国产不卡av在线| 69国产精品成人在线播放| 久久黄色av网站| 黄色成人在线免费| 国产精品午夜国产小视频| 国产成人免费av| 国产精品美女在线| 欧洲成人在线视频| 亚洲欧美激情精品一区二区| 91精品国产色综合| 欧美性猛xxx| 97香蕉超级碰碰久久免费的优势| 欧美激情免费视频| 国产精欧美一区二区三区| 国产精品亚洲综合天堂夜夜| 奇米四色中文综合久久| 日韩电视剧免费观看网站| 97久久精品人搡人人玩| 中文字幕日韩精品在线观看| 日本久久91av| 日韩美女视频免费在线观看| 中文字幕亚洲二区| 欧洲成人免费视频| 91sao在线观看国产| 97视频色精品| 亚洲人成欧美中文字幕| 大桥未久av一区二区三区| 69av视频在线播放| 日韩福利在线播放| 色综合91久久精品中文字幕| 欧美性猛交xxxxx免费看| 91av在线国产| 色小说视频一区| 欧美中文字幕第一页| 2019国产精品自在线拍国产不卡| 亚洲国产精品一区二区久| 久久久国产精彩视频美女艺术照福利| 一区二区成人av| 欧美孕妇性xx| 国产精品免费看久久久香蕉| 久青草国产97香蕉在线视频| 在线播放精品一区二区三区| 欧美又大粗又爽又黄大片视频| 成人午夜在线影院| 色婷婷综合久久久久中文字幕1| 日韩av在线电影网| 国产亚洲激情视频在线| 北条麻妃一区二区三区中文字幕| 欧美激情在线狂野欧美精品| 亚洲精品白浆高清久久久久久| 538国产精品视频一区二区| www.国产一区| 亚洲新声在线观看| 日韩资源在线观看| 欧美激情欧美狂野欧美精品| 日韩在线观看电影| 欧美性受xxxx黑人猛交| 91精品在线国产| 亚洲精选中文字幕| 久久影院资源网| 国内免费精品永久在线视频| 国产精品最新在线观看| 中文字幕亚洲欧美在线| 国产精品免费在线免费| 日韩av在线免费| 日本久久中文字幕| 成人美女免费网站视频| 亚洲r级在线观看|