歡迎來到第 14 天,今天我們要來嘗試建立代理 IP 的連線。
為什麼需要代理 IP?之前有提到在現在的網站設計中,其實工程師都會將 DDoS 列入考量,有些網站也會設計一些反爬蟲的機制,例如 IP 鎖定。因此在我們進行非同步爬蟲的時候往往會大量的送出請求,如果在極短時間內伺服器接收到來自同一個 IP 的請求,反爬蟲系統可能就會被觸發,並封鎖該 IP。這個時候我們就可以使用代理 IP 的方式繼續進行爬蟲。
在一般的網路連線中通常會是客戶端與伺服器直接做溝通,因此伺服器會知道這個請求是從哪個 IP 來的。而代理伺服器是在這之中做一個橋樑的角色,客戶端先送一個請求到代理伺服器,代理伺服其在轉送請求至目標伺服器。
在開始前,先介紹兩個常用的免費代理 IP 網站 Free Proxy List、Free Proxy List,及今天會用到測試 IP 的網站 ipify API。由於是免費的代理 IP,我們無法掌控該代理伺服器的資安狀況,因此非常不建議使用免費代理伺服器做任何包含機密資訊的請求。
首先在使用代理 IP 前,先嘗試直接發送一個請求至 https://api.ipify.org?format=json,確認自己目前的 IP 位置做一個對照組。
response = requests.get("https://api.ipify.org?format=json")
print(response.json()['ip']) # 印出目前的 IP 位置
接者請到代理 IP 網站查找一組 IP,並發送另一個請求至同一個位置
http_proxy = "http://83.97.23.90:18080"
https_proxy = "http://83.97.23.90:18080"
proxy_dict = {
"http" : http_proxy,
"https" : https_proxy
}
response = requests.get("https://api.ipify.org?format=json",proxies=proxy_dict)
print(response.json()['ip']) # 印出 83.97.23.90
這時我們就可以觀察到 IP 已經改為代理 IP: 83.97.23.90。
今天就先到這裡,明天來創建一個代理 IP 池。