Page 1 of 1

$NEST()和$URL()的问题

Posted: Mar 23 2008, 14:46
by imsheng
因为很多时候,用Proxo过滤之后会留下一大片空白, :oops: 我就考虑整个对应标签都去掉。所以使用了$NEST()这个命令。

[Patterns]
Name = "SITE>>>>>>>>>>>>>>>>>>>>>>>>>>script"
Active = TRUE
URL = "$TYPE(htm)|$TYPE(js)"
Bounds = "$NEST(<script*,</script>)"
Limit = 30000
Match = "$LST(+script)"
Replace = "<script><!-- Kill AdScript --></script>"

Name = "SITE>>>>>>>>>>>>>>>>>>>>>>>>>>iframe"
Active = TRUE
URL = "$TYPE(htm)|$TYPE(js)"
Bounds = "$NEST(<iframe*,</iframe>)"
Limit = 30000
Match = "$LST(+iframe)"
Replace = "<!-- Kill AdIframe -->"

Name = "SITE>>>>>>>>>>>>>>>>>>>>>>>>>>DIV"
Active = TRUE
URL = "$TYPE(htm)"
Bounds = "$NEST(<div*,</div>)"
Limit = 32000
Match = "$LST(+div)"
Replace = "<!-- Kill AdDiv -->"

Name = "SITE>>>>>>>>>>>>>>>>>>>>>>>>>>TABLE"
Active = TRUE
URL = "$TYPE(htm)"
Bounds = "$NEST(<table*,</table>)"
Limit = 30000
Match = "$LST(+table)"
Replace = "<table><!-- Kill AdTable --></table>"


主要是基于DIV,TABLE,SCRIPT和IFRAME的整对标签的过滤。

可是结果我发现,效率并不如意。

<div class="adMenu" id="adMenu">
<ul>
<li class="active"><h6><a urn="#default_Info" rel="adListContent1">资讯</a></h6>
</li>
<li class="normal"><h6><a urn="adList_Edu" rel="adListContent1">教育</a></h6></li>
<li class="normal"><h6><a urn="adList_House" rel="adListContent1">房产</a></h6></li>
<li class="normal"><h6><a urn="adList_Bnz" rel="adListContent1">真道</a></h6></li>
<li class="normal"><h6><a urn="adList_Kfc" rel="adListContent1">美味</a></h6></li>
</ul>
</div>

例如上面的这个DIV,我是抽取中间的 *rel="adListContent1"* 来填到+div的blockfile里的。但貌似效果不好。 :cry:
最后还是要通过

[Patterns]
Name = "SITE>>>>>>>>>>>>>>>>>>>>>>>>>>"
Active = TRUE
URL = "$TYPE(htm)"
Limit = 32000
Match = "<$LST(+site)"
Replace = "<!-- Kill AdSite -->"


这个规则来实现过滤。使用的规则是 div class="adMenu" id="adMenu">*</div>。

现在我想问下,能否通过匹配 <div class="adMenu" id="adMenu"> 中的 class="adMenu" 或者 id="adMenu" 来实现过滤?
想了好久也没想出来,另外,上面的模式有个缺点,就是不分站点来过滤。我想添加$URL()在blockfile里。但$URL()好像只能在Bounds 这个段里使用?多指教!

BTW,我新开了个QQ群,专门讨论Proxomitron,附带也聊聊Opera。 :mrgreen:
欢迎加入!QQ群的号码是19743473。此群严管灌水。 :D

Re: $NEST()和$URL()的问题

Posted: Mar 23 2008, 15:17
by imsheng
汗。又忘了提另外一个问题了。这个问题一直压着没解决。主要是想去掉页面的css里的字体定义。

主要是Opera里面国际字体的部分的设置,假设,我设置简体中文字体为微软雅黑。碰到页面编码定义为gb2312的,Opera会乖乖地把中文字体都设为微软雅黑。但如果是UTF-8的。就又自动用回默认的宋体了。但我尝试把该页面的字体定义,如"font-family:宋体"去掉,它就会用微软雅黑了。所以我想在Proxo里设置。

[Patterns]
Name = "CSS>>>>>>>>>>>>>>>>>>>>>>>>>>"
Active = FALSE
URL = "$TYPE(htm)|$TYPE(css)"
Bounds = "$NEST(<style*>,</style>)"
Limit = 32000
Match = "*(宋体|"宋体")*"

我用这个不成功。

好像匹配不了。不知道怎么弄了。

Re: $NEST()和$URL()的问题

Posted: Mar 24 2008, 09:35
by Ray4
imsheng wrote:因为很多时候,用Proxo过滤之后会留下一大片空白, :oops: 我就考虑整个对应标签都去掉。所以使用了$NEST()这个命令。
用$NEST()选择div后,在match里加入<div class="adMenu" id="adMenu">*</div>或者用*rel="adListContent1"*均可过滤成功啊,LZ把div的规则提到所有规则的最前面再试试。如果还不行,把blocklist里的具体内容再贴一下
$URL()直接写在blocklist里就行了,如上面的规则:

Code: Select all

$URL(http://site.com)<div class="adMenu" id="adMenu">*</div>
另外用$URL()的时候,要加上协议的,如http://www.g.cn,或者https://gmail.google.com,不过还要注意的是$URL(http://www.sina.com.cn)会匹配所有的以http://www.sina.com.cn打头的地址,如http://www.sina.com.cn/1.html也会被匹配
imsheng wrote:汗。又忘了提另外一个问题了。这个问题一直压着没解决。主要是想去掉页面的css里的字体定义。

主要是Opera里面国际字体的部分的设置,假设,我设置简体中文字体为微软雅黑。碰到页面编码定义为gb2312的,Opera会乖乖地把中文字体都设为微软雅黑。但如果是UTF-8的。就又自动用回默认的宋体了。但我尝试把该页面的字体定义,如"font-family:宋体"去掉,它就会用微软雅黑了。所以我想在Proxo里设置。

[Patterns]
Name = "CSS>>>>>>>>>>>>>>>>>>>>>>>>>>"
Active = FALSE
URL = "$TYPE(htm)|$TYPE(css)"
Bounds = "$NEST(<style*>,</style>)"
Limit = 32000
Match = "*(宋体|"宋体")*"

我用这个不成功。

好像匹配不了。不知道怎么弄了。
我看你用了$NEST(),如果字体定义在css文件里,这个似乎匹配不了吧?不太懂css

Re: $NEST()和$URL()的问题

Posted: Mar 24 2008, 16:24
by imsheng
我看你用了$NEST(),如果字体定义在css文件里,这个似乎匹配不了吧?不太懂css

所以我就添加了$TYPE(css)这个啊
Name = "CSS>>>>>>>>>>>>>>>>>>>>>>>>>>"
Active = FALSE
URL = "$TYPE(htm)|$TYPE(css)"
应该是匹配字体的规则没选好。
$NEST()和那个$URL()我都弄好了。谢谢啊。我之前的思路太狭窄了。
$URL()的相关资料都看过了。要搞好这些还是得硬着头皮看附带的说明。

现在的问题是貌似byte limit太小。不过呢,如果嫌byte limit太小,那肯定是规则没选好。这是某君说的。 :roll:

BTW,我新开了个QQ群,专门讨论Proxomitron,附带也聊聊Opera。
欢迎加入!QQ群的号码是19743473。此群严管灌水。

Re: $NEST()和$URL()的问题

Posted: Mar 24 2008, 17:36
by Ray4
imsheng wrote:
我看你用了$NEST(),如果字体定义在css文件里,这个似乎匹配不了吧?不太懂css
所以我就添加了$TYPE(css)这个啊
我说你用了$NEST(),一般的css文件里没有<style>标签,我说的是这个意思

你试过把div规则提到第一位没有?

BTW,我觉得你的byte limit一点也不小

Re: $NEST()和$URL()的问题

Posted: Mar 31 2008, 13:10
by idle.newbie
Active = FALSE 這個... 會不會有問題... ?_?
css可以再開一條不用Bounds的, 或者再多加上font-family:(沒記錯的話), 或許可行, 沒試過.
另外我還想到, 若是css或<style />裡有N多宋體出現, 是不是只會代換掉第一個, 還是全部? 如果只能代掉第一個, 怎解?

Re: $NEST()和$URL()的问题

Posted: Mar 31 2008, 14:39
by phoenix
idle.newbie wrote:Active = FALSE 這個... 會不會有問題... ?_?
会有问题,但我想他只是举例,所以不必介意。
idle.newbie wrote:另外我還想到, 若是css或<style />裡有N多宋體出現, 是不是只會代換掉第一個, 還是全部? 如果只能代掉第一個, 怎解?
全部。

Re: $NEST()和$URL()的问题

Posted: Jun 28 2008, 13:10
by foleo
问题或许是在这里

Code: Select all

$NEST(<style*>,</style>)
如果css直接写在在htm里面 自然过滤没问题 但如果是单独的css文件 通常文件里没有style标签的