失敗了n次以后,我總結(jié)了5種爬蟲偽裝技巧!
大家好,我是菜鳥哥,今天給大家聊一聊爬蟲。
爬蟲偽裝的最高境界就是用代碼模擬人的真實(shí)操作,因?yàn)榫W(wǎng)站設(shè)計(jì)出來就是為了讓別人訪問的,掌握爬蟲的偽裝技巧,能夠讓大大提高我們爬蟲的成功率。
結(jié)合自身的經(jīng)驗(yàn),給大家介紹5種爬蟲偽裝的技巧,并把代碼模板奉上,希望能夠?qū)δ阌兴鶐椭?/p>
1.瀏覽器偽裝
因?yàn)榫W(wǎng)站服務(wù)器能夠很輕易的識(shí)別出訪問的來源瀏覽器,以requests請(qǐng)求為例,默認(rèn)header頭數(shù)據(jù)中沒有瀏覽器信息,在與瀏覽器交互時(shí)簡直就是“裸奔”,所以我們可以加入“User-Agent”信息偽裝成真實(shí)瀏覽器,代碼如下:
import requests
headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0'} #模擬成火狐瀏覽器
response = requests.get("http://www.baidu.com",headers=headers) #模擬請(qǐng)求url
2.訪問地址偽裝
訪問地址指的是headers頭部中的reffer信息,那么它有什么作用呢?舉個(gè)例子解釋一下:
我在https://bj.meituan.com/里有一個(gè)https://waimai.meituan.com/鏈接,那么點(diǎn)擊這個(gè)https://waimai.meituan.com/,它的header信息里就有:Referer=https://bj.meituan.com/
那么可以利用這個(gè)來防止盜鏈,比如我只允許我自己的網(wǎng)站訪問我自己的圖片服務(wù)器
我們可以加入“reffer”信息偽裝訪問地址,代碼如下:
import requests
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0',
'reffer':'https://bj.meituan.com/'}
response = requests.get("https://waimai.meituan.com/",headers=headers) #模擬請(qǐng)求url
3.ip地址偽裝
對(duì)于網(wǎng)絡(luò)中的反爬蟲策略來說,大多數(shù)都是根據(jù)單個(gè)IP的行為來判斷是不是網(wǎng)絡(luò)爬蟲的,例如,反爬蟲檢測(cè)到某個(gè)IP的訪問次數(shù)很多,或者是訪問的頻率很快,就會(huì)封禁這個(gè)IP。這時(shí)我們就要選擇代理IP來突破反爬蟲的機(jī)制,更穩(wěn)定的及逆行數(shù)據(jù)的爬取。python添加代理IP的代碼如下:
import requests
proxies={'https':'101.236.54.97:8866'}
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0',
'reffer':'https://bj.meituan.com/'}
response = requests.get("https://waimai.meituan.com/",headers=headers,proxies=proxies) #模擬請(qǐng)求url
代理IP可以自己去網(wǎng)上找免費(fèi)的,但不太穩(wěn)定,也可去花錢買一些比較穩(wěn)定的。
4.偽裝訪問速率
真實(shí)用戶的訪問次數(shù)以及訪問規(guī)律是很穩(wěn)定的,并不會(huì)多次的訪問,所以我們要偽裝成真實(shí)的用戶來爬取數(shù)據(jù),這樣反爬蟲機(jī)制就不會(huì)察覺,可以采用控制訪問頻率的方式,主要是隨機(jī)設(shè)置訪問時(shí)間,代碼如下:
import requests
import time,random
proxies={'https':'101.236.54.97:8866'}
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0',
'reffer':'https://bj.meituan.com/'}
for i in range(10):
response = requests.get("https://waimai.meituan.com/",headers=headers,proxies=proxies) #模擬請(qǐng)求url
time.sleep(random.uniform(1.1,5.4))
5.偽裝用戶真實(shí)信息
有些網(wǎng)頁是需要登錄后才會(huì)顯示數(shù)據(jù),而cookie值會(huì)攜帶個(gè)人的登錄信息,在爬蟲中加入cookie值就能避免登錄的麻煩,例如知乎、京東等網(wǎng)站,加入方法如下:
import requests
proxies={'https':'101.236.54.97:8866'}
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0',
'reffer':'https://bj.meituan.com/'}
cookies=''
response = requests.get("https://waimai.meituan.com/",headers=headers,proxies=proxies,,cookies=cookies) #模擬請(qǐng)求url
如果大家還有其他的爬蟲偽裝方式,歡迎在評(píng)論區(qū)留言交流!
推薦閱讀:
入門: 最全的零基礎(chǔ)學(xué)Python的問題 | 零基礎(chǔ)學(xué)了8個(gè)月的Python | 實(shí)戰(zhàn)項(xiàng)目 |學(xué)Python就是這條捷徑
干貨:爬取豆瓣短評(píng),電影《后來的我們》 | 38年NBA最佳球員分析 | 從萬眾期待到口碑撲街!唐探3令人失望 | 笑看新倚天屠龍記 | 燈謎答題王 |用Python做個(gè)海量小姐姐素描圖 |
趣味:彈球游戲 | 九宮格 | 漂亮的花 | 兩百行Python《天天酷跑》游戲!
AI: 會(huì)做詩的機(jī)器人 | 給圖片上色 | 預(yù)測(cè)收入 | 碟中諜這么火,我用機(jī)器學(xué)習(xí)做個(gè)迷你推薦系統(tǒng)電影
年度爆款文案
2).學(xué)Python真香!我用100行代碼做了個(gè)網(wǎng)站,幫人PS旅行圖片,賺個(gè)雞腿吃
9).發(fā)現(xiàn)一個(gè)舔狗福利!這個(gè)Python爬蟲神器太爽了,自動(dòng)下載妹子圖片
點(diǎn)閱讀原文,領(lǐng)AI全套資料!


