Manage: Specific Containers on sel. Sites 的一个小BUG

sidki config set的配置、使用,新手入门首选

Moderator: phoenix

Post Reply
ddbb
Moderator
Posts: 425
Joined: Jan 07 2008, 13:30

Manage: Specific Containers on sel. Sites 的一个小BUG

Post by ddbb »

例子页面 http://www.sina.com.cn/
要过滤的部分是 财经上面的 乐库 那个小白框....<div id="bfxz" class="md_2">
加入了 http://www.sina.com.cn/(^?) $SET(sAdKey=.md_2.) 之后 页面变形
DBUG了一下.....
发现在过滤的时候 提前结束匹配了....
分析下来......是因为代码里有 </div--> 的注释语句......sidki把它当一个结束符来分析了

对了.......这个页面sidki不知道能不能TEST.........国外的IP和国内的IP看到的www.sina.com.cn页面是不一样的.......
User avatar
phoenix
Site Admin
Posts: 529
Joined: Dec 29 2007, 16:27

Re: Manage: Specific Containers on sel. Sites 的一个小BUG

Post by phoenix »

具体代码贴上来看看。

另外,试试:

Code: Select all

www.sina.com.cn/(^?) $SET(sAdKey=.md_2.)$SET(sAdKeyR=<!--hide-->)
上面的代码在我这里测试正常,所以我觉得是你原来的方法删掉了某个 div block ,从而导致页面排版错乱,而不是规则匹配方面的问题。
ddbb
Moderator
Posts: 425
Joined: Jan 07 2008, 13:30

Re: Manage: Specific Containers on sel. Sites 的一个小BUG

Post by ddbb »

试了你那句........加了$SET(sAdKeyR=<!--hide-->)就没问题..........没有这句的话 财经那块就会跑到左边去..........

debug了一下.......加了这句的时候 只改 <div> 的头部分......没有加这句的时候 会找这个div的整个块.......然后把整个块替换成一个span

没有这句的时候.......匹配了很大的一块.......
2009-05-21_100914.png
2009-05-21_100914.png (19.42 KiB) Viewed 7037 times
加了之后........只有头部分被匹配了.......
2009-05-21_100942.png
2009-05-21_100942.png (6.51 KiB) Viewed 7037 times
User avatar
phoenix
Site Admin
Posts: 529
Joined: Dec 29 2007, 16:27

Re: Manage: Specific Containers on sel. Sites 的一个小BUG

Post by phoenix »

加了 $SET(sAdKeyR=<!--hide-->) 是通过增加 style="display:none!important" 属性将原 div block 隐藏,没有改变页面结构。不过这种方法,某些浏览器仍会下载该 block 中的页面元素,占用浏览器开销,具体参考 http://lifesinger.org/blog/?p=1661

不加的话是将原 div block 删除,改变了页面结构,所以排版出现问题。

我一般也倾向于删除 block 的方式,如果出现问题再考虑隐藏的方式。
ddbb
Moderator
Posts: 425
Joined: Jan 07 2008, 13:30

Re: Manage: Specific Containers on sel. Sites 的一个小BUG

Post by ddbb »

不是因为把那个div整块隐藏 所以变形.......而是那个div块的结尾的判断出了问题....因为块里有个</div-->....所以结尾的计数出了问题...提早结束了....如果是正常判断结尾的话.....页面是不会变形的........
User avatar
phoenix
Site Admin
Posts: 529
Joined: Dec 29 2007, 16:27

Re: Manage: Specific Containers on sel. Sites 的一个小BUG

Post by phoenix »

明白你的意思了,结尾的 </div--> 是注释的一部分,却被计到 </div> 里了。
<!--div class="it01img"><a href="http://sms.sina.com.cn/magazine/dy/mms.html#health" target="_blank"><span class="it01ib"><img src="http://i0.sinaimg.cn/sms/images/sinapic/27113106.jpg" width="103" height="68" alt="健康指南 关爱您的生活" /></span><span class="it01tb">点滴关爱健康</span></a></div-->
仔细看了下 sidki 的规则,问题出在 $INEST() 命令中以 </$TST(\1) 结尾,从而导致 </div--> 被计数,将以下语句:

Code: Select all

$INEST(<$TST(\1),((^$TST(script=1*))|$TST(script=1*)(^*</script))*,</$TST(\1))</$TST(\1) >
改为如下即可。

Code: Select all

$INEST(<$TST(\1),((^$TST(script=1*))|$TST(script=1*)(^*</script))*,</$TST(\1) >)</$TST(\1) >
由于那段 div block 的长度超过了规则设置的 5000 的 byte limit ,sidki 的规则会用隐藏而不是删除的方式。如果想删除,需要将 byte limit 调高到 9000 或更高。
Post Reply