# 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