Board logo

标题: 这样的html文本广告怎么过滤 [打印本页]

作者: jiechu    时间: 2008-7-30 10:26     标题: 这样的html文本广告怎么过滤

</body>
</html>
<SPAN class=spanclass id=span_ad_08>
</SPAN>
<SCRIPT>ad_08.innerHTML=span_ad_08.innerHTML;span_ad_08.innerHTML="";</SCRIPT>

<SPAN class=spanclass id=span_ad_09>

</SPAN>
<SCRIPT>ad_09.innerHTML=span_ad_09.innerHTML;span_ad_09.innerHTML="";</SCRIPT>

红色的可以是任何字符类型的广告,红色之后是文件末尾
过滤成只保留</html>

就是有些网站的页面将广告代码放在</html>后面,还有一些javascript代码什么的,想把这些</html>后面的一律过滤替换掉,怎么写规则?


  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <title>异界之复制专家 异界之复制专家 第六百一十一章 一拳败敌 - 哈哈文学</title>
  5. <meta HTTP-EQUIV="Window-target" c />
  6. <meta HTTP-EQUIV="pragma" c />
  7. <meta HTTP-EQUIV="Cache-Control" c />
  8. <meta HTTP-EQUIV="expires" c />
  9. <meta HTTP-EQUIV="Content-Type" c />
  10. <meta name="robots" c />
  11. <meta name="keywords" c />
  12. <meta name="description" c />
  13. <link href="/Skin/Default/Css/Common.Css" rel="stylesheet" type="text/css" />
  14. <link href="/Skin/Default/Css/Book.Css" rel="stylesheet" type="text/css" />
  15. </head>
  16. <body bgColor="#E7F4FE">
  17. <script src="/js/Html/BookMenu.js"></script>
  18. <script src="/js/Html/Footer.js"></script>

  19. <script language="javascript">
  20. <!--
  21. document.onkeydown=nextpage
  22. var prevpage="897725.shtml";
  23. var nextpage="898651.shtml";
  24. var gotobook="/Book/3245.aspx";
  25. function nextpage() {
  26.         if (event.keyCode==37) location=prevpage;
  27.         if (event.keyCode==39) location=nextpage;
  28.         if (event.keyCode==13) location=gotobook;
  29. }
  30. //-->
  31. </SCRIPT>
  32. <center>
  33.   <div id="Ws">
  34.     <div id="Top">
  35.       <div id="Menu"><script>ShowTopMenu(1,'哈哈文学','/','Content.shtml','Index.shtml','/Book/3245.aspx','/User/BR3245.aspx','/User/BS3245.aspx','/User/B3245C898466.aspx','异界之复制专家');</script></div>
  36.            <div id="TextSelect">
  37.            <div id="SelectInfo">  <a href="/">哈哈文学</a> -> <a href="/Book/3245.aspx">异界之复制专家</a> -> <a href="./">章节目录</a></div>
  38.            <div id="SelectRight"><script src="/js/Html/TextSet.js"></script></div>
  39.            </div>
  40.         </div>
  41.         <script language="javascript" type="text/javascript" src="/flash.js"></script>
  42. <SCRIPT  LANGUAGE="JavaScript">
  43. function getdy(e){
  44.   var l=e.offsetTop;
  45.   while(e=e.offsetParent){
  46.     l+=e.offsetTop;
  47.   }
  48.   l+=50;
  49.   //alert(l);
  50.   return(l+'px');
  51. }
  52. function getdx(e){
  53.   var l=e.offsetLeft;
  54.   while(e=e.offsetParent){
  55.     l+=e.offsetLeft;
  56.   }
  57.   return(l+'px');
  58. }
  59. function say(datoX,datoY){
  60.         if(document.all && !document.getElementById) {
  61.                 document.all['imgbook2'].style.pixelWidth = datoX;
  62.                 document.all['imgbook2'].style.pixelHeight = datoY;
  63.                 document.all['frontimage'].style.pixelWidth = datoX;
  64.                 document.all['frontimage'].style.pixelHeight = datoY-100;
  65.                 document.all['frontdiv'].style.pixelWidth = datoX;
  66.                 document.all['frontdiv'].style.pixelHeight = datoY-100;
  67.                
  68.                 document.all['frontimage'].style.top=getdy(document.getElementById('imgbook2'));
  69.                 document.all['frontimage'].style.left=getdx(document.getElementById('imgbook2'));
  70.                 document.all['frontdiv'].style.top=getdy(document.getElementById('imgbook2'));
  71.                 document.all['frontdiv'].style.left=getdx(document.getElementById('imgbook2'));
  72.         }else{
  73.                 document.getElementById('imgbook2').style.width = datoX;
  74.                 document.getElementById('imgbook2').style.height = datoY+100;
  75.                
  76.                 document.getElementById('frontimage').style.width = datoX;
  77.                 document.getElementById('frontimage').style.height = datoY;
  78.                 document.getElementById('frontdiv').style.width = datoX;
  79.                 document.getElementById('frontdiv').style.height = datoY;
  80.                
  81.                 document.getElementById('frontimage').style.left=getdx(document.getElementById('imgbook2'));
  82.                 document.getElementById('frontdiv').style.left=getdx(document.getElementById('imgbook2'));
  83.                 document.getElementById('frontimage').style.top=getdy(document.getElementById('imgbook2'));
  84.                 document.getElementById('frontdiv').style.top=getdy(document.getElementById('imgbook2'));
  85.         }
  86.         //alert(datoY);
  87. }
  88. function say2(w){
  89. alert("ok"+w+":")
  90. }
  91. </SCRIPT>
  92. <table border="0" width="100%" style="display:none">
  93.         <tr>
  94.                 <td valign="top"> 

  95.                 </td>
  96. <td valign="top">


  97. </td>
  98.         </tr>
  99. </table>


  100.         <div id="Content">
  101.       <div id="TextTitle">  <span class="newstitle">异界之复制专家 第六百一十一章 一拳败敌</span></div>
  102.    

  103.           <div id="BookText">


  104. <div align="center"><IMG SRC="http://disk1.wangpan999.com/DownImg/2008/7/3/3245/6335067768644425000.gif" align="center" border=0></div><div align="center"><IMG SRC="http://disk1.wangpan999.com/DownImg/2008/7/3/3245/6335067768667862501.gif" align="center" border=0></div>

  105. </div><table border="0" width="70%">
  106. <tr>
  107. <td>如果您想阅读其他章节,请进入<a href="./">目录</a>查看更多,阅读更多小说请登陆<a href="http://www.hahawx.com/">[url=http://bbs.maxthon.cn/WWW.hahawx.COM]WWW.hahawx.COM[/url]</a>阅读!

  108. <p><a target="_blank" href="http://www.hahawx.com/Html/18/2660/">
  109. <font color="#006699">无极魔道</font></a><font color="#006699"> </font>
  110. <a target="_blank" href="http://www.hahawx.com/Html/3/3251/">
  111. <font color="#006699">琴帝</font></a><font color="#006699"> </font>
  112. <a target="_blank" href="http://www.hahawx.com/Html/Book/3/3463/">
  113. <font color="#006699">一世枭雄</font></a><font color="#006699"> </font>
  114. <a target="_blank" href="http://www.hahawx.com/Html/14/3007/">
  115. <font color="#006699">我的美女大小姐</font></a><font color="#006699"> </font>
  116. <a target="_blank" href="http://www.hahawx.com/Html/3/3245/">
  117. <font color="#006699">异界之复制专家</font></a><font color="#006699"> </font>
  118. <a target="_blank" href="http://www.hahawx.com/Html/51/3199/">
  119. <font color="#006699">九世重生</font></a>
  120. <a target="_blank" href="http://www.hahawx.com/Html/18/2863/">
  121. <font color="#006699">仙界修仙</font></a></p></td>
  122. </tr>
  123. </table>
  124. <table border="0" width="70%">
  125.         <tr>
  126.                 <td><SPAN style="display:none"> </SPAN></td>
  127.         </tr>
  128. </table>
  129.           <div id="LinkMenu"><script>ShowLinkMenu('<a href="javascript:document.location=prevpage">翻上页</a>','Index.shtml','<a href="javascript:document.location=nextpage">翻下页</a>');</script></div>
  130.         <table border="0" width="100%">
  131.         <tr>
  132.                 <td><SPAN id=ad_09> </SPAN></td>
  133.         </tr>
  134. </table>
  135.           <div id="EndMenu"><script>ShowEndMenu(1,'哈哈文学','/','Content.shtml','Index.shtml','/Book/3245.aspx','/User/BR3245.aspx','/User/BS3245.aspx','/User/B3245C898466.aspx','第六百一十一章 一拳败敌');</script></div>
  136.          
  137.         </div>
  138.     <div id="End">
  139.      <div id="EndType">

  140.             <div id="CopyRight"><a href="/">哈哈文学网</a>,小说《<a href="/Book/3245.aspx">异界之复制专家</a>》的<a href="./">目录</a>以及最新章节“第六百一十一章 一拳败敌”已经更新并由网友收集并上传<script>ShowCopyRight();</script></div>
  141.          </div>
  142.   </div>
  143.   </div>
  144. </center>

  145. <script src="/js/BookText.js"></script>
  146. <script src="/js/gb.js"></script>
  147. </body>
  148. </html>
  149. <SPAN class=spanclass id=span_ad_08>


  150. </SPAN>
  151. <SCRIPT>ad_08.innerHTML=span_ad_08.innerHTML;span_ad_08.innerHTML="";</SCRIPT>

  152. <SPAN class=spanclass id=span_ad_09>


  153. </SPAN>
  154. <SCRIPT>ad_09.innerHTML=span_ad_09.innerHTML;span_ad_09.innerHTML="";</SCRIPT>
复制代码

作者: jiechu    时间: 2008-7-30 10:28     标题: 这是Maxthon的版主给出的过滤

action:3
match:<span[^>]*?id=['"]?(?:ad_|span_ad_).*</span>
bound:$TAG(span)
match_url:自己填

action:3
match:.*span_ad_.*
bound:<script.*?</script>
match_url:自己填

match: </html>.{5,}
replace:</html>

请问TW有没有办法过滤?
作者: Sanly    时间: 2008-7-30 11:33

如果</html>唯一,则代码如下

#exd#*网页url自己填*#</html>(?:[\s\S]*?<\/SCRIPT>){2}###</html>
作者: elkay    时间: 2008-7-30 16:03

接楼上,如果是过滤</html>后面所有的内容也可以使用"+"这个元字符,即"关键字[\s\S]+",这样关键字后面的所有内容都会匹配到
作者: Sanly    时间: 2008-7-30 16:32

原帖由 elkay 于 2008-7-30 16:03 发表 http://bbs.ioage.com/cn/images/common/back.gif
接楼上,如果是过滤后面所有的内容也可以使用"+"这个元字符,即"关键字[\s\S]+",这样关键字后面的所有内容都会匹配到


学习了,这个语法真的非常好用!
作者: jiechu    时间: 2008-7-31 01:56

弱弱的问一下,TW的正则风格是什么样的?为什么在Maxthon里用.*?就可以过滤,在TW里必须[\s\S]*?或者[\s\S]+
作者: Sanly    时间: 2008-7-31 11:13

"."是一个元字符,匹配除了换行符以外的任意字符。"*"也是元字符,它代表的不是字符,也不是位置,而是数量——指定*前边的内容可以连续重复出现任意次以使整个表达式得到匹配。".*"连在一起表示任意数量的不包含换行的字符,加上"?"表示转化为懒惰匹配模式,即在整个匹配成功的前提下使用最少的重复。

"\s"表示匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等;"\S"表示匹配任意不是空白符的字符;加上"[ ]"则构成一个字符类, 匹配方括号内的任意一个字符。后面"*?"则参照上面的解释。

这样是否可以看出两者的区别:一个能换行,一个不能。
作者: 285900537    时间: 2008-7-31 14:27

也可以写成这样
  1. #exd#*url*#(<\/html>)[\s\S]+###$1
复制代码
TW中的[\s\S]*?相当于MX中的[.\n]*?,当然,MX中也能使用[\s\S]*?。
作者: Sanly    时间: 2008-7-31 16:12

"[.\n]"作为正则表达式有问题吧,匹配不到啊!是应该表达成"(?:.|\n)"吗?但也匹配不到。正则表达式也有分类吗?

[ 本帖最后由 Sanly 于 2008-7-31 16:15 编辑 ]
作者: elkay    时间: 2008-7-31 17:29

“[\s\S]*?”这个并不是一个定式,只要能达到你的目的用什么方式完全可以自由选择,像“.*?”也是可以用的,这个只是习惯问题,也许你习惯用“.*?”的话你可以继续用,只要能达到你想要的目的就可以了,不必拘泥用究竟用什么方式

每种方式区别是肯定会有的,比如在执行效率上,或者是匹配的内容上有些出入,但是对于exd这种只在特定网站生效的规则,效率问题可以不去考虑,只要能达到想要的目的就完全可以放心用
作者: jiechu    时间: 2008-8-3 22:11

谢谢各位,另外还有这样一类广告代码怎样屏蔽?
  1. <script type='text/javascript'>
  2. cpro_client='hahawx_cpr';
  3. cpro_at='text_image';
  4. cpro_161=4;
  5. cpro_flush=4;
  6. cpro_uap=1;
  7. cpro_w=728;
  8. cpro_h=90;
  9. cpro_template='text_default_728_90';
  10. cpro_cbd='#86AC5F';
  11. cpro_cbg='#FFFFFF';
  12. cpro_ctitle='#0000ff';
  13. cpro_cdesc='#444444';
  14. cpro_curl='#008000';
  15. cpro_cflush='#e10900';
  16. </script>
复制代码
  1. <script type="text/javascript">
  2. google_xxxx=xxxx;
  3. google_xxxx=xxxx;
  4. google_xxxx=xxxx;
  5. google_xxxx=xxxx;
  6. ........
  7. </script>
复制代码
注意,单双引号,可能是为了抵抗屏蔽故意弄成这样,这类代码有什么办法?
我试过<script[\s\S]*?(cpro_|google_|yahoo_|sogou_)[\s\S]*?<\/script>好像误杀严重

不知道这样可以吗,怎么可以弄得通用一些
  1. #exd#*.hahawx.com*#<script[^>]*?text/javascript[^>]*?>[\s\S]*?cpro_[\s\S]*?<\/script>###<!--Ad Blocked-->
  2. #exd#*.hahawx.com*#<script[^>]*?cpro\.baidu\.com\/cpro\/ui\/cp\.js[^>]*?><\/script>###<!--Ad Blocked-->
复制代码
如果这个网址需要匹配www.hahawx.com/Html/*****怎么写
#exd#*.hahawx.com*#<script[^>]*?text/javascript[^>]*?>[\s\S]*?cpro_[\s\S]*?<\/script>###<!--Ad Blocked-->这句误杀太严重 这里根本看不到了 http://www.hahawx.com/Html/20/3023/910549.shtml
目前maxthon2可以过滤

[ 本帖最后由 jiechu 于 2008-8-3 22:30 编辑 ]
作者: elkay    时间: 2008-8-3 22:52     标题: 回复 11# jiechu 的帖子

这些可以放着不管,只要相应的脚本过滤了,这些就没有任何作用了。这些只是一些广告脚本遗留下来的东西
作者: jiechu    时间: 2008-8-4 18:59

如果能有好的办法,还是过滤掉比较好,难道没有什么办法能过滤吗?同样的过滤,我确实在maxthon的源码里找不到这些遗留的code了,想想办法吧
作者: 小絮    时间: 2008-8-4 21:12

我们过滤广告的目的就是用最小的资源成本达到最好的视觉效果,所以过滤广告没必要将所有的广告代码全清理掉,只要能阻止广告的下载和显示就可以了,至于源代码是否过滤干净我觉得没必要理会。
以下是百度的推广广告代码:

  1. <script type='text/javascript'>
  2. cpro_client='hahawx_cpr';
  3. cpro_at='text_image';
  4. cpro_161=4;
  5. cpro_flush=4;
  6. cpro_uap=1;
  7. cpro_w=728;
  8. cpro_h=90;
  9. cpro_template='text_default_728_90';
  10. cpro_cbd='#86AC5F';
  11. cpro_cbg='#FFFFFF';
  12. cpro_ctitle='#0000ff';
  13. cpro_cdesc='#444444';
  14. cpro_curl='#008000';
  15. cpro_cflush='#e10900';
  16. </script>
  17. <script language="JavaScript" type="text/javascript" src="http://cpro.baidu.com/cpro/ui/cp.js"></script>
复制代码
真正起作用的是这一句:

  1. <script language="JavaScript" type="text/javascript" src="http://cpro.baidu.com/cpro/ui/cp.js"></script>
复制代码
我们只需要屏蔽这一句,百度的推广广告就不会下载更不会显示出来了,从而也达到了我们的过滤目的。剩下的代码,既然不影响网页的显示,何必要赶尽杀绝?
tw2的过滤规则写法有好几种:
1、过滤与特征符有关的所有下载。
     从百度推广广告的代码分析比较有特点的字符是cpro,所以我们可以选用cpro作为过滤特征符,于是规则可以写成:
  1. *cpro*
复制代码
  1. /cpro/
复制代码
其中"/cpro/"这样的过滤方法是可以支持正则表达式的

2、替换源代码的过滤方法
     这是tw2才推出的比较强大的过滤方法,过滤的内容可以控制得非常精确,规则可以这样写:
  1. #ex#<script[^>]*?cpro\.baidu[\s\S]*?</script>###
复制代码

[ 本帖最后由 小絮 于 2008-8-4 21:13 编辑 ]
作者: elkay    时间: 2008-8-4 22:04     标题: 回复 13# jiechu 的帖子

实在要过滤也是可以的,就如你给出的2个例子,可以用"[^<]*?"即匹配到出现"<"为止,这也正是<script>...</script>中,后一个</script>的开头,如果要结合其他内容,也可以用类似的思路,总之过滤使用到的正则表达式并没有什么固定的格式,一切都是以能达到目的为主,所以,有时候稍微转个弯就可以了
作者: tongang    时间: 2008-8-4 23:33

我实现方法一般比较狠.直接把 代码段都删除..要是在最后的话.最好..直接 </html>都给他去了..要是不是最后[\s\S]*? 清除了也行..不过要看清楚哪行干什么的..呵呵
作者: jiechu    时间: 2008-8-6 19:31

我开始试用proxomitron, 功能很强大,Maxthon在部分模仿这个工具的功能。




欢迎光临 世界之窗论坛 (http://bbs.theworld.cn/) Powered by Discuz! 7.2