關(guān)于網(wǎng)站的爬蟲機(jī)制
- 作者:新網(wǎng)
- 來源:新網(wǎng)
- 瀏覽:100
- 2018-02-24 17:14:44
網(wǎng)站的爬蟲就是由計(jì)算機(jī)自動(dòng)與服務(wù)器交互獲取數(shù)據(jù)的工具,爬蟲的最基本就是get一個(gè)網(wǎng)頁的源代碼數(shù)據(jù),如果更深入一些,就會出現(xiàn)和網(wǎng)頁進(jìn)行POST交互,獲取服務(wù)器接收POST請求后返回的數(shù)據(jù)。
網(wǎng)站的爬蟲就是由計(jì)算機(jī)自動(dòng)與服務(wù)器交互獲取數(shù)據(jù)的工具,爬蟲的最基本就是get一個(gè)網(wǎng)頁的源代碼數(shù)據(jù),如果更深入一些,就會出現(xiàn)和網(wǎng)頁進(jìn)行POST交互,獲取服務(wù)器接收POST請求后返回的數(shù)據(jù)。
<
div>反爬及反反爬概念的不恰當(dāng)舉例:
基于很多原因(如服務(wù)器資源,保護(hù)數(shù)據(jù)等),很多網(wǎng)站是限制了爬蟲效果的??紤]一下,由人來充當(dāng)爬蟲的角色,我們怎么獲取網(wǎng)頁源代碼?最常用的當(dāng)然是右鍵源代碼。
網(wǎng)站屏蔽了右鍵,怎么辦?拿出我們做爬蟲中最有用的東西 F12,同時(shí)按下F12就可以打開了,在把人當(dāng)作爬蟲的情況下,屏蔽右鍵就是反爬取策略,F(xiàn)12就是反反爬取的方式。
講講正式的反爬取策略:
事實(shí)上,在寫爬蟲的過程中一定出現(xiàn)過沒有返回?cái)?shù)據(jù)的情況,這種時(shí)候也許是服務(wù)器限制了UA頭(user-agent),這就是一種很基本的反爬取,只要發(fā)送請求的時(shí)候加上UA頭就可以了…是不是很簡單?
其實(shí)一股腦把需要不需要的Request Headers都加上也是一個(gè)簡單粗暴的辦法……
有沒有發(fā)現(xiàn)網(wǎng)站的驗(yàn)證碼也是一個(gè)反爬取策略呢?為了讓網(wǎng)站的用戶能是真人,驗(yàn)證碼真是做了很大的貢獻(xiàn)。隨驗(yàn)證碼而來的,驗(yàn)證碼識別出現(xiàn)了。
說到這,不知道是先出現(xiàn)了驗(yàn)證碼識別還是圖片識別呢?
簡單的驗(yàn)證碼現(xiàn)在識別起來是非常簡單的,網(wǎng)上有太多教程,包括稍微進(jìn)階一下的去噪,二值,分割,重組等概念。
思考一些這種驗(yàn)證碼應(yīng)該怎么識別?這種時(shí)候去噪就派上了用處,根據(jù)驗(yàn)證碼本身的特征,可以計(jì)算驗(yàn)證碼的底色和字體之外的RGB值等,將這些值變成一個(gè)顏色,將字體留出。
在驗(yàn)證碼的發(fā)展中,還算清晰的數(shù)字字母,簡單的加減乘除,網(wǎng)上有輪子可以用,有些難的數(shù)字字母漢字,也可以自己造輪子(比如上面),但更多的東西,已經(jīng)足夠?qū)懸粋€(gè)人工智能了。
再加一個(gè)小提示:有的網(wǎng)站PC端有驗(yàn)證碼,而手機(jī)端沒有。反爬取策略中比較常見的還有一種封IP的策略,通常是短時(shí)間內(nèi)過多的訪問就會被封禁,這個(gè)很簡單,限制訪問頻率或添加IP代理池就OK了,當(dāng)然,分布式也可以。
還有一種也可以算作反爬蟲策略的就是異步數(shù)據(jù),隨著對爬蟲的逐漸深入,異步加載是一定會遇見的問題,解決方式依然是F12。
以上就是小編對于網(wǎng)站的爬蟲機(jī)制的解析。