这里你可以改变 HTTP header 规则或创建新的规则。点击区域以获得该功能的解释。
和网页过滤规则不同,header 过滤规则的名字是非常重要的。它就是你需要过滤的 header 名称,而且必须完全匹配 (不能使用通配符)。在 ":" 后面可以加上一小段描述。这段描述会在过滤匹配时被忽略。
匹配语句和替换文本的工作方式类似 网页过滤规则编辑器,只不过这里只会匹配 header 的内容 (不是 header 的名字)。
header 过滤基本上可以做三件事: 删除一个存在的 header,修改一个存在的 header,或添加一个新的 header。
- 修改 header: 匹配表达式 和 替换文本都必须有实际内容,如果要匹配该类型的所有 heaer,可以使用 "*"。
- 删除 header: 有匹配表达式,但替换文本为空。
- 总是添加 header: 有替换文本,但匹配表达式为空。
- 在 header 不存在时才添加: 有替换文本,但匹配部分使用 "(^?)"。看上去有点怪?嗯,的确是的!因为 (^...) 的意思是不匹配,而 ? 的意思是任意值,(^?) 翻译过来就是 "任何字符都不是"!
测试一个匹配
要测试过滤规则的匹配语句或 URL 匹配时,右键点击匹配编辑框或 URL 编辑框,然后从右键菜单中选择 "Test matching"。这会打开 Proxomitron 的匹配测试窗口。这里你可以检查你的过滤可以做些什么。只要在窗口里输入你希望测试的 header 的内容(只要 "Header-Name:" 后面的部分,不要输入 header 的名字)。
URL: header
有时你也许希望改变网页的 URL 本身。虽然它不是一个 header,Proxomitron 会把 "URL:" 看作一个特殊的 URL header 过滤规则。这种情况下匹配的是完整的 URL(包括 URL 匹配通常忽略的 http:// 部分)。
在替换文本里你也许希望使用任意一个重定向匹配命令: $JUMP(someurl) 或 $RDIR(someurl)。两个命令都可以将连接重定向到一个新的(或者说不同的)URL。
$JUMP( ) 通过向浏览器发送一个重定向命令工作。这很方便,因为浏览器会知道它接收到一个新的 URL 并会在地址栏显示这个 URL。
$RDIR( ) 更加隐蔽。Proxomitron 会在浏览器不知情的情况下重定向连接。有时你希望浏览器以为自己连接的是正确的文件但其实并不是,这个命令会很有用。
这里是一个使用 URL: header 来重定向 URL 的例子。这个过滤规则会将类似 "some-site" 的主机名转换成 "www.some-site.com"。它只是在任何没有 "." 的主机名前后分别加上 "www." 和 ".com" (注意: 这个规则需要在 "out" 一栏里开启)。
HTTP Header = URL: Dot-Communize dotless hostnames (out)
Match = http://([^./]+)\1/\2
Replace = $JUMP(http://www.\1.com/\2)
这个规则的重要功能...
- header 名以 "URL: ...." 开始,这告诉 Proxomitron 我们希望过滤 URL 本身。
- 匹配检测没有任何点或斜线 ([^./]) 的主机名,并捕获进变量 "\1"。变量 "\2" 捕获剩余的路径部分。 (参见匹配规则可获得更多细节)。
- 最后,在替换部分,我们使用从原 URL 捕获的变量并再为 $JUMP(...) 命令组成一个新的变量。
切断连接和拒绝特定的 URL
替换文本的一个新选项,"\k",允许你在载入数据之前就切断当前连接。当在 URL 匹配里使用时,你可以创建一个从不接收连接的 URL "禁止名单"。参见默认规则包里的 "URL-Killer:" HTTP 过滤规则。
MIME 编码/解码 和密码字符串
右键点击替换文本框会有一个 MIME encode/decode 选定文本的选项。这是用来创建密码字符串以自动登陆网站或需要密码的代理服务器的。对于网站,使用以下的 header 过滤规则...
Name= Authorization:
URL= The site you wish to send the password to
Replace= basic username:password
接下来选中 username:password 部分并从右键菜单里选择 MIME > encode。结果应该会类似这样...
basic dXNlcm5hbWU6cGFzc3dvcmQ=
当启用时,这条规则会自动将你的密码字符串发送到服务器,这样网页不会提示需要登陆。注意: 这只对使用 "basic" HTTP 认证方案的网站有效。如果需要改变密码的话,你可以使用解码选项。
创建一个代理服务器密码也是差不多 - 只要把 header 名改成...
Name = Proxy-Authorization:
并取消 URL 匹配(因为代理服务器是用于所有 URL 的)
