iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 14
0
自我挑戰組

資料蒐集與分散式運算 30 天系列 第 14

[Day 14] 代理 IP - 1

歡迎來到第 14 天,今天我們要來嘗試建立代理 IP 的連線。

為什麼?

為什麼需要代理 IP?之前有提到在現在的網站設計中,其實工程師都會將 DDoS 列入考量,有些網站也會設計一些反爬蟲的機制,例如 IP 鎖定。因此在我們進行非同步爬蟲的時候往往會大量的送出請求,如果在極短時間內伺服器接收到來自同一個 IP 的請求,反爬蟲系統可能就會被觸發,並封鎖該 IP。這個時候我們就可以使用代理 IP 的方式繼續進行爬蟲。

代理伺服器?

在一般的網路連線中通常會是客戶端與伺服器直接做溝通,因此伺服器會知道這個請求是從哪個 IP 來的。而代理伺服器是在這之中做一個橋樑的角色,客戶端先送一個請求到代理伺服器,代理伺服其在轉送請求至目標伺服器。

小試身手

在開始前,先介紹兩個常用的免費代理 IP 網站 Free Proxy ListFree 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 池。


上一篇
[Day 13] 動態爬蟲 - 5
下一篇
[Day 15] 代理 IP - 2
系列文
資料蒐集與分散式運算 30 天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言