我是一個爬蟲,天天穿行於互聯網之上,爬取我須要的一切。前端
提及來還要感謝HTTP協議,由於它,全世界的網站和瀏覽器纔可以鏈接通訊,而我也是藉助HTTP協議,獲取我想要的數據。程序員
我只須要假裝成一個瀏覽器,向服務器發送HTTP請求,就能拿到網頁HTML文件。編程
接着,我再按照HTML的格式規範,去解析其中的圖片、連接、表單後端
等等我關注的信息。獲取連接標籤之後,我又能夠進一步爬取連接背後的網頁,如此反覆,要不了多久,一個網站中暴露出來的內容我就能爬個乾乾淨淨。跨域
固然了,我們作爬蟲也仍是有底線的。幹咱們這一行,有一個約定俗成的規定,那就是Robots協議。瀏覽器
只要你在網站的根目錄下放置一個叫robots.txt的文件,裏面寫上哪些目錄禁止訪問,我就會繞道而行,就像這樣:服務器
User-agent: *markdown
Disallow: /a/網絡
Disallow: /b/前後端分離
Disallow: /c/
就像程序員們常常互相鄙視同樣,在我們爬蟲的圈子裏,也存在鄙視鏈。
地位最高的要數搜索引擎的爬蟲了,他們高高在上,正大光明的爬,各個網站歡迎還來不及,都想被他們收錄到搜索引擎之中,給網站帶來流量。這些爬蟲,都是圈子裏的大佬,咱們惹不起。
另外有一些爬蟲,他們有的不遵照robots協議,隨意亂爬,有的一每天的淨知道爬美女圖片,把人家服務器爬崩潰了,這些爬蟲咱們也是看不起的。
像我這樣老實本分的爬蟲,平日的工做就是爬取一些網站的數據,像購物網站、點評網站等等。雖然咱們很守規矩,但這些個網站仍是很不待見咱們,爲了拿到數據,咱們展開了曠日持久的拉鋸戰。
如今不少網站都上雲了,雲上的資源可昂貴了,CPU、內存、存儲這些都價格不菲,尤爲是網絡帶寬,價格是真心貴。
那些網站不待見我們這些爬蟲也就能夠理解了,咱們不像搜索引擎爬蟲能夠給他們帶來好處,相反,還會消耗他們的服務器性能,花掉他們寶貴的流量,那但是白花花的人民幣,誰不心疼啊?
因此這些網站加了一個措施:一旦在HTTP請求中的user-agent字段發現這是一個爬蟲,那就不搭理咱們了。
這個user-agent是HTTP協議中表示客戶端名字的字段,那個時候我剛剛入行,沒什麼經驗,不懂得假裝,很容易就被發現。
爲了可以繼續爬數據,我只好改頭換面,假裝成了瀏覽器的名字,圈子裏有的兄弟還假裝成了搜索引擎爬蟲的名字,我可不像他們那樣沒下線。
這一招管用了沒多久,這些網站就升級了策略,經過咱們的行爲來識別是否是真的瀏覽器。咱們畢竟是程序,那速度比人類點擊快多了,網站一旦發現咱們短期內發起了不少請求,那就掐斷鏈接。
我只好下降爬取的頻率,避免被拉入黑名單。
有些網站更狠,在網頁裏面插入一些假的圖片,只有幾個像素那種,人類的眼睛是看不見的,可是咱們不知道啊,對我來講都是標籤,我一訪問就中計了!馬上被拉入黑名單。
沒有辦法,攤上這種事,我只好想辦法換個IP再去爬,真是難頂。
據說圈子裏有些大佬用上了分佈式技術,組團去爬,不少個IP地址,其中一個或者幾個封了也不用怕,我真是很羨慕。
在個人職業生涯中,遇到過一些奇怪的網站,明明網頁中有數據,可是我一訪問拿到的HTML中啥也沒有。
後來才知道,原來他們用上了一個叫先後端分離開發的技術,數據再也不從服務器渲染到HTML網頁中,而是瀏覽器經過單獨的API接口拿到後再動態加載出來,難怪我拿到的只是一個空殼子。
爲了拿到數據,我只好也學着去請求這些數據接口,不過由於這些網站都有API網關,會檢查請求的Token或者Authorization之類的認證字段,再加上我不知道他們的接口參數格式,致使我常常拿不到數據。
到了最近兩年,我拿到的網頁HTML愈來愈簡單了,在瀏覽器中豐富多彩的頁面,一查看源代碼居然只有簡單幾行,真是見了鬼了!
終於有一天,一個前輩告訴我,如今流行單頁應用SPA了,頁面全都是在前端動態生成的,拿到的HTML根本沒有價值。
這簡直欺人太甚了!
一不作二不休,我決定弄一個真正的瀏覽器進來,嵌入到個人程序中,讓他去真正的渲染網頁,渲染完成後我再去取數據!
這個內嵌的瀏覽器沒有界面,專門爲我服務,前端渲染就前端渲染,我不再怕了!
到後來,不知道是誰發明的,網站們紛紛用上了一種叫驗證碼的技術,給咱們出了難題。
開始的驗證碼還算比較簡單,通常都是些簡單的數字、英文字符作了些變形,就像這樣:
圈子裏很快有大佬教咱們用文字識別技術OCR來自動識別這種驗證碼,我也折騰了一下,費了老大勁終於能夠識別出來,準確率不敢說100%,99%仍是有的。
不過沒多久,這驗證碼就變得愈來愈複雜,什麼漢字識別,物體識別,滑動解鎖,一個比一個難,根本超出了個人理解範圍,你瞧瞧下面這些驗證碼,這是人乾的事兒嗎?
哎,這還真是人才能幹的事,不是咱們爬蟲能幹的~
現在,這些網站的反爬蟲技術愈來愈先進,咱們能發揮的空間被一步步擠壓。
前段時間,有個愣頭青爬蟲把一家公司的服務器給爬崩潰了,把人家正常業務都弄停掉了,他還被抓了起來,如今監管愈來愈嚴,搞得你們人心惶惶。
內憂外患不斷,很多爬蟲兄弟失業的失業,轉行的轉行,爬蟲這碗飯,真是愈來愈很差吃了。。。