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 = y
。 x
是左参数,y
是右参数,=
是操作符。
- 名字:鉴权条件的名称/描述。
- 左算法:作用于左参数的算法。
- md5: 对拼接后的左参数进行 MD5 。
- 不选择:操作符不为
存在/不存在
时,拼接
所有左参数。
- 左参数:
- 类型:参数所在的位置、类型。
- URI 参数:参数所在的位置是 HTTP URI 。
- Header 参数:参数所在的位置是 HTTP Header 。
- Proxy-Authorization 参数: 参数所在位置是 HTTP 头部的 Proxy-Authorization 中。支持 base64 编码。
- 内置参数:如账号对应的密码。
- 自定义值:
- 名称:参数的名称、值。
- 类型:参数所在的位置、类型。
- 操作符:指定左右值的比较方式。
- 等于/不等于:对拼接后的左参数进行
算法
得到值A
, 对拼接后的右参数进行算法
得到值B
,然后比较A
和B
是否相等。 - 大于/小于/大于等于/小于等于:左右值计算和
等于/不等于
相同,但是比较前会转换为数字类型再进行比较。(不支持字符串类型比较) - 存在/不存在:逐个判断
左参数
是否存在。 - 包含/不包含:左右值计算和
等于/不等于
相同,然后判断左值是否包含右值。 - 落后当前时间:与当前时间进行比较,小于当前时间超过设定的值,就会执行下面
动作
。
- 等于/不等于:对拼接后的左参数进行
- 右算法:作用于右参数的算法。
- 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