104學習

Mike Ku

Learn Code With Mike品牌創辦人

2021/10/18

7個降低Python網頁爬蟲被偵測封鎖的實用方法(上)

Q:有哪些降低Python網頁爬蟲被偵測封鎖的方法?
現在的網頁五花八門,其中充滿了許多有價值的資料,因此有許多的使用者都會使用Python網頁爬蟲的技術來進行取得,而這也衍生了可能因為過量的請求(Request),導致網站的伺服器過載,而產生問題。
所以,越來越多的網站開始偵測網頁爬蟲,將其封鎖,這時候,在開發Python網頁爬蟲時,該如何降低被偵測到的風險呢?
後續將分為上下兩篇來分享以下7個方法給讀者進行參考:
1..輪流切換IP位址
2.設定請求表頭(Request Headers)
3.設定使用者代理(User-Agent)
4.設定參照位址(Referer)
5.設定隨機的延遲時間
6.使用無頭瀏覽器(Headless Browser)
7.避免掉入網頁蜜罐陷阱(Honeypot Traps)
Q:如何輪流切換IP位址
如果固定的使用同一組IP位址,在固定的時間內大量的請求(Request)網站,毫無疑問有很大的機率會被認為是網頁爬蟲,進而被封鎖請求(Request)。
因此,要利用Python網頁爬蟲爬取網站時,會建議需要擁有多組的IP位址,在每一次的請求(Request)時,輪流切換使用,來降低被偵測到的機會,可以參考使用Proxy切換服務,像是Scrapingdog( https://www.scrapingdog.com/ )等,或是IP切換服務,像是ScraperAPI( https://www.scraperapi.com/ )等,讓Python網頁爬蟲進行請求(Request)時,能夠使用不同的IP位址。
Q:如何設定請求表頭(Request Headers)
為了讓Python網頁爬蟲在發送請求(Request)時,能夠像真實的瀏覽器一樣,最好要設定請求表頭(Request Headers)資訊,如果沒有設定,很明顯就會被認為是Python網頁爬蟲而被封鎖。
除了能夠在Chrome瀏覽器開發者模式得知自己的請求表頭(Request Headers)外,也可以利用此網站(https://httpbin.org/anything )來查看,在Python網頁爬蟲的專案中,只要複製其中的headers欄位來使用即可。
Q:如何設定使用者代理(User-Agent)?
舉例來說,在Python網頁爬蟲的專案中,可以使用fake_useragent套件,在每一次的請求(Request)前,隨機產生一個使用者代理(User-Agent),並且加入到請求表頭(Request Headers)中,如下範例:
import requests
from fake_useragent import UserAgent
user_agent = UserAgent()
response = requests.get(url="https://example.com", headers={ 'user-agent': user_agent.random })
這樣就能夠避免Python網頁爬蟲的每一次請求(Request)皆使用相同的使用者代理(User-Agent),而被偵測到。
如果想要學習更多的Python應用教學,歡迎前往Learn Code With Mike( https://www.learncodewithmike.com/2020/09/7-tips-to-avoid-getting-blocked-while-scraping.html )網站觀看更多精彩內容。
1 0 1041 0