HTTP 正向代理

正向代理应用/Socks5类似,都是以应用的形式实现。

启用端口

HTTP 正向代理 - 图1

  • 端口:填写用于开启HTTP正向代理服务的端口。
  • 类型:选择http_proxy

添加应用

HTTP 正向代理 - 图2

  • 端口:前面步骤中启用的端口。
  • 请求类型:需要代理的请求的类型,默认是HTTP 及 HTTPS
  • 认证类型:支持自定义认证Proxy-Authorization: Basic
    • 自定义认证:用户使用已解析好的 Proxy-Authorization、HTTP头部、URI参数、内置变量等内容进行灵活的认证。
    • Proxy-Authorization: Basic:标准的基础代理认证。此时使用账号中的账号值密码,作为 Basic 认证的用户名密码账号名将被忽略,但是鉴权条件不会被忽略。

添加鉴权账号

HTTP 正向代理 - 图3

  • 账号名:账号的关键字。例如URI参数:key1=value1&openresty=edge,此处openresty为账号名。Edge 的 HTTP 正向代理因此而支持动态的账号关键字。
  • 账号值:鉴权账号。
  • 密码:鉴权账号的密码。
  • 开始时间/结束时间:账号的有效时间段。不设置表示不限制,账号会一直有效。

添加鉴权条件

HTTP 正向代理 - 图4

鉴权条件的设计思路是:算术表达式,如: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)

  1. # https
  2. CONNECT ifconfig.io:443 HTTP/1.1
  3. Host: ifconfig.io:443
  4. Proxy-Authorization: openresty=edge # 明文也可支持

示例 2:(HTTP)

  1. # http
  2. GET http://ifconfig.io HTTP/1.1
  3. Host: ifconfig.io
  4. arg1: value1
  5. arg2: value2
  6. arg3: value3
  7. Proxy-Authorization: YjNCbGJuSmxjM1I1UFdWa1oyVT0= # base64编码后的openresty=edge

示例 3:(Basic)

  1. # http
  2. GET http://ifconfig.io HTTP/1.1
  3. Host: ifconfig.io
  4. Proxy-Authorization: Basic YjNCbGJuSmxjM1I1UFdWa1oyVT0= # base64编码后的openresty=edge