Page 1 of 2
有没有可以过滤第三方请求的header规则?
Posted: Jan 30 2010, 11:53
by Bonnie
自带的URL-kill有一点不好就是会使地址完全无法访问。
想写一个只当请求是第三方的时候过滤的规则,
如果在webpage部分过滤的话变数太多,规则很难顾及所有创建js/iframe的源码。
但是好像header规则之间又不能传递变量,不能先比较再杀掉。
大家有什么好方法吗?
Re: 有没有可以过滤第三方请求的header规则?
Posted: Jan 30 2010, 17:05
by phoenix
可以比对当前请求的 host 和 referer 来判断是否为第三方请求。
Re: 有没有可以过滤第三方请求的header规则?
Posted: Jan 31 2010, 01:39
by Bonnie
谢谢版主,这个方法挺好。
Code: Select all
[HTTP headers]
In = FALSE
Out = TRUE
Key = "Referer: Check Third-party request (Out)"
URL = "$LST(AdHosts-T)*"
Match = "\1$SET(curl=\1)(^$TST(curl=http(s|)://\h*))"
Replace = "\k"
试了下貌似是正常的,添加的几个google ad地址都被杀掉了。
Re: 有没有可以过滤第三方请求的header规则?
Posted: Jan 31 2010, 11:31
by phoenix
Match 部分写成下面的形式怎么样? 更简洁些。
Re: 有没有可以过滤第三方请求的header规则?
Posted: Jan 31 2010, 12:26
by Bonnie
看不太懂。。。https+为什么能匹配http?还有那个问号的用法在哪里可以找到?
不过现在用了一下还有个问题。。header部分的过滤不能用$TYPE指定过滤类型。不知道有什么办法过滤指定的文件类型?
看帮助文件说,header部分不知道文件是什么类型,所以没法用$TYPE。那adblock plus又是如何做到不下载指定类型的文件的呢?
Re: 有没有可以过滤第三方请求的header规则?
Posted: Jan 31 2010, 16:29
by phoenix
Bonnie wrote:https+为什么能匹配http?
关于 + 的用法,你之前参与过讨论:
http://forum.proxomitron.cn/viewtopic.p ... 1334#p1334
Bonnie wrote:还有那个问号的用法在哪里可以找到?
http://www.proxomitron.cn/help/Matching%20Rules.html
Bonnie wrote:header部分的过滤不能用$TYPE指定过滤类型。不知道有什么办法过滤指定的文件类型?
可以用 $IHDR(Content-Type: ... ),或者检查文件扩展名。
Bonnie wrote:那adblock plus又是如何做到不下载指定类型的文件的呢?
基本上没用过,你可以看下它的帮助文档。
Re: 有没有可以过滤第三方请求的header规则?
Posted: Jan 31 2010, 17:21
by Bonnie
一直以为s+这样是必须要匹配至少一个s,帮助文件里也没说可以匹配空。。
我还以为问号有什么特殊的含义。没有问号的话会有什么区别?
关于用^匹配一个单词的情况,我始终没有弄懂。是(^abc)匹配任何不是"abc"的单词吗?可是测试时怎么都没法成功过滤。
这个filter是header out的,应该不能用$IHDR吧?我试了下也是不成。改成header in后也还是一样
Re: 有没有可以过滤第三方请求的header规则?
Posted: Jan 31 2010, 23:11
by phoenix
Bonnie wrote:一直以为s+这样是必须要匹配至少一个s,帮助文件里也没说可以匹配空。。
也没说不可以嘛。有疑问的地方可以用 Test Window 试下。
Bonnie wrote:我还以为问号有什么特殊的含义。没有问号的话会有什么区别?
我加了 ?* 是为了防止匹配没有 Referer 的情况,只是逻辑上的考虑,没有测试过。你自己看需要是否保留吧。
Bonnie wrote:关于用^匹配一个单词的情况,我始终没有弄懂。是(^abc)匹配任何不是"abc"的单词吗?可是测试时怎么都没法成功过滤。
(^abc) 匹配的是一个
位置,这个位置之后不能是 abc 。
Bonnie wrote:这个filter是header out的,应该不能用$IHDR吧?我试了下也是不成。改成header in后也还是一样
你可以写个
Content-Type: 的规则进行文件类型的检查,然后用 $OHDR() 来检查 Referer 。
Re: 有没有可以过滤第三方请求的header规则?
Posted: Feb 01 2010, 11:33
by Bonnie
不太理解。那么 out 没有 content-type 的话又怎么写规则修改?是说根据文件不同后缀虚构 content-type ?那这样的话和在规则列表里写 "*.(js|aspx)" 并没什么区别吧?
仔细读了帮助,
http://www.proxomitron.info/45/help/HTT ... lters.html 提到 "Still, killing a reply will avoid loading the item's actual data." 。看起来 \k 用在 in header 应该是有效的,可是为什么我这里把自带的 URL-Killer 改成 in 后却根本不会起作用?
Re: 有没有可以过滤第三方请求的header规则?
Posted: Feb 01 2010, 14:46
by phoenix
Bonnie wrote:那么 out 没有 content-type 的话又怎么写规则修改?
那就写个 in 的规则啊。
Code: Select all
[HTTP headers]
In = TRUE
Out = FALSE
Key = "Content-Type: Kill Third Party JS (In)"
Match = "(*javascript)\1$OHDR(Referer: (^https+://\h))"
Replace = "\1\k$LOG(R$DTM(c) Third Party JS Killed!)"