新聞中心
大家好,我是鳥(niǎo)哥,今天給大家聊一聊爬蟲(chóng)。

從事服務(wù)器托管,服務(wù)器租用,云主機(jī),網(wǎng)絡(luò)空間,申請(qǐng)域名,CDN,網(wǎng)絡(luò)代維等服務(wù)。
爬蟲(chóng)偽裝的最高境界就是用代碼模擬人的真實(shí)操作,因?yàn)?a target="_blank">網(wǎng)站設(shè)計(jì)出來(lái)就是為了讓別人訪問(wèn)的,掌握爬蟲(chóng)的偽裝技巧,能夠讓大大提高我們爬蟲(chóng)的成功率。
結(jié)合自身的經(jīng)驗(yàn),給大家介紹5種爬蟲(chóng)偽裝的技巧,并把代碼模板奉上,希望能夠?qū)δ阌兴鶐椭?/p>
1.瀏覽器偽裝
因?yàn)榫W(wǎng)站服務(wù)器能夠很輕易的識(shí)別出訪問(wèn)的來(lái)源瀏覽器,以requests請(qǐng)求為例,默認(rèn)header頭數(shù)據(jù)中沒(méi)有瀏覽器信息,在與瀏覽器交互時(shí)簡(jiǎn)直就是“裸奔”,所以我們可以加入“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.訪問(wèn)地址偽裝
訪問(wèn)地址指的是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è)來(lái)防止盜鏈,比如我只允許我自己的網(wǎng)站訪問(wèn)我自己的圖片服務(wù)器
我們可以加入“reffer”信息偽裝訪問(wèn)地址,代碼如下:
- 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ò)中的反爬蟲(chóng)策略來(lái)說(shuō),大多數(shù)都是根據(jù)單個(gè)IP的行為來(lái)判斷是不是網(wǎng)絡(luò)爬蟲(chóng)的,例如,反爬蟲(chóng)檢測(cè)到某個(gè)IP的訪問(wèn)次數(shù)很多,或者是訪問(wèn)的頻率很快,就會(huì)封禁這個(gè)IP。這時(shí)我們就要選擇代理IP來(lái)突破反爬蟲(chóng)的機(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)定,也可去花錢(qián)買(mǎi)一些比較穩(wěn)定的。
4.偽裝訪問(wèn)速率
真實(shí)用戶(hù)的訪問(wèn)次數(shù)以及訪問(wèn)規(guī)律是很穩(wěn)定的,并不會(huì)多次的訪問(wèn),所以我們要偽裝成真實(shí)的用戶(hù)來(lái)爬取數(shù)據(jù),這樣反爬蟲(chóng)機(jī)制就不會(huì)察覺(jué),可以采用控制訪問(wèn)頻率的方式,主要是隨機(jī)設(shè)置訪問(wèn)時(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.偽裝用戶(hù)真實(shí)信息
有些網(wǎng)頁(yè)是需要登錄后才會(huì)顯示數(shù)據(jù),而cookie值會(huì)攜帶個(gè)人的登錄信息,在爬蟲(chóng)中加入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
本文轉(zhuǎn)載自微信公眾號(hào)「python數(shù)據(jù)分析之禪 」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系python數(shù)據(jù)分析之禪公眾號(hào)。
分享文章:失敗了n次以后,我總結(jié)了5種爬蟲(chóng)偽裝技巧!
本文URL:http://www.5511xx.com/article/cdchcdd.html


咨詢(xún)
建站咨詢(xún)
