Django專案學習 反爬措施

2021-10-08 02:26:34 字數 1650 閱讀 9059

在設定中新增個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 接下來,把所有用到的...