成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

大話爬蟲的實(shí)踐技巧

沈儉 / 951人閱讀

摘要:圖意淫爬蟲與反爬蟲間的對(duì)決數(shù)據(jù)的重要性如今已然是大數(shù)據(jù)時(shí)代,數(shù)據(jù)正在驅(qū)動(dòng)著業(yè)務(wù)開(kāi)發(fā),驅(qū)動(dòng)著運(yùn)營(yíng)手段,有了數(shù)據(jù)的支撐可以對(duì)用戶進(jìn)行用戶畫像,個(gè)性化定制,數(shù)據(jù)可以指明方案設(shè)計(jì)和決策優(yōu)化方向,所以互聯(lián)網(wǎng)產(chǎn)品的開(kāi)發(fā)都是離不開(kāi)對(duì)數(shù)據(jù)的收集和分析,數(shù)


圖1-意淫爬蟲與反爬蟲間的對(duì)決
數(shù)據(jù)的重要性

如今已然是大數(shù)據(jù)時(shí)代,數(shù)據(jù)正在驅(qū)動(dòng)著業(yè)務(wù)開(kāi)發(fā),驅(qū)動(dòng)著運(yùn)營(yíng)手段,有了數(shù)據(jù)的支撐可以對(duì)用戶進(jìn)行用戶畫像,個(gè)性化定制,數(shù)據(jù)可以指明方案設(shè)計(jì)和決策優(yōu)化方向,所以互聯(lián)網(wǎng)產(chǎn)品的開(kāi)發(fā)都是離不開(kāi)對(duì)數(shù)據(jù)的收集和分析,數(shù)據(jù)收集的一種是方式是通過(guò)上報(bào)API進(jìn)行自身平臺(tái)用戶交互情況的捕獲,還有一種手段是通過(guò)開(kāi)發(fā)爬蟲程序,爬取競(jìng)品平臺(tái)的數(shù)據(jù),后面就重點(diǎn)說(shuō)下爬蟲的應(yīng)用場(chǎng)景和實(shí)踐中會(huì)遇到的問(wèn)題和反反爬蟲的一些套路與技巧。


應(yīng)用場(chǎng)景

互聯(lián)網(wǎng)平臺(tái),偏向銷售公司,客戶信息的爬取

客戶信息的爬取可以釋放銷售人員尋找客戶資源的時(shí)間,提高銷售對(duì)市場(chǎng)開(kāi)發(fā)的效率

爬取相關(guān)平臺(tái)上的客戶信息,上報(bào)到CRM管理系統(tǒng),提供給銷售人員進(jìn)行開(kāi)發(fā)

資訊爬取并應(yīng)用到平臺(tái)業(yè)務(wù)中

經(jīng)常瀏覽資訊的時(shí)候會(huì)發(fā)現(xiàn)其實(shí)很多平臺(tái)的熱門資訊內(nèi)容都很相似,尊重版權(quán)的平臺(tái),會(huì)標(biāo)明來(lái)源出處

爬取資訊信息,應(yīng)用到資訊業(yè)務(wù)中,可以減輕資訊內(nèi)容編輯人員的壓力,如果不需要?jiǎng)?chuàng)造自己的內(nèi)容,也可全部托管給程序AI運(yùn)營(yíng)

競(jìng)品公司重要數(shù)據(jù)挖掘分析與應(yīng)用

競(jìng)品平臺(tái)重要業(yè)務(wù)數(shù)據(jù),如:汽車X家的車型信息,X哪兒的酒店信息,返X網(wǎng)的商品信息,... ...

爬取競(jìng)品重要數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行篩選和處理,然后投入業(yè)務(wù)中展示,增加這塊業(yè)務(wù)數(shù)據(jù)量,減輕這塊資源的運(yùn)營(yíng)編輯的壓力

... ...


爬蟲開(kāi)發(fā)

python開(kāi)發(fā)爬蟲(推薦)

入門也比較簡(jiǎn)單,代碼短小精干,各種便于爬蟲開(kāi)發(fā)的模塊和框架

其他語(yǔ)言

很多語(yǔ)言也都可以開(kāi)發(fā)爬蟲,但是均都不是很全面,根據(jù)實(shí)際技術(shù)棧和開(kāi)發(fā)場(chǎng)景去使用,語(yǔ)言只是工具,思路才是通用的


爬蟲必備技巧
做爬蟲開(kāi)發(fā),需要對(duì)WEB這塊有相對(duì)全面深入的理解,這樣后面遇到反爬蟲才能得心應(yīng)手,見(jiàn)招拆招

了解HTML

會(huì)使用HTML標(biāo)簽構(gòu)造頁(yè)面,知道如何解析出DOM里標(biāo)簽,提取想要的數(shù)據(jù)內(nèi)容

了解CSS

了解CSS,會(huì)解析出樣式里的數(shù)據(jù)內(nèi)容

了解JS

基本JS語(yǔ)法,能寫能讀懂,并了解JS庫(kù):Jquery,Vue 等,可以對(duì)使用開(kāi)發(fā)者工具調(diào)試JS

了解JSON

了解JSON數(shù)據(jù),會(huì)序列化和反序列化數(shù)據(jù),通過(guò)解析JSON對(duì)象獲取數(shù)據(jù)內(nèi)容

了解HTTP/HTTPS

能夠分析請(qǐng)求信息和響應(yīng)信息,可以通過(guò)代碼構(gòu)造請(qǐng)求

會(huì)正則解析

通過(guò)正則匹配出符合規(guī)則的字符串,提取想要的數(shù)據(jù)內(nèi)容

會(huì)數(shù)據(jù)庫(kù)操作

通過(guò)數(shù)據(jù)庫(kù)操作對(duì)爬取數(shù)據(jù)進(jìn)行存儲(chǔ),如:MYSQL語(yǔ)法

會(huì)使用抓包工具

瀏覽器F12開(kāi)發(fā)者調(diào)試工具(推薦:谷歌),Network(網(wǎng)絡(luò))欄目可以獲取抓包信息

工具:Charles,F(xiàn)iddler (可抓包HTTPS,抓包APP)

通過(guò)抓包工具可以過(guò)濾出數(shù)據(jù)接口或者地址,并且分析請(qǐng)求信息和響應(yīng)信息,定位數(shù)據(jù)所在的字段或者HTML標(biāo)簽

會(huì)使用開(kāi)發(fā)者工具

瀏覽器F12開(kāi)啟開(kāi)發(fā)者工具

需要會(huì)使用開(kāi)發(fā)者工具調(diào)試HTML,CSS,JS

會(huì)模擬請(qǐng)求

工具:Charles,F(xiàn)iddler,Postman

通過(guò)模擬請(qǐng)求,分析出請(qǐng)求需要那些必要的信息,如:參數(shù),COOKIE,請(qǐng)求頭,懂得怎么模擬請(qǐng)求就知道編碼的時(shí)候如何去構(gòu)造

能定位數(shù)據(jù)

數(shù)據(jù)在API中:前端/原生APP請(qǐng)求數(shù)據(jù)API,API返回?cái)?shù)據(jù)大部分是JSON格式,然后渲染展示

數(shù)據(jù)在HTML中:查看頁(yè)面HTML源代碼,如果源代碼里有想要獲取的數(shù)據(jù),就說(shuō)明在服務(wù)端已經(jīng)綁定好數(shù)據(jù)在HTML里

數(shù)據(jù)在JS代碼中:查看頁(yè)面HTML源代碼,如果獲取數(shù)據(jù)不在HTML里,又沒(méi)有請(qǐng)求數(shù)據(jù)API,可以看下數(shù)據(jù)是不是綁定到JS變量里

會(huì)部署

可以部署到Windows或者Linux服務(wù)器,使用工具進(jìn)行爬蟲進(jìn)程監(jiān)控,然后進(jìn)行定時(shí)輪訓(xùn)爬取


反爬蟲對(duì)抗技巧
反爬蟲可以分為服務(wù)端限制前端限制   
服務(wù)端限制:服務(wù)器端行請(qǐng)求限制,防止爬蟲進(jìn)行數(shù)據(jù)請(qǐng)求
前端限制:前端通過(guò)CSS和HTML標(biāo)簽進(jìn)行干擾混淆關(guān)鍵數(shù)據(jù),防止爬蟲輕易獲取數(shù)據(jù)

設(shè)置請(qǐng)求頭(服務(wù)端限制

Referer

User-Agent

... ...

簽名規(guī)則(服務(wù)端限制

如果是JS發(fā)起的請(qǐng)求,簽名規(guī)則可以在JS函數(shù)中找到,然后再根據(jù)規(guī)則去構(gòu)造簽名

如果是APP發(fā)起的請(qǐng)求,可能是前端調(diào)用原生封裝的方法,或者原生發(fā)起的,這個(gè)就比較無(wú)解,需要反編譯APP包,也不一定能成功

延遲,或者隨機(jī)延遲(服務(wù)端限制

如果請(qǐng)求被限制,建議可以試試請(qǐng)求延遲,具體延遲xxx毫秒/x秒,根據(jù)實(shí)際情況設(shè)定合適的時(shí)間

代理IP(服務(wù)端限制

如果延遲請(qǐng)求還是被限制,或者需要延遲很長(zhǎng)時(shí)間才不會(huì)被限制,那就可以考慮使用代理IP,根據(jù)實(shí)際場(chǎng)景與限制的規(guī)律去運(yùn)用,一般只要被限制的時(shí)候就切換請(qǐng)求的代理IP,這樣就基本可以繞過(guò)限制

目前有很多收費(fèi)的代理IP服務(wù)平臺(tái),有各種服務(wù)方式,具體可以搜索了解下,費(fèi)用一般都在可以接受的范圍

登錄限制(服務(wù)端限制

請(qǐng)求帶上登錄用戶的COOKIE信息

如果登錄用戶COOKIE信息會(huì)在固定周期內(nèi)失效,那就要找到登錄接口,模擬登錄,存儲(chǔ)COOKIE,然后再發(fā)起數(shù)據(jù)請(qǐng)求,COOKIE失效后重新這個(gè)步驟

驗(yàn)證碼限制(服務(wù)端限制

簡(jiǎn)單驗(yàn)證碼,對(duì)圖片里的字母或者數(shù)字進(jìn)行識(shí)別讀取,使用識(shí)圖的模塊包可以實(shí)現(xiàn)

復(fù)雜驗(yàn)證碼,無(wú)法通過(guò)識(shí)圖識(shí)別,可以考慮使用第三方收費(fèi)服務(wù)

CSS/HTML混淆干擾限制(前端限制

前端通過(guò)CSS或者HTML標(biāo)簽進(jìn)行干擾混淆關(guān)鍵數(shù)據(jù),破解需要抽樣分析,找到規(guī)則,然后替換成正確的數(shù)據(jù)

1 . font-face,自定義字體干擾

如列子:汽車X家論帖子,貓X電影電影評(píng)分


 




 Mercedes C+ 會(huì)員招募

破解思路:
找到ttf字體文件地址,然后下載下來(lái),使用font解析模塊包對(duì)ttf文件進(jìn)行解析,可以解析出一個(gè)字體編碼的集合,與dom里的文字編碼進(jìn)行映射,然后根據(jù)編碼在ttf里的序號(hào)進(jìn)行映射出中文

可以使用FontForge/FontCreator工具打開(kāi)ttf文件進(jìn)行分析

2 . 偽元素隱藏式

通過(guò)偽元素來(lái)顯示重要數(shù)據(jù)內(nèi)容
如例子:汽車X家





-

破解思路:
找到樣式文件,然后根據(jù)HTML標(biāo)簽里class名稱,匹配出CSS里對(duì)應(yīng)class中content的內(nèi)容進(jìn)行替換


3 . backgroud-image

通過(guò)背景圖片的position位置偏移量,顯示數(shù)字/符號(hào),如:價(jià)格,評(píng)分等
根據(jù)backgroud-postion值和圖片數(shù)字進(jìn)行映射


4 . html標(biāo)簽干擾

通過(guò)在重要數(shù)據(jù)的標(biāo)簽里加入一些有的沒(méi)的隱藏內(nèi)容的標(biāo)簽,干擾數(shù)據(jù)的獲取
如例子:xxIP代理平臺(tái)



    

2

2
02

.1

.1
09
. 23

7

7

.

3

3
5
: 80

破解思路:
過(guò)濾掉干擾混淆的HTML標(biāo)簽,或者只讀取有效數(shù)據(jù)的HTML標(biāo)簽的內(nèi)容

... ... (反爬蟲腦洞有多大,反反爬蟲拆招思路就有多淫蕩)

防止投毒

有些平臺(tái)發(fā)現(xiàn)爬蟲后并不會(huì)進(jìn)行限制封殺,而是給爬蟲提供誤導(dǎo)的數(shù)據(jù),影響競(jìng)品公司進(jìn)行錯(cuò)誤的決策,這就是投毒

為了防止被投毒,需要對(duì)數(shù)據(jù)進(jìn)行抽樣校驗(yàn)


總結(jié)

目前大部分中小平臺(tái)對(duì)防御爬蟲的意識(shí)還比較薄弱,促使了爬蟲的盛行,通過(guò)爬蟲可以用比較小的代價(jià),獲取更大的利益

競(jìng)品數(shù)據(jù)的挖掘分析與應(yīng)用對(duì)于業(yè)務(wù)增長(zhǎng)有著舉足輕重的作用,爬蟲開(kāi)發(fā)對(duì)于互聯(lián)網(wǎng)產(chǎn)品公司的來(lái)說(shuō)是個(gè)必不可少的技術(shù)

當(dāng)前并沒(méi)有一種可以完全避免爬蟲的技術(shù),所以添加反爬蟲策略只是增加了一定的難度門檻,只要拆招技術(shù)夠硬還是可以被突破翻越

反爬蟲和反反爬蟲是技術(shù)之間的較量,這場(chǎng)沒(méi)有硝煙的戰(zhàn)爭(zhēng)永不停息。(程序員何必為難程序員)


供參考代碼
font解析 C#和Python實(shí)現(xiàn)

C#

/// 需要引入PresentationCore.dll
private void Test() {
            string path = @"F:font.ttf";
            //讀取字體文件             
            PrivateFontCollection pfc = new PrivateFontCollection();
            pfc.AddFontFile(path);
            //實(shí)例化字體
            Font f = new Font(pfc.Families[0], 16);
            //設(shè)置字體
            txt_mw.Font = f;

            //遍歷輸出
            var families = Fonts.GetFontFamilies(path);
            foreach (System.Windows.Media.FontFamily family in families) {
                var typefaces = family.GetTypefaces();
                foreach (Typeface typeface in typefaces) {
                    GlyphTypeface glyph;
                    typeface.TryGetGlyphTypeface(out glyph);
                    IDictionary characterMap = glyph.CharacterToGlyphMap;
                    var datas = characterMap.OrderBy(d => d.Value).ToList();
                    foreach (KeyValuePair kvp in datas) {
                        var str = $"[{kvp.Value}][{kvp.Key}][{(char)kvp.Key}]
";
                        txt_mw.AppendText(str);
                    }
                }
            }

        }

python

# pip install TTFont
from fontTools.ttLib import TTFont
from fontTools.merge import *
me = Merger()
font = TTFont("./font.ttf")
cmaps = font.getBestCmap()
orders = font.getGlyphOrder()
# font.saveXML("F:/1.xml")
print cmaps
print orders


自我推薦

爬蟲入門可以參考我的另一篇文章:(大話爬蟲的基本套路)

爬蟲入門代碼可以參考我的Gtihub項(xiàng)目(SpiderDemo)


供參考資料

反擊爬蟲,前端工程師的腦洞可以有多大?

有哪些有趣的反爬蟲手段?


閱讀原文

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44564.html

相關(guān)文章

  • 大話WEB開(kāi)發(fā)》

    摘要:作為開(kāi)發(fā)者,需要不斷的對(duì)技術(shù)點(diǎn)進(jìn)行總結(jié),并且把它沉淀下來(lái),寫技術(shù)博文無(wú)疑是最好的方式,隨著時(shí)間流逝,還可以作為自己每個(gè)階段的技術(shù)認(rèn)知軌跡進(jìn)行回顧和反思,這里將會(huì)持續(xù)記錄對(duì)開(kāi)發(fā)相關(guān)總結(jié)內(nèi)容后端開(kāi)發(fā)大話后端開(kāi)發(fā)的奇淫技巧大集合高并發(fā)大話程序猿眼 作為WEB開(kāi)發(fā)者,需要不斷的對(duì)技術(shù)點(diǎn)進(jìn)行總結(jié),并且把它沉淀下來(lái),寫技術(shù)博文無(wú)疑是最好的方式,隨著時(shí)間流逝,還可以作為自己每個(gè)階段的技術(shù)認(rèn)知軌跡進(jìn)行...

    ytwman 評(píng)論0 收藏0
  • 大話WEB開(kāi)發(fā)》

    摘要:作為開(kāi)發(fā)者,需要不斷的對(duì)技術(shù)點(diǎn)進(jìn)行總結(jié),并且把它沉淀下來(lái),寫技術(shù)博文無(wú)疑是最好的方式,隨著時(shí)間流逝,還可以作為自己每個(gè)階段的技術(shù)認(rèn)知軌跡進(jìn)行回顧和反思,這里將會(huì)持續(xù)記錄對(duì)開(kāi)發(fā)相關(guān)總結(jié)內(nèi)容后端開(kāi)發(fā)大話后端開(kāi)發(fā)的奇淫技巧大集合高并發(fā)大話程序猿眼 作為WEB開(kāi)發(fā)者,需要不斷的對(duì)技術(shù)點(diǎn)進(jìn)行總結(jié),并且把它沉淀下來(lái),寫技術(shù)博文無(wú)疑是最好的方式,隨著時(shí)間流逝,還可以作為自己每個(gè)階段的技術(shù)認(rèn)知軌跡進(jìn)行...

    zsirfs 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<