有没有可以过滤第三方请求的header规则?

新手入门、经验交流

Moderator: cre

Forum rules
  • 软件自带帮助是最好的入门教程,请仔细阅读;在您掌握最基本知识前,我们没法帮助您
  • 提问前请先查阅软件帮助文件和论坛相关讨论
  • 查阅软件帮助和论坛相关讨论即可解决的问题帖将直接删除,以免浪费他人时间
  • 请学会如何提问,尽量将问题描述清楚,不明确的提问将被直接删除
Bonnie
Moderator
Posts: 165
Joined: Oct 05 2008, 01:27

有没有可以过滤第三方请求的header规则?

Post by Bonnie »

自带的URL-kill有一点不好就是会使地址完全无法访问。
想写一个只当请求是第三方的时候过滤的规则,
如果在webpage部分过滤的话变数太多,规则很难顾及所有创建js/iframe的源码。
但是好像header规则之间又不能传递变量,不能先比较再杀掉。
大家有什么好方法吗?
User avatar
phoenix
Site Admin
Posts: 529
Joined: Dec 29 2007, 16:27

Re: 有没有可以过滤第三方请求的header规则?

Post by phoenix »

可以比对当前请求的 host 和 referer 来判断是否为第三方请求。
Bonnie
Moderator
Posts: 165
Joined: Oct 05 2008, 01:27

Re: 有没有可以过滤第三方请求的header规则?

Post 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地址都被杀掉了。
User avatar
phoenix
Site Admin
Posts: 529
Joined: Dec 29 2007, 16:27

Re: 有没有可以过滤第三方请求的header规则?

Post by phoenix »

Match 部分写成下面的形式怎么样? 更简洁些。

Code: Select all

(^https+://\h)?*
Bonnie
Moderator
Posts: 165
Joined: Oct 05 2008, 01:27

Re: 有没有可以过滤第三方请求的header规则?

Post by Bonnie »

看不太懂。。。https+为什么能匹配http?还有那个问号的用法在哪里可以找到?
不过现在用了一下还有个问题。。header部分的过滤不能用$TYPE指定过滤类型。不知道有什么办法过滤指定的文件类型?
看帮助文件说,header部分不知道文件是什么类型,所以没法用$TYPE。那adblock plus又是如何做到不下载指定类型的文件的呢?
User avatar
phoenix
Site Admin
Posts: 529
Joined: Dec 29 2007, 16:27

Re: 有没有可以过滤第三方请求的header规则?

Post 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又是如何做到不下载指定类型的文件的呢?
基本上没用过,你可以看下它的帮助文档。
Bonnie
Moderator
Posts: 165
Joined: Oct 05 2008, 01:27

Re: 有没有可以过滤第三方请求的header规则?

Post by Bonnie »

一直以为s+这样是必须要匹配至少一个s,帮助文件里也没说可以匹配空。。
我还以为问号有什么特殊的含义。没有问号的话会有什么区别?
关于用^匹配一个单词的情况,我始终没有弄懂。是(^abc)匹配任何不是"abc"的单词吗?可是测试时怎么都没法成功过滤。
这个filter是header out的,应该不能用$IHDR吧?我试了下也是不成。改成header in后也还是一样
User avatar
phoenix
Site Admin
Posts: 529
Joined: Dec 29 2007, 16:27

Re: 有没有可以过滤第三方请求的header规则?

Post 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 。
Bonnie
Moderator
Posts: 165
Joined: Oct 05 2008, 01:27

Re: 有没有可以过滤第三方请求的header规则?

Post 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 后却根本不会起作用?
User avatar
phoenix
Site Admin
Posts: 529
Joined: Dec 29 2007, 16:27

Re: 有没有可以过滤第三方请求的header规则?

Post 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!)"
Post Reply