在設定中新增個ip_pool,實則是個字典,記錄登入的ip
# 設定黑名單功能
"請求過於頻繁,請於五分鐘之後再嘗試!"
)else
:return func(blank, request)
return inner
#反爬蟲工具裝飾器
defdefined_spider
(func)
:def
inner
(blank, request)
: now_time = time.time(
)# 獲取當前訪問網頁的ip位址
ip = request.meta.get(
"remote_addr"
)# 首先,如果ip池內沒有存在該ip,在ip池中儲存該ip
if ip not
in ip_pool:
ip_pool[ip]
=[now_time]
# 資料格式為
# 取出該ip的訪問歷史
history = ip_pool.get(ip)
while history and now_time - history[-1
]>1:
# 當它在ip池內,並且訪問間隔大於1秒,正常訪問的情況
history.pop(
)# pop用於移除列表中的最後乙個元素,正常訪問,保證ip池內只有乙個該ip位址
iflen
(history)
<3:
# 當一秒訪問不超過三次
history.insert(
0, now_time)
# 在列表最前面新增最新訪問時間
return func(blank, request)
# 正常返回被裝飾函式,頁面正常訪問
else
:# 當一秒訪問超過三次
request.session[
'blackname'
]= ip # 一秒訪問超過三次,加入黑名單五分鐘,儲存在session中
request.session.set_expiry(
300)
# 設定過期時間300秒
)# 訪問太頻繁,拒絕訪問
return inner # 閉包返回inner函式
隨後便可以在需要反扒的檢視上使用
class
tagmanage
(view)
: @mytools.defined_spider
@mytools.set_black
defget(self, request)
:pass
API 反爬措施
對於資訊發布平台,最重要的資產就是資訊,如果資訊資料被爬蟲搞完了那將損失慘重,所以介面要做好反爬措施。user agent bytespider 簡易過濾,表明態度。限制ip訪問頻率 這種方式ip不能永久封禁,只能封禁一段時間。可通過購買動態ip服務或者 ip池來破解。透明 無效,普匿 無效,高匿 ...
python爬蟲常見反爬措施
1.ip封鎖 常見 反爬蟲首先考慮到會不會對使用者產生誤傷,舉個例子,在校園網內,有台機器對 持續高頻繁產生請求,校園網涉及使用者過多,但是如果封鎖ip那麼會對校園中的使用者產生誤傷,喪失了許多使用者量,就拿某寶那麼大的公司來說,不到萬不得已時,不會對ip進行長時間或者進行封鎖。解決方案 1.採用修...
js反爬學習(一)谷歌映象
3.過程分析 3.1 開啟chrome除錯,進行元素分析。隨便定位乙個 現在訪問 3.3 對資源全域性搜尋,找到visit函式 3.4 看到它還呼叫了乙個strdecode函式,再去找 3.5 看到它還呼叫了乙個base64decode函式,接著找 上面的變數也是需要的。3.6 接下來,把所有用到的...