失敗了n次以后,我總結了5種爬蟲偽裝技巧!
大家好,我是鳥哥,今天給大家聊一聊爬蟲。
爬蟲偽裝的最高境界就是用代碼模擬人的真實操作,因為網(wǎng)站設計出來就是為了讓別人訪問的,掌握爬蟲的偽裝技巧,能夠讓大大提高我們爬蟲的成功率。
結合自身的經(jīng)驗,給大家介紹5種爬蟲偽裝的技巧,并把代碼模板奉上,希望能夠?qū)δ阌兴鶐椭?/p>
1.瀏覽器偽裝
因為網(wǎng)站服務器能夠很輕易的識別出訪問的來源瀏覽器,以requests請求為例,默認header頭數(shù)據(jù)中沒有瀏覽器信息,在與瀏覽器交互時簡直就是“裸奔”,所以我們可以加入“User-Agent”信息偽裝成真實瀏覽器,代碼如下:
- 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) #模擬請求url
2.訪問地址偽裝
訪問地址指的是headers頭部中的reffer信息,那么它有什么作用呢?舉個例子解釋一下:
我在https://bj.meituan.com/里有一個https://waimai.meituan.com/鏈接,那么點擊這個https://waimai.meituan.com/,它的header信息里就有:Referer=https://bj.meituan.com/
那么可以利用這個來防止盜鏈,比如我只允許我自己的網(wǎng)站訪問我自己的圖片服務器
我們可以加入“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) #模擬請求url
3.ip地址偽裝
對于網(wǎng)絡中的反爬蟲策略來說,大多數(shù)都是根據(jù)單個IP的行為來判斷是不是網(wǎng)絡爬蟲的,例如,反爬蟲檢測到某個IP的訪問次數(shù)很多,或者是訪問的頻率很快,就會封禁這個IP。這時我們就要選擇代理IP來突破反爬蟲的機制,更穩(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) #模擬請求url
代理IP可以自己去網(wǎng)上找免費的,但不太穩(wěn)定,也可去花錢買一些比較穩(wěn)定的。
4.偽裝訪問速率
真實用戶的訪問次數(shù)以及訪問規(guī)律是很穩(wěn)定的,并不會多次的訪問,所以我們要偽裝成真實的用戶來爬取數(shù)據(jù),這樣反爬蟲機制就不會察覺,可以采用控制訪問頻率的方式,主要是隨機設置訪問時間,代碼如下:
- 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) #模擬請求url
- time.sleep(random.uniform(1.1,5.4))
5.偽裝用戶真實信息
有些網(wǎng)頁是需要登錄后才會顯示數(shù)據(jù),而cookie值會攜帶個人的登錄信息,在爬蟲中加入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) #模擬請求url
本文轉載自微信公眾號「python數(shù)據(jù)分析之禪 」,可以通過以下二維碼關注。轉載本文請聯(lián)系python數(shù)據(jù)分析之禪公眾號。