屏蔽广告的原理、方法和实现:[3]封装成SDK

2025-11-22 00:15:45

1、打开VS2012集成开发环境,新建“C#类库”工程,并命名为HDK,然后添加System.Windows.Forms和System.Drawing的引用。如图:

屏蔽广告的原理、方法和实现:[3]封装成SDK

2、 然后,再添加新建winform工程,命名为HDKTest,引用程序集HDK,并设置为启动项,用于测试HDK。项目结构如图:

屏蔽广告的原理、方法和实现:[3]封装成SDK

3、在HDK中添加类Element,这是HDK中的基础类。需要一个WebBrowser引用,是网页元素抓取的基础,最好在构造函数中赋值,并且不允许无参的构造函数,如下:

       public WebBrowser webBrowser;


       public  Element(WebBrowser wb) {
           this.webBrowser = wb;
       }

4、封装直接元素抓取,即封装GetElementById、GetElementByPoint和GetElementByTagName函数。如下图:

屏蔽广告的原理、方法和实现:[3]封装成SDK

5、接着封装间接元素抓取,即id-pn、id-tn以及从body元素开始的tn。如下:

屏蔽广告的原理、方法和实现:[3]封装成SDK

6、元素抓取的操作基本封装完成了,下面要对抓取的元素进行操作的封装。使用style方法,我们需要考虑原来的style是否已经存在,若存在则修改,不存在则添加。如下图:

屏蔽广告的原理、方法和实现:[3]封装成SDK

1、HDK的封装基本完成,下面是HDK的测试。打卡HDKTest项目的form1,添加一个TextBox控件、一个Button控件、一个WebBrowser控件,并把这些控件分别放到容器TableLayoutPanel中,布局效果如下图:

屏蔽广告的原理、方法和实现:[3]封装成SDK

2、然后在button1的Click事件和webBrowser1的DocumentCompleted事件中添加代码:

       private void button1_Click(object sender, EventArgs e)


       {
           //跳转到http://jingyan.baidu.com/article/fec4bce23e505cf2618d8bd3.html
           webBrowser1.Navigate("http://jingyan.baidu.com/article/fec4bce23e505cf2618d8bd3.html");
       }

       private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)


       {
           var em = new HDK.Element(this.webBrowser1);
           //id aside-ads-container,pn 1
           var a = em.GetElementByParentFormId ("aside-ads-container", 1);
           a.Style = HDK.Element.GetNewStyleStr(a.Style, "display", "none");
       }

如下图:

屏蔽广告的原理、方法和实现:[3]封装成SDK

3、最后,运行测试,达到预期效果,如下:

屏蔽广告的原理、方法和实现:[3]封装成SDK

1、通过封装广告屏蔽的原理(找到目标网页元素并设置其style为"display:none")、抓取网页元素的方法(直接法、间接法等)、修改属性的方法(style法),我们就可以得到一个简单SDK-HDK。

2、使用HDK,我们可以快速的屏蔽广告。从原理上讲,我们可以对网页中的元素做任何事,包括隐藏、修改大小、采集数据等等。

3、我们并没有设计一个完善的错误收集和处理的机制,一切错误皆返回Null。

4、选择Release模式,点击生成,我们就得到了一个简易的SDK了!

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢