网络安全 频道

如何过滤www.51.net广告最新版本

很久没有关注www.51.net的免费空间的广告了,最近一直挺忙,今天抽出点时间把他的代码又分析了一下:本文来自www.e3i5.Com

   1.免费空间去掉了弹出式的广告。(省了俺不少力气)

   2.但还是存在DIV层广告。(咱还是把它过滤了)

   3.还有可恶的插件。(具体的功能还在测试中)

   原版本中的窗口过滤代码被很多转载站点改为其广告窗口使用,使程序失去了广告屏蔽功能,呵呵,有这个必要吗?

   http://www.e3i5.com/display/js/0005/banads.asp

   有需要的可以关闭脚本功能,查看一下源代码,可能对你在其他方面的脚本特效有帮助。

   新代码和原来写代码有点区别,原来是对层的隐藏,现在是将层内容完全删除。使用的脚本函数是:innerHTML 。对此函数比较陌生的朋友可以在GOOGLE里搜索一些脚本教程来认识一下innerHTMLd的解释和用法,这里就不再多讲。
   新代码对层的属性加以判断,免除了使用代码后,连自己的层也不能使用的缺点。对于此功能,先给出一个简单的实例,过段时间全部测试完成了,我们再将所有的代码全部发出。


   对于插件广告来说,我们对此测试了很久。对于高版本的IE,如IE6.0 SP1,我们始终不能对插件进行一个比较好的屏蔽。相对的如果采用插件屏蔽将对网页内的FLASH来说是一个灾难。对此在程序进行插件屏蔽的同时增加了对51.NET插件的一个属性检测,使网页内的正常OBJECT标签能正常工作。

   经过我们测试,整个代码对插件的过滤效果还是有限制的。并不是所有的浏览器,所有版本的IE都对代码能正确执行。IE5.0版本的IE我们通过了测试,对于高版本的IE我们还在修改出更好过滤代码。


   对于COOKEIS,51.NET的广告使用COOKIES在本地做为广告验证的依据。我们在原有的COOKEIS写操作写,增加了对COOKIES检测的功能并增长COOKIES的保存时间。

   新代码不仅仅对51.net站点免费空间广告有过滤作用,对于其他一些免费空间的广告也有一定的作用。相对于使用层来加载广告的都可以使用该段代码进行广告的屏蔽。当然过一段时间我们会出一份可以各空间共享的代码,毕竟还是专一的代码好。:)

  以下是代码的主要部分:

<!- 切记将广告过滤代码放到网页的最下端 -->


<script language="Javascript">
/***************************************************************
* Put This Code In The Bottom Of The Page.
* You Can Use This Word for your DIV''s Attribute,Or You Can
* Change It By Yourself.But Your DIV''s Attribute Must be Fixed
* The Words, Which Your Writed In The Following Array!
* eg. var Crstr="e3i5,fqy"
* You''d Better Insert Two Elements In The Array,We Update It Later!
* CopyRight WWW.E3I5.COM 20:45 2005-4-23
***************************************************************/

var Crstr="e3i5,fqy";     


// Please Don''t Change The Following Code
try
{
var e3i5 = document.getElementsByTagName("div");
var fqy=e3i5.length;
var s=Crstr.split(",")
for(j=0;j<s.length;j++)
{
   for (i=0;i<fqy;i++)
     {
        if(e3i5[i].getAttribute("id")!=s[j] && e3i5[i].getAttribute("id")!=s[j+1])
          {
            e3i5[i].innerHTML="";
          }
     }
}
}
catch(e){}


try //Test This Long Time,Because It Can''t Be Exchanged By The Code.
{
var f9y = document.getElementsByTagName("OBJECT");
var net = f9y.length
    for (var i=0;i<net;i++)
    {
        var anchor = f9y[i];
       if (anchor.getAttribute("codebase").indexOf("51.net")!=-1)
        {
            anchor.innerHTML="";
            anchor.outerHTML="";
        }

    }
}
catch(e){}

try
{
var cook = document.cookie;
    if (cook)
      {
         var cValues = cook.split('';'');   
           for(i=0;i<cValues.length;i++)
           {
             if (cValues[i].match(/ad_lastPP/))
                {
                        var data = new Date();
                        var _data = data.getTime()+100*600*600000;
                        data.setTime(_data);
                        document.cookie = ''ad_lastPP=1; expires=''+data.toGMTString();
                } 
           }  
      }
}
catch(e){}

function err()
{
window.onerror="return false";
}
err();

</script>

 

对代码的一些简单的说明:

   var Crstr="e3i5,fqy";   //这一句是定义自己使用层的ID值,避免使用层时也被代码过滤掉

   用法是:你在网页内的其他DIV层(如果你使用层的话),需要用你定义的ID属性进行标识。如”

   <div id="e3i5">文字</div> 这样,这个层就不会被删除。更详细的请看演示页面源代码。

   除了以上这句外所有的代码均不可修改,否则将失去屏蔽功能,并产生大量的脚本错误。虽然我们做了异常捕捉,但意外的循环错误会使你的IE非法操作。本文来自www.e3i5.com

   请尽量保留我们的版权信息。谢谢。如果觉得代码过长,请将<script></script>之间的代码保存为js文件,在页面中做为外部调用即可,形如:<script src=clearads.js></script>

   注1:保存代码时不要直接复制粘贴到你的网页编辑器中(如Frontpage),先将代码复制粘贴到记事本,然后在剪切到编辑器中,否则代码会被做HTMLencode处理,而失去其作用.(很多用户因为如此抱怨代码不能使用).

   注2:如果使用代码出现问题请到本站留言,复制代码请尽量使用本站代码,避免转载的复制错误以及无意的代码过滤。一部分用户复制过其他站点转载的代码,由于其站点对脚本进行过转化,使得部分代码被做了HTMLencode处理,从而使代码失效.

  呵呵,差点忘记了,还有个演示地址:http://e3i5.51.net/clearads.html
http://netadmin.77169.com/HTML/20050826010030.html

0
相关文章