HTTP 正向代理

正向代理應用/Socks5 類似,都是以應用的形式實現。

啟用埠

  • 埠:填寫用於開啟 HTTP 正向代理服務的埠。
  • 型別:選擇 http_proxy

新增應用

  • 埠:前面步驟中啟用的埠。
  • 請求型別:需要代理的請求的型別,預設是 HTTP 及 HTTPS
  • 認證型別:支援 自定義認證Proxy-Authorization: Basic
    • 自定義認證:使用者使用已解析好的 Proxy-Authorization、HTTP 頭部、URI 引數、內建變數等內容進行靈活的認證。
    • Proxy-Authorization: Basic:標準的基礎代理認證。此時使用 賬號 中的 賬號值密碼,作為 Basic 認證的使用者名稱密碼賬號名將被忽略,但是鑑權條件不會被忽略。

新增鑑權賬號

  • 賬號名:賬號的關鍵字。例如 URI 引數:key1=value1&openresty=edge,此處 openresty 為賬號名。Edge 的 HTTP 正向代理因此而支援動態的賬號關鍵字。
  • 賬號值:鑑權賬號。
  • 密碼:鑑權賬號的密碼。
  • 開始時間/結束時間:賬號的有效時間段。不設定表示不限制,賬號會一直有效。

新增鑑權條件

鑑權條件的設計思路是:算術表示式,如:x = yx 是左引數,y是右引數,=是運算子。

  • 名字:鑑權條件的名稱/描述。
  • 左演算法:作用於左引數的演算法。
    • md5: 對拼接後的左引數進行 MD5。
    • 不選擇:運算子不為 存在/不存在 時,拼接所有左引數。
  • 左引數:
    • 型別:引數所在的位置、型別。
      • URI 引數:引數所在的位置是 HTTP URI。
      • Header 引數:引數所在的位置是 HTTP Header。
      • Proxy-Authorization 引數:引數所在位置是 HTTP 頭部的 Proxy-Authorization 中。支援 base64 編碼。
      • 內建引數:如賬號對應的密碼。
      • 自定義值:
    • 名稱:引數的名稱、值。
  • 運算子:指定左右值的比較方式。
    • 等於/不等於:對拼接後的左引數進行 演算法 得到值 A, 對拼接後的右引數進行 演算法 得到值 B,然後比較 AB是否相等。
    • 大於/小於/大於等於/小於等於:左右值計算和 等於/不等於 相同,但是比較前會轉換為數字型別再進行比較。(不支援字串型別比較)
    • 存在/不存在:逐個判斷 左引數 是否存在。
    • 包含/不包含:左右值計算和 等於/不等於 相同,然後判斷左值是否包含右值。
    • 落後當前時間:與當前時間進行比較,小於當前時間超過設定的值,就會執行下面 動作
  • 右演算法:作用於右引數的演算法。
    • md5: 對拼接後的右引數進行 MD5。
    • 不選擇:拼接所有右引數。
  • 右引數:同 左引數
  • 動作:條件匹配後的動作。
  • 響應狀態碼:HTTP 響應的狀態碼。
  • 響應頭部:HTTP 響應的頭部。
  • 響應內容:HTTP 響應的內容。

請求示例

示例 1:(HTTPS)

# https
CONNECT ifconfig.io:443 HTTP/1.1
Host: ifconfig.io:443
Proxy-Authorization: openresty=edge # 明文也可支援

示例 2:(HTTP)

# http
GET http://ifconfig.io HTTP/1.1
Host: ifconfig.io
arg1: value1
arg2: value2
arg3: value3
Proxy-Authorization: YjNCbGJuSmxjM1I1UFdWa1oyVT0=   # base64編碼後的openresty=edge

示例 3:(Basic)

# http
GET http://ifconfig.io HTTP/1.1
Host: ifconfig.io
Proxy-Authorization: Basic YjNCbGJuSmxjM1I1UFdWa1oyVT0=  # base64編碼後的openresty=edge