搜尋
首頁運維安全Python反爬蟲的知識點有哪些

Python反爬蟲的知識點有哪些

May 17, 2023 am 10:18 AM
python

一、為什麼要反爬蟲?

在設計反爬蟲系統之前,我們先來看看爬蟲會為網站帶來什麼問題?

#本質上來說,網路上可以供人們瀏覽、查看和使用的網站及其網站上的數據,都是公開和允許獲取的,所以並不存在於所謂的「非法授權存取」問題。

爬蟲程式存取網頁和人訪問網頁沒有本質區別,都是由客戶端向網站伺服器發起HTTP請求,網站伺服器接收到請求之後將內容回應傳回給客戶端。

只要是發起請求,網站伺服器必然要回應,要進行回應,必然要消耗伺服器的資源。

網站的訪客與網站之間是互相互惠互利的關係,網站為訪客提供了自己所需要的必要的資訊和服務,而訪客也為網站帶來了流量、訪客、活躍度。因此,網站所有者會願意使用伺服器的頻寬、磁碟和內存,以便為訪客提供服務。

而爬蟲程序呢?無異於白嫖黨。成倍地消耗網站伺服器資源、佔用伺服器頻寬,卻不會為網站帶來一絲的利益,甚至於,最後的結果是有損於網站本身的。

爬蟲,可能算是網路裡的非洲鬣狗了,也難怪遭網站的擁有者討厭了。

二、辨識爬蟲

既然討厭爬蟲,所以要將爬蟲拒於網站的門外了。要拒絕爬蟲的訪問,首先當然要識別出網路訪客中的爬蟲程式。如何識別呢?

1. HTTP請求頭

一般的網絡訪問者會使用瀏覽器對網站進行訪問,因此這個識別是針對最基礎的網絡爬蟲的。而瀏覽器都會帶上自己的請求頭以表明自己的基礎資訊。 HTTP請求頭容易被爬蟲程式突破,因為任何人都可以修改和偽造。

2. Cookie值

Cookie通常被用來識別網站訪客的身份,類似於手中的一張臨時身分證。並憑著這個憑著與網站伺服器進行身分的校對。很遺憾,Cookie保存在客戶端,並且能夠被修改和偽造。

3. 存取頻率

當一個訪客每秒鐘請求網站的某個頁面,或是在幾秒鐘內請求了數百次這個頁面時。這個訪客不是爬蟲程式就有鬼了。有哪個人類可以快速且頻繁地點擊滑鼠來存取一個頁面?他是否患有帕金森氏症或八爪魚轉世?

透過存取頻率來辨識爬蟲程式是可行的,但是爬蟲程式也能透過使用大量的代理IP來實現一個IP位址只存取了一次的效果,也可以透過隨機的請求時間間隔來規避。

4. 滑鼠行為軌跡

普通的人類訪客在瀏覽網頁時,不會像機器一樣按部就班地移動滑鼠並點擊。而滑鼠的移動和點擊,是可以透過JS腳本捕捉到的,所以可以透過判斷訪客的滑鼠行為軌跡來判斷訪客是否為爬蟲程式。

5. token值

許多網站現在採用前後端分離的開發方式,由後端介面返回資料給前端,前端在拿到資料後再結合頁面進行渲染。所以很多爬蟲程式都直接找資料接口,而不是傻傻地請求頁面了。 token就用在驗證這些後端資料介面上。通常,Token是由某些資料經過時間和網頁金鑰的組合加密而成的。

還有更多辨識爬蟲的手段在此就不一一進行介紹。可惜的是,無論上述何種方式用來辨識網路爬蟲,都存在可能被爬蟲欺騙或穿透的風險。

三、拒絕爬蟲

就像沒有一勞永逸的網站安全防護一樣,十年前把3389埠一關,就能防止伺服器成為肉雞,如今各種防火牆、各種安全措施都加上了,還有可能因為某個0Day漏洞而被勒索。

爬蟲與反爬蟲之間,也永遠都在奮鬥與升級。網路攻防和反爬蟲之間的區別在於,前者是一場無限制的搏鬥,而後者則像參加奧運的拳擊選手一樣戴著手套和頭盔。

網站為了運營,勢必要對外開放內容,而開放的內容就像是飄忽在非洲大草原的腐肉和血腥味,直勾勾地吸引著鬣狗的到來。

在開放內容和避免淪為爬蟲的資料礦池之間平衡,是一個難事。

1. 內容上限制內容的開放

開放的內容是取得使用者、流量的基礎,所以內容必須是開放的。但是內容的開放並不是無限制的開放。未註冊用戶可以查看一到兩篇內容,但無法無限制地瀏覽所有內容。這種限制可以採取登入、掃碼驗證或存取谷歌驗證碼等點擊驗證機制。

現在已經有越來越多的網站採用了有限內容開放的機制,例如微博、知乎、淘寶等,你可以看到一頁兩頁的內容,但是如果還想繼續,對不起請登入。

2. 行为上记录用户操作

需要访问者进行登录并不能解决问题,因为模拟登录一直是网络爬虫程序的一个热门发展分支,无论是图片验证码、拼图、滑块还是点选汉字,都会被突破。编写APP及爬虫程序可以让短信验证码与网站进行通信。

所以记录用户行为必不可少,用户的一切操作和访问行为都需要记录在案,这是分析和处理爬虫的基础。

3. 控制上严厉打击高频行为

从实际上来看,也有很多爬虫程序的运行并非是为了往死里薅网站的数据和内容,仅仅是为了方便进行手工的收集和整理工作,这种类型的爬虫行为一般会比人工浏览的频次要高,但是又显著低于鬣狗般的高频爬虫,对这种类型的爬虫行为可以忽略掉。做人留一线,日后好相见。

但是对于影响网站服务器运行的高频爬虫行为,必须采取措施。结合用户和IP信息,对相关用户或IP进行处理。

4. 协议里申明权利

网站的所有者必须在网站协议或用户协议里申明,允许正常的浏览、访问和数据获取,对于异常、高频、威胁网站服务器稳定的行为,将保留进一步处理的权利。

以上是Python反爬蟲的知識點有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:亿速云。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用