日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
我是一個(gè)WebCrawler,你們經(jīng)常說(shuō)的爬蟲(chóng)!

誕生

10年積累的成都做網(wǎng)站、成都網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶(hù)對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶(hù)得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有金秀免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

我是一個(gè)Web Crawler , 有時(shí)候稱(chēng)為Spider , 你們經(jīng)常說(shuō)的爬蟲(chóng)就是我。

我想我是遇到了好時(shí)代,感謝IT政府,提供了簡(jiǎn)單的HTTP協(xié)議,還有HTML,CSS, JavaScript這一系列開(kāi)放的技術(shù), 原來(lái)的桌面應(yīng)用,局域網(wǎng)應(yīng)用都被搬到了網(wǎng)絡(luò)上,形成了一個(gè)個(gè)的網(wǎng)站, 網(wǎng)站互聯(lián)起來(lái),形成了一個(gè)覆蓋全世界的大網(wǎng)。

在這個(gè)大背景下,我應(yīng)運(yùn)而生,開(kāi)始在這個(gè)大網(wǎng)上爬來(lái)爬去,收集、分析各種網(wǎng)頁(yè)的數(shù)據(jù)。

我有幾個(gè)親戚在搜索引擎公司工作,聽(tīng)說(shuō)他們的目標(biāo)是把全世界的網(wǎng)頁(yè)都給爬下來(lái),形成索引,讓人類(lèi)搜索, 想想全世界網(wǎng)頁(yè)的數(shù)量,這幾位親戚的工作實(shí)在是讓人敬畏。

我的工作原理非常簡(jiǎn)單, 給我一個(gè)URL,我就可以通過(guò)HTTP協(xié)議把HTML頁(yè)面下載下來(lái)。然后分析一下這個(gè)頁(yè)面中有哪些元素,比如說(shuō),表單,表格,鏈接等等。

反正這個(gè)HTML頁(yè)面是純文本的,我想怎么折騰都可以,我可以把它形成一顆DOM樹(shù),也可以用正則表達(dá)式去獲得一段我想要的內(nèi)容,總之方法多得很呢!

最重要的是,我要拿到這個(gè)頁(yè)面中的其他鏈接, 然后再拿到這些鏈接對(duì)應(yīng)的HTML頁(yè)面,繼續(xù)我的分析,如此循環(huán)下去,就能把所有的頁(yè)面給找出來(lái)了,所有的內(nèi)容都盡在掌握!

有時(shí)候,有些HTML頁(yè)面是受到保護(hù)的,必須登陸以后才能夠訪(fǎng)問(wèn),這也難不住我,人類(lèi)早已經(jīng)申請(qǐng)了很多的賬號(hào)。我把這些用戶(hù)名和密碼拿過(guò)來(lái),找到對(duì)應(yīng)的登錄框,向服務(wù)器端發(fā)送一個(gè)請(qǐng)求,就可以順利登錄了, 訪(fǎng)問(wèn)受保護(hù)網(wǎng)頁(yè)的大門(mén)就敞開(kāi)了。

所以說(shuō)我有兩個(gè)最基本的能力, 第一,通過(guò)HTTP協(xié)議訪(fǎng)問(wèn)網(wǎng)頁(yè);  第二,分析HTML網(wǎng)頁(yè)。

斗爭(zhēng)

所謂“爬亦有道”, 我們爬蟲(chóng)界也是有一定規(guī)范的,比如說(shuō),你在你的網(wǎng)站的根目錄下放一個(gè)robots.txt文件,里邊定義好那些內(nèi)容對(duì)爬蟲(chóng)開(kāi)放,那些內(nèi)容不希望爬蟲(chóng)訪(fǎng)問(wèn), 那我們就不會(huì)去爬這些內(nèi)容了。

當(dāng)然這只是個(gè)約定俗成的規(guī)范,而不是標(biāo)準(zhǔn), 所以總是有一些爬蟲(chóng)完全不遵守規(guī)則,置這些規(guī)范于不顧。

作為程序,我們?cè)L問(wèn)起網(wǎng)絡(luò)來(lái), 要遠(yuǎn)遠(yuǎn)比人類(lèi)快得多,人類(lèi)還需要在界面上移動(dòng)鼠標(biāo)點(diǎn)擊,我們則是拿到URL后直接、迅速、毫不猶豫地訪(fǎng)問(wèn), 這樣一來(lái),如果爬蟲(chóng)很多,常常給一些網(wǎng)站帶來(lái)非常大的流量,給服務(wù)器帶來(lái)很大的壓力,影響了正常用戶(hù)的訪(fǎng)問(wèn), 從而影響了網(wǎng)站的收入。

斷人財(cái)路,網(wǎng)站就急眼了, 肯定要反擊, 于是他們網(wǎng)站便提出了各種各樣的辦法,成為反爬蟲(chóng)。 他們有反爬蟲(chóng), 我們便反反爬蟲(chóng),于是便引發(fā)了一場(chǎng)波瀾壯闊,反復(fù)拉鋸的戰(zhàn)爭(zhēng)。

首先他們得把我們給識(shí)別出來(lái)才行。最早爬蟲(chóng)在發(fā)出HTTP請(qǐng)求的時(shí)候,不注意偽裝自己,不會(huì)修改User Agent ,相當(dāng)于告訴對(duì)方說(shuō): 我是爬蟲(chóng)。

于是這些網(wǎng)站輕輕松松的就把我們識(shí)別出來(lái),返回一個(gè)錯(cuò)誤碼,或者干脆禁止我們?cè)L問(wèn)。

什么? 你還不知道什么是User Agent ?

User Agent其實(shí)就是HTTP Header 中的一個(gè)字符串,讓服務(wù)器端能識(shí)別客戶(hù)端的操作系統(tǒng)及版本,瀏覽器及版本,瀏覽器引擎,語(yǔ)言等等信息。 這樣可以針對(duì)性地做一些處理,例如發(fā)送桌面版或者手機(jī)版的網(wǎng)頁(yè)。

比如: User-Agent:Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)

后來(lái)我們也學(xué)精了,把這個(gè)User Agent 設(shè)置得和人類(lèi)的瀏覽器一模一樣,對(duì)方就不好識(shí)別了。

有時(shí)候我們還可以偽裝成Google的爬蟲(chóng),百度的爬蟲(chóng), 各個(gè)網(wǎng)站自然希望百度和Google去對(duì)自己的網(wǎng)頁(yè)做索引的,所以對(duì)這樣的User Agent不會(huì)下狠手拒絕。

但是他們也有別的辦法,比如分析我們的行為,利用我們速度快的特點(diǎn), 比如說(shuō),一秒之內(nèi)有多少次請(qǐng)求,就認(rèn)為是爬蟲(chóng)。

我們也得斗智斗勇,訪(fǎng)問(wèn)一會(huì)兒就休眠幾秒鐘,然后接著再訪(fǎng)問(wèn),讓他們的策略失效。

但是我們也不能老是休息呀,如果休息得太多,那我們就會(huì)人類(lèi)的速度差不多了,爬蟲(chóng)還有什么意義?

陷阱,驗(yàn)證碼,投毒

有些網(wǎng)站會(huì)采取一些非?!皭毫印钡氖侄危易铍y以防范的就是陷阱。

具體來(lái)說(shuō),就是在網(wǎng)站發(fā)回的HTML頁(yè)面中,包含一些人類(lèi)肉眼看不到的鏈接,比如弄個(gè)一個(gè)像素大小的圖片,上面有個(gè)鏈接。

人類(lèi)看不到,是絕對(duì)不會(huì)點(diǎn)擊的,但是我們爬蟲(chóng)是程序啊,能分析所有的鏈接并訪(fǎng)問(wèn)之。 但是以我們的智商,并不知道這是一個(gè)陷阱?。?/p>

這些陷阱就像漂浮在網(wǎng)頁(yè)中的幽靈, 只要我們一訪(fǎng)問(wèn)這些鏈接,服務(wù)器立刻就會(huì)知道,哼哼,又來(lái)一個(gè)爬蟲(chóng),立刻啟動(dòng)大殺招:封IP!

他們還有一招就是驗(yàn)證碼, 如果一段時(shí)間內(nèi)訪(fǎng)問(wèn)的次數(shù)超過(guò)了某個(gè)閾值,立刻顯示一個(gè)圖形驗(yàn)證碼,輸入驗(yàn)證碼以后才能繼續(xù),這實(shí)在是太討厭了, 因?yàn)轵?yàn)證碼是個(gè)圖片, 人類(lèi)肉眼輕松識(shí)別,可是我想識(shí)別還得靠別的軟件或者系統(tǒng),比如OCR。

但是驗(yàn)證現(xiàn)在搞得越來(lái)越復(fù)雜,什么滑塊驗(yàn)證,什么數(shù)學(xué)題...... 單純的OCR都不夠了。

不過(guò)我也不怕,我可以做分布式,反正機(jī)器多,讓每個(gè)機(jī)器上的爬蟲(chóng)運(yùn)行得稍微慢一點(diǎn),不要觸發(fā)服務(wù)器端的各種討厭的封鎖策略。

我還可以用代理,讓IP不斷變換,封了一個(gè)IP, 就用另外一個(gè),子子孫孫無(wú)窮匱也。

我最煩的就是“投毒”,這一招最損, 網(wǎng)站識(shí)別出來(lái)我是爬蟲(chóng)以后,并不會(huì)把我的IP關(guān)到小黑屋,而是很陰險(xiǎn)地發(fā)送一些假數(shù)據(jù),和真實(shí)數(shù)據(jù)混在一起,讓我喜滋滋地取走,不知道過(guò)了多少天,主人用數(shù)據(jù)做分析時(shí)才發(fā)現(xiàn): 嗯,這數(shù)據(jù)有點(diǎn)不對(duì)頭?。?到底是怎么回事?。?!  于是我被拖出去打了50大板,真是冤枉啊。

新裝備

最近的日子有點(diǎn)不大對(duì)頭兒,訪(fǎng)問(wèn)一個(gè)URL后,返回的HTML特別少,JS特別多,我從HTML中幾乎找不到什么有用的東西。

主人看到我干活效率驟然降低,趕緊親自上手研究了一番,他用Chrome打開(kāi)網(wǎng)站,按F12, 查看源代碼和網(wǎng)絡(luò)請(qǐng)求, 嘆了一口氣說(shuō): “原來(lái)的辦法都不管用了,這些網(wǎng)站都在用JavaScript在瀏覽器端渲染了!”

不過(guò)他接著又興奮地說(shuō):“這也許是一件好事情,這些JavaScript通過(guò)AJAX的方式訪(fǎng)問(wèn)后端網(wǎng)站的API,返回的數(shù)據(jù)都是JSON,我分析下,只要弄清楚這些API的輸入和輸出, 直接調(diào)用API就可以拿到數(shù)據(jù)了?!?/p>

其實(shí)都是分析,只不過(guò)原來(lái)分析HTML結(jié)構(gòu),從中取出內(nèi)容,現(xiàn)在是分析后端服務(wù)器提供的API,直接獲取到了數(shù)據(jù),似乎更加方便。

但時(shí)候直接調(diào)用這些API也是有點(diǎn)小麻煩,比如很多時(shí)候,都需要進(jìn)行認(rèn)證,比如發(fā)個(gè)token什么的給服務(wù)器,要不然人家就不讓調(diào)用。

后來(lái)主人說(shuō),算了,實(shí)在是麻煩,我給我的爬蟲(chóng)升級(jí)下裝備吧。

新裝備其實(shí)就是一個(gè)內(nèi)嵌的瀏覽器,這個(gè)瀏覽器不需要界面顯示, 可以在程序中靜悄悄地執(zhí)行,主人把他叫做無(wú)界面瀏覽器,或者無(wú)頭瀏覽器。

(碼農(nóng)翻身注: 例如selenium,phantomjs等)

有了全功能的內(nèi)嵌瀏覽器,相當(dāng)于一個(gè)真正的人類(lèi)在請(qǐng)求網(wǎng)頁(yè)了,把JavaScript下載下來(lái),不是要在瀏覽器中做渲染嗎?等的就是你! 管你什么AJAX, token ,加密, 這里統(tǒng)統(tǒng)可以執(zhí)行。

這個(gè)無(wú)頭瀏覽器渲染完以后,我就可以拿到HTML做后續(xù)的分析了。

一切盡在掌握,這種感覺(jué)實(shí)在美妙。

不過(guò)缺點(diǎn)也是有的: 慢! 沒(méi)辦法,有得必有失嘛, 我們還可以采用分布式運(yùn)行的利器,多跑一些爬蟲(chóng)的實(shí)例,人多力量大。

總結(jié)

我們爬蟲(chóng)界的終極目標(biāo)就是和人類(lèi)的行為保持一致,這樣就網(wǎng)站就無(wú)法識(shí)別了,只不過(guò)路漫漫其修遠(yuǎn)兮,雙方的爭(zhēng)斗估計(jì)會(huì)一直持續(xù)下去。

在斗爭(zhēng)中,建議大家遵循一個(gè)原則:“斗而不破”, 不能砸網(wǎng)站的飯碗,要不然人家一怒之下把功能下線(xiàn)了,那大家徹底玩完。


當(dāng)前題目:我是一個(gè)WebCrawler,你們經(jīng)常說(shuō)的爬蟲(chóng)!
鏈接分享:http://www.5511xx.com/article/djiejji.html