天天看點

『居善地』接口測試 — 7、Requests庫使用proxies代理發送請求

目錄

  • 1、代理的了解
  • 2、代理的分類
    • (1)正向代理
    • (2)反向代理
    • (3)總結
  • 3、Requests庫使用代理
  • 4、總結

『居善地』接口測試 — 7、Requests庫使用proxies代理發送請求

在上圖中我們可以把Web server看成是Google伺服器,正常情況下在國内是無法通路Google伺服器的,這個時候就需要使用代理軟體,幫助我們發送請求來通路Google伺服器。然後再通過代理軟體把Google伺服器響應的結果傳回給我們的浏覽器,這個代理軟體就起到了一個代理的作用,幫助我們發送請求,幫助我們接收響應。

『居善地』接口測試 — 7、Requests庫使用proxies代理發送請求

正常情況下,我們使用浏覽器來通路百度伺服器,可以正常的直接的進行通路。

正向代理類似一個跳闆機,代理通路外部資源。

比如我們國内通路谷歌,直接通路通路不到,我們可以通過一個正向代理伺服器,将請求發到代理伺服器,代理伺服器能夠通路谷歌,這樣由代理取到谷歌伺服器傳回的資料,再傳回給我們,這樣我們就能通路谷歌了。

『居善地』接口測試 — 7、Requests庫使用proxies代理發送請求

反向代理(Reverse Proxy)實際運作方式是指,以代理伺服器來接受Internet上的連接配接請求,然後将請求轉發給内部網絡上的伺服器,并将從伺服器上得到的結果,傳回給Internet上請求連接配接的用戶端,此時代理伺服器對外就表現為一個伺服器。

『居善地』接口測試 — 7、Requests庫使用proxies代理發送請求

  • 正向代理即是用戶端代理, 代理用戶端, 服務端不知道實際發起請求的用戶端。
  • 反向代理即是服務端代理, 代理服務端, 用戶端不知道實際提供服務的服務端。
『居善地』接口測試 — 7、Requests庫使用proxies代理發送請求

形象的描述:

  • 正向代理: 找黃牛買票。
  • 反向代理: 租房的中介。

隻需要添加

proxies

參數即可,接收字典格式的參數。

示例:

# 1.導入requests庫
import requests

# 明确要通路的url位址
url = "https://ip.tool.chinaz.com/"

# 明确請求頭資訊
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36",
}

# 設定代理伺服器位址
# 如果發送的是http請求,就使用http請求的代理,如果發送的是https請求,就使用一個https請求的代理。
proxies = {"https": "https://58.220.95.86:9401", "http": "http://113.214.13.1:1080"}

# 發送請求
response = requests.get(url=url, headers=headers, proxies=proxies)
# 檢視響應結果的狀态碼
print(response.status_code)
# 獲得響應結果的源碼
print(response.text)
           

說明一下:

通路

url = "https://ip.tool.chinaz.com/"

這個位址的并不是我們自己的IP位址,而是

proxies

屬性中定義的IP位址。實際上我們把請求發送給代理伺服器,代理伺服器幫我們通路了上面的網址。

驗證一下:

  • https://ip.tool.chinaz.com/

    是一個檢查IP位址的網站。
  • 通過執行上面的示例,看看

    response.text

    傳回的請求源碼中的IP位址資訊。

    在傳回的源碼中,是可以定位到如下資訊的,證明我們上面使用的代理成功了。

    <div class="WhwtdWrap bor-b1s col-gray03" style="height:auto">
    	<span class="Whwtdhalf w15-0 lh45">58.220.95.86</span>
        <span class="Whwtdhalf w15-0 lh45" style="cursor:pointer;" onclick="AiWenIpData('58.220.95.86')">58.220.95.86</span>
        <span class="Whwtdhalf w15-0 lh45">987520854</span>
        <span class="Whwtdhalf w30-0 lh24 tl ml80">
       		<p>江蘇省揚州市電信</p>
       	</span>
    </div>
               
  • 尋找代理伺服器請參考:

    https://proxy.mimvp.com/freeopen

為什麼需要使用代理?

  • 讓伺服器以為不是同一個用戶端在請求。
  • 防止我們的真實位址被洩露。
這裡我們就知道Requests庫中

proxies

代理如何使用,了解其原理就可以了。
參考:https://www.cnblogs.com/taostaryu/p/10547132.html