sponsored links

反爬機制阻擋你爬資料?“軟體測試工程師”是如何逆向反爬資料

嘿,大家好,我是4U。目前當下很多行業都需要爬大資料來分析行業資料或者產品資料,當然是離不開爬大資料來分析的啦。大家在使用“爬蟲”爬資料的時候是否有發現,越來越多的網站都有自己的反爬機制,抓取資料已經不像以前那麼容易獲取了,目前常見的反爬機制主要有以下幾種:

反爬機制阻擋你爬資料?“軟體測試工程師”是如何逆向反爬資料

囑咐大家一句,爬蟲世界確實很有意思,技術是無罪的,學習是可以的,但還是實際操作就要適可而止了,不要觸碰到法律的邊界線。

此內容僅供學習交流,請勿因個人意願和舉動觸碰到法律的邊界線,文明學習技術,請勿擾亂網路安全。

資料是透過動態載入的,比如某博,某日頭條,某站,某音,某紅書等等

需要登入,需要驗證碼,比如鐵路12306,某寶,某東,某品會。

請求次數頻繁,IP地址在同一時間訪問次數過多,導致IP被冰封~

資料遮蔽方式,比如訪問的資料不在原始碼中,資料隱藏在js中,比如今日分享,b站

網站為什麼要設定反爬機制?有兩個原因,一是為了保護網站安全,減輕伺服器壓力,另一個原因則是為了保護網站資料安全。

爬蟲技術者與反爬技術者一直以來就像是左右手互博,你有反爬機制,我就有反反爬技術,即見即可爬,道高一尺魔高一丈。

反爬機制阻擋你爬資料?“軟體測試工程師”是如何逆向反爬資料

今天為大家詳細介紹網站的反爬蟲機制和實用的應對方法,一般網站從三個方面反爬蟲:

  • 1.使用者請求的Headers
  • 2.使用者行為
  • 3.網站目錄和資料載入方式

前兩種比較容易遇到,大多數網站都從這些角度來反爬蟲。第三種一些應用ajax的網站會採用,這樣增大了爬取的難度(防止靜態爬蟲使用ajax技術動態載入頁面)。

1、從使用者請求的Headers反爬蟲。

這種是最常見的反爬機制,在訪問某些網站的時候,網站通常會用判斷訪問是否帶有標頭檔案來鑑別該訪問是否為爬蟲,用來作為反爬取的一種策略。

那我們就需要偽裝headers。很多網站都會對Headers的User-Agent進行檢測,還有一部分網站會對Referer進行檢測(一些資源網站的防盜鏈就是檢測Referer)。

如果遇到了這類反爬蟲機制,可以直接在爬蟲中新增Headers,將瀏覽器的User-Agent複製到爬蟲的Headers中;或者將Referer值修改為目標網站域名。

反爬機制阻擋你爬資料?“軟體測試工程師”是如何逆向反爬資料

如圖,訪問頭資訊中顯示了瀏覽器以及系統的資訊(headers所含資訊眾多,其中User-Agent就是使用者瀏覽器身份的一種標識,具體可自行查詢)

Python中urllib中的request模組提供了模擬瀏覽器訪問的功能,程式碼如下:

  • from urllib import request
  • url = http://www. baidu.com
  • # page= requestRequest (url)
  • # page add header (' User-Agent',' Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebki
  • headers ={'User-Agent': ' Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebkit/537. 36'}
  • page = request Request(url, headersheaders)
  • page_info = request urlopen(page). read().decode('utf-8')
  • print(page_info)

可以透過<code>add_header(key, value)</code> 或者直接以引數的形式和URL一起請求訪問

  • urllib.request Request()
  • urllib.request Request(url, data=None, headers={}, origin req host=None, unverifiable )

其中headers是一個字典,透過這種方式可以將爬蟲模擬成瀏覽器對網站進行訪問。

反爬機制阻擋你爬資料?“軟體測試工程師”是如何逆向反爬資料

2、基於使用者行為反爬蟲

還有一部分網站是透過檢測使用者行為,例如同一IP短時間內多次訪問同一頁面,或者同一賬戶短時間內多次進行相同操作。

這種防爬,需要有足夠多的ip來應對。

(1)大多數網站都是前一種情況,對於這種情況,使用IP代理就可以解決。可以專門寫一個爬蟲,爬取網上公開的代理ip,檢測後全部儲存起來。有了大量代理ip後可以每請求幾次更換一個ip,這在requests或者urllib中很容易做到,這樣就能很容易的繞過第一種反爬蟲。

編寫爬蟲代理:

步驟:

引數是一個字典{‘型別’:‘代理ip:埠號’}<br>   proxy_support=urllib.request.ProxyHandler({})

定製、建立一個openeropener=urllib.request.build_opener(proxy_support)

安裝opener

urllib.request.install_opener(opener)

呼叫opener  

opener.open(url)

用大量代理隨機請求目標網站,應對爬蟲攻擊

  • import urllib request
  • import random
  • import re
  • url='http://www. whatismyip. com. tw '
  • iplist=['121.193.143.249:88',"112.126.65.193:88',122.96.59.184:82',115.29.98.139:9]
  • proxy_support = urllib. request Proxyhandler({'httP': random choice(iplist)})
  • opener = urllib.request.build_opener(proxy_suppor)
  • opener.addheaders=[(' User-Agent, ' Mozilla/5.0(X11; Linux x86-64) AppleWebkit/537.36'
  • urllib.request.install_opener(opener)
  • response = urllib.request.urlopen(url)
  • html = response.read().decode(' utf-8)
  • pattern = re.compile('<h1>(.*?)</h1>.*?<h2>(,*?)</h2>')
  • iterms=re.findall(pattern, html)
  • for item in iterms:
  • print(item[0]+:"+item[1])

(2)對於第二種情況,可以在每次請求後隨機間隔幾秒再進行下一次請求。有些有邏輯漏洞的網站,可以透過請求幾次,退出登入,重新登入,繼續請求來繞過同一賬號短時間內不能多次進行相同請求的限制。

對於賬戶做防爬限制,一般難以應對,隨機幾秒請求也往往可能被封,如果能有多個賬戶,切換使用,效果更佳。

反爬機制阻擋你爬資料?“軟體測試工程師”是如何逆向反爬資料

3、動態頁面的反爬蟲

上述的幾種情況大多都是出現在靜態頁面,還有一部分網站,我們需要爬取的資料是透過ajax請求得到,或者透過Java生成的。

解決方案:Selenium+PhantomJS

Selenium:自動化web測試解決方案,完全模擬真實的瀏覽器環境,完全模擬基本上所有的使用者操作

PhantomJS :一個沒有圖形介面的瀏覽器

比如獲取某寶的個人詳情地址:

  • from selenium import webdriver
  • import time
  • import re
  • drive = webdriver.PhantomJs(executable_path = ' phantomjs-21.1-linux-x86 64/bin/phanto drive.get('https://mm. taobaocom/self/modelinfohtm? userid=189942305& iscoment=fal)
  • time. sleep(5)
  • pattern = re.compile(r'<div. *? mm-p-domain-info>*? class="mm-p-info-cell clearfix">.
  • html = drive.page_source.encode(' utf-8,' ignore')
  • items=re.findall(pattern, html)
  • for item in items:
  • print(item[0], 'http':+item[1])
  • drive.close()

4.總結

最後給大家總結一下前面所講的反爬機制應對策略(反爬):

  • 偽裝瀏覽器
  • 使用代理IP
  • 抓包分析突破非同步載入 / selenium自動化測試工具
  • 新增cookie

最後囑咐大家一句,爬蟲世界確實很有意思,技術是無罪的,學習是可以的,但還是實際操作就要適可而止了,不要觸碰到法律的邊界線。

此內容僅供學習交流,請勿因個人意願和舉動觸碰到法律的邊界線,文明學習技術,請勿擾亂網路安全。

分類: 家居
時間: 2022-02-21

相關文章

王瀾顏值不輸王祖賢,質樸也是一種美,只是不出名而已

王瀾顏值不輸王祖賢,質樸也是一種美,只是不出名而已
上世紀八十年代直至九十年代末期,是華語影視圈盛產明星的時代,尤其以港臺女星為代表,大陸也不缺美女,但因為當時大陸經濟落後,大陸美女總是從氣質上差出港臺美女一截. 港臺美女以王祖賢.邱淑貞.林青霞.鐘楚 ...

晚唐李商隱的詩太獨特了,他這十首詩作,體現出五種美,值得一品

晚唐李商隱的詩太獨特了,他這十首詩作,體現出五種美,值得一品
晚唐詩歌,雖然已經大不如前,但也湧現出諸如李商隱.杜牧這樣對後世影響極大的詩人,二人更是被合稱為"小李杜".值得一提的是,李商隱的詩情感細膩,他的詩給人五種"美" ...

有一種&quot;大變樣&quot;叫海清留長髮,年齡感太明顯,終於相信她44歲了

有一種&quot;大變樣&quot;叫海清留長髮,年齡感太明顯,終於相信她44歲了
雖然服裝效果主要是來源於服裝本身,但是隨著穿戴者自身的條件的不同,哪怕是同樣的服裝,一樣也會展現出不同的氣質,特別是髮型,對於整體服裝的效果,甚至起到相當重要的作用.短髮和長髮,都有著非常獨特的效果, ...

有一種美,叫新疆的秋

有一種美,叫新疆的秋
新疆的秋天有多美 隨手拍一張都是桌布 新疆是一個造物主偏愛的地方 雄奇的自然景觀都集中在了這片大地上 不到新疆,不知中國之大 不知天堂多美,不知什麼是一步一美景! 秋風吹百里 人間喀納斯 秋天的喀納斯 ...

有一種美叫奧黛麗•赫本
有一種美叫奧黛麗·赫本,她雖然說沒有傾國傾城,但她典雅高貴是無人可比的,世上只有此一,她無需模仿他人的美,她的美是獨一無二,是鶴立雞群的! 奧黛麗赫本的美在骨在皮更在心,她雖然經常給人呈現的是足以融化 ...

去河南旅遊時,不能忘記這4種小吃,當地人:不然算“白來”一趟

去河南旅遊時,不能忘記這4種小吃,當地人:不然算“白來”一趟
很多人都喜歡去河南,對於這個城市大家的並不是很熟悉,有些去過的人也知道河南有什麼好玩的地方,也知道河南的美食到底是得有多好,總能被大家都關注到,只是說,好的美食名氣也不低,總是能被大家都記住,當然了, ...

機芯“裝反”的表,也是另一種美?

機芯“裝反”的表,也是另一種美?
[腕錶之家 鐘錶雜談]想要只從腕錶正面就欣賞到全部的機芯元素,除了對錶盤進行鏤空處理外,還有一個更為直觀但卻又鮮有嘗試的辦法--機芯倒置.所謂機芯倒置並非簡單的對機芯進行翻轉,內部許多零件和結構都要進 ...

旅拍行攝:有一種美,叫新疆的美
新疆的美,厚重中透著清新.晶瑩剔透的天池水,宛如上天賜予我們的一塊碧玉,美不勝收. 新疆的美,大氣中透著靈動.延綿千里的天山,巍峨聳立,覆蓋其上的厚雪又化為清泉,孕育著天山南北人. 新疆的美,蒼茫中透 ...

讓聆聽變成一種美的享受,本田艾力紳無損升級丹麥丹拿232音響

讓聆聽變成一種美的享受,本田艾力紳無損升級丹麥丹拿232音響
本田艾力紳是一款中高階MPV,它外觀時尚,線條流暢,內部設計合理,中控大氣,整體造型沉穩優雅,空間寬敞充裕,操控舒適,油耗經濟,非常適合追求簡潔時尚的愛車人士,整車設計以商務風格呈現,各處配有精緻裝飾 ...

歡樂頌五美之一喬欣,膚白貌美,妥妥人間富貴花

歡樂頌五美之一喬欣,膚白貌美,妥妥人間富貴花
#歡樂頌##喬欣##喬欣工作室否認戀情##富貴花##美#

古天樂因眼傷一年不能曬燈美黑,面板加速變白,帥到不敢認

古天樂因眼傷一年不能曬燈美黑,面板加速變白,帥到不敢認
<神鵰俠侶>大家應該都看過吧,雖然大多數人對於神仙姐姐劉亦菲那一版本的比較熟悉點,但是古天樂與李若彤那一版本也是很多人的童年回憶.因為經典,它才會被拍這麼多版本,現在還有一個新的版本沒有上 ...

讓一個女人越來越美的6種習慣
我是小雨滴,歡迎點選上方文字關注,與你一起變美. 這個世界因有女人而越來越美麗.愛美是女人的天性.每個人都喜歡好看的人和物. 美麗是一種習慣,當你習慣了變美,人生就慢慢朝著美麗的方向發展.以下這種習慣 ...

院子休閒待客,裝修下了功夫“彎”一點,誰來串門都要誇一句聰明

院子休閒待客,裝修下了功夫“彎”一點,誰來串門都要誇一句聰明
想要打造個精緻的庭院,這就不得不提到弧形元素了,讓院子適當"彎"一點,完工每次誰來串門看到都要誇一句聰明!忍不住分享下: ❶弧形卡座 天氣好的時候,誰不想在院子裡曬曬太陽喝喝茶?桌 ...

奇石怪木——明清傢俱中的病態美

奇石怪木——明清傢俱中的病態美
馬未都先生說過:"中國人的審美分四個層次,位於金字塔最底端的是豔俗美,往上是含蓄美,再往上是矯情美,塔尖上則是病態美,當審美意趣達到頂峰,社會財富給予它合適的風水土壤,這種標準變得權威化,位 ...

為何“骨相美”比“皮相美”更高階?看完俞飛鴻章子怡你就明白了

為何“骨相美”比“皮相美”更高階?看完俞飛鴻章子怡你就明白了
歡迎關注"混搭時尚Anna"更多時尚資訊,分享給大家 人們對於美的定義並不相同,很多人現在就覺得自己臉上的骨架太過突出,覺得氣質不好也非常醜,都希望自己的臉上沒有任何的稜角,但是卻 ...

人生只合住湖州!景美,好吃,消費低!記3天2晚慢生活之旅

人生只合住湖州!景美,好吃,消費低!記3天2晚慢生活之旅
本內容來源於@什麼值得買APP,觀點僅代表作者本人 |作者:阿正1666 創作立場宣告:分享一下我和家人的湖州之行,感謝支援~~ 哈嘍大家好,我是阿正1666,一名愛旅遊的數碼愛好者.第19期試吃試睡 ...

農村宅基地面積超標,是單指房屋建築面積還是包括院子面積在內?

農村宅基地面積超標,是單指房屋建築面積還是包括院子面積在內?
城裡人購買的商品房,一般都是高層樓房,沒有院子,而農村農民建的房子,大多數是一層.二層都有院子和圍牆,而且有的院子很大,還可以在院子裡栽花種草,有的還在院子開出一塊菜地種植蔬菜. <中華人民共和 ...

復古也是美,10款中年大叔理想座駕分享

復古也是美,10款中年大叔理想座駕分享
復古也是美,10款中年大叔理想座駕分享 復古強調的是一個極簡,能夠勾起人們回憶的年代感,不過只要將復古的元素髮揮到極致,其實它也是一種美.而有人認為中年大叔就得頹廢,一雙永不更換的人字拖,一件歷盡磨難 ...

青海與甘肅交界,有座寶藏小縣城,幾乎包攬了兩地最美的風景

青海與甘肅交界,有座寶藏小縣城,幾乎包攬了兩地最美的風景
如果要問國內有哪些地方是一生必去一次的,那青海一定榜上有名. 青海以青藏高原雄渾壯美的自然風光而獨樹一幟,這裡有著家喻戶曉的青海湖,有著耀眼的雪山.似海的碧水,還生活著藏.回.蒙古等民族,民俗風情別具 ...

88㎡二手房拆掉2堵牆,雙衛只留一衛,做完這些面積像擴大了20㎡

88㎡二手房拆掉2堵牆,雙衛只留一衛,做完這些面積像擴大了20㎡
今天要分享的案例是一個幸福的三口之家,這套房子是兩人的婚房,跟大多數人一樣,在雙方父母的幫助下,兩個人買下了這套二手房,雖然不大,但好歹也成了有房一族.拿房後拆掉2堵牆,雙衛改獨衛,全屋鋪木質吊頂,飄 ...