文档章节

好多年前写的一个优酷广告屏蔽插件(代码已经找不到了)

晚睡综合症
 晚睡综合症
发布于 2015/03/22 19:50
字数 1122
阅读 31
收藏 1

 

需求:优酷最近搞了一个广告防屏蔽,导致修改host的方法不能用了。我们需要一个新方法来绕过这个防屏蔽机制。

基本思想:新版的优酷flv player下载不到广告会罢工30秒,既然不能屏蔽广告,那我们就替换广告文件,用一个假广告文件让flv player播放。

实现:
首先抓一下包,或者用Fiddle2拦截请求,会发现优酷的广告是个flv文件,而土豆和新浪的广告是f4v文件或者swf文件(不常用的就先不关心了)。我们找到广告url的特点,就可以实现替换。
具体替换方式,有两种选择(驱动之类的bt方法我就不说了):


第一种是写一个伪代理服务注册进系统,同时用PAC脚本根据url自动切换代理,发现是广告url就切换到我们写的伪代理,而伪代理的工作就是提供假广告文件。

第二种方式是利用浏览器插件拦截和替换请求。这个要针对不同浏览器开发,比如chrome扩展是基于js的,其拦截请求的接口叫 experimental.webRequest,是个实验API,google不建议使用;同时chrome和firefox都支持NPAPI,而IE的插件机制是基于COM的。网上有个叫FireBreath的开源项目,是一个跨浏览器和操作系统的浏览器插件框架,是个好东西,但是我之前还没有用过。

我们先针对以后总浏览器实验一下功能能不能实现,笔者针对的是IE。
IE的插件是个臭名昭著的东西,但是对开发者而言还是比较方便的,因为它比较“自由”,可以无所顾忌的使用C++干任何事儿。IE插件有三种:

 

第一种是古老的ActiveX,这个大家肯定都很熟悉。PS:讲个笑话,我之前公司做过一个项目,要求提供CS和BS客户端。我们的CS客户端是现成的,而BS客户端就是CS客户端封装进一个巨大的ActiveX放进网页里,而且CS客户端是Qt4开发的,你可以想象ActiveX有多大。。。

 

第二种叫BHO(Browser Helper Object),同样古老的技术,很多流氓插件和恶心工具栏就是这个东西,但是google的chrome frame也是基于这个东西,可见技术如刀,区别在人。BHO可以让你把dll嵌入IE进程,拦截一些IE操作,比如前进后退,但是太底层的不行,比如抓包肯定不行。

第三种比较特殊,叫Asynchronous Pluggable Protocols,这个东西也很常用,它可以让你拦截某个协议下的请求,比如http://,迅雷拦截thrunder://就是用的这个技术。Asynchronous Pluggable Protocols可以永久拦截,需要写注册表,也可以进程内临时拦截,调用一个API就可以,但是只针对本进程有效。很多电子书软件和使用WebBrowser控件制作华丽GUI的软件使用这种临时拦截。

我用的方法就是写一个BHO嵌入IE进程,拦截IE的Navigate事件,如果是感兴趣的视频网站就开启Asynchronous Pluggable Protocols拦截所有http请求,找到广告文件的请求,用假广告文件替换。假广告文件是个很短的flv或者swf,这样就绕过了防屏蔽机制。

结果:
目前只是实现了基本功能,可以拦截优酷,土豆,新浪和奇艺的视频广告(其他的我不怎么用),并且暂时不针对外链的视频。暂时只支持IE,下一步用FireBreath做一个通用版。

截图(假广告时长两秒):


存在的问题:
优酷的播放器可以正常播放假广告,但是土豆和新浪的都不可以,接受到文件之后他们会播放失败,之后开始正常播放视频。我专门下载了他们自己的广告文件作为假广告,还是不行。可能他们使用了某种签名机制,这个有待研究,好在他们没有像优酷一样防屏蔽,我暂时直接拦截掉了他们的广告,现在可以正常使用。

© 著作权归作者所有

晚睡综合症
粉丝 0
博文 21
码字总数 10654
作品 0
杭州
程序员
私信 提问
iOS逆向(8)-Monkey、Logos

由于最近微信大佬发飙,罚了红包外挂5000万大洋,这就让人很慌了,别说罚我5000万,5000块我都吃不消。所以笔者决定以后不用微信做例子了。换成优酷了😈。 本文会对优酷的设置页面增加一个...

一缕清风扬万里
04/25
0
0
如何屏蔽优酷及其他视频广告(续)

最近优酷网更新了其Flash播放器,其中最重要的更新就是引入了反屏蔽广告机制如果按照此贴中的办法(http://www.oschina.net/question/115152_20786)已经不能完全屏蔽广告,如果安装了屏蔽广...

番茄炒蛋
2011/10/27
914
4
那些100%被浪费的运营预算,其实本可以避免

那些100%被浪费的运营预算,其实本可以避免 仲志成 2018-04-11 17:41 随着数字技术的迅速发展,运营、产品和营销人员可以使用的数字化运营及营销推广手段也越来越多。从近几年该领域B2B公司数...

@dailidong@
2018/05/22
0
0
彻底屏蔽优酷等视频网站广告的方法

今天看到这样一条微博 广 告时间由原来的15秒升到40秒。实在忍无可忍了以前15秒的广告,我们还能理解。但现在40多秒成了标配,真的无法理解了,于是去网上找了些屏蔽方法, 但大多是过时了的...

西西爱OS
2012/09/14
682
8
强烈推荐的 Chrome 插件

昨天写了一篇免费访问 Google 的文章,感觉帮到了一些小伙伴,甚至有好几个小伙伴都在后台给我留言,哈哈哈。能够访问 Google 的浏览器插件以及 hosts 文件我已经分享到了微信群里面,如果还...

有苦向瓜诉说
01/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

使用TensorFlow的AI程序运行报错AttributeError: module 'tensorflow' has no attribute 'xxx'

使用TensorFlow的AI程序,在运行时报错AttributeError: module 'tensorflow' has no attribute 'xxx',首先检查是否是包路径不对,一般是版本变化所致。...

织梦之魂
今天
3
0
提示浏览器版本低

本文转载于:专业的前端网站➭提示浏览器版本低 网站网页在遇到浏览器低版本(尤其是IE浏览器)时,提示浏览器版本低(如IE8以及以下),建议用户升级浏览器以获得最好体验。以下是代码: 1...

前端老手
今天
6
0
CentOS 7系统增加swap

转载请注明文章出处:CentOS 7系统增加swap swap是位于磁盘上的特殊文件(或分区),属于“虚拟内存”的一部分。通俗点就是内存的备胎,内存充足的情况下,基本上没swap什么事(和设置有关)...

tlanyan
今天
6
0
基于Prometheus和Grafana的监控平台 - 环境搭建

相关概念 微服务中的监控分根据作用领域分为三大类,Logging,Tracing,Metrics。 Logging - 用于记录离散的事件。例如,应用程序的调试信息或错误信息。它是我们诊断问题的依据。比如我们说...

JAVA日知录
今天
6
0
PHP运行时全局构造体

struct _php_core_globals { zend_bool magic_quotes_gpc; // 是否对输入的GET/POST/Cookie数据使用自动字符串转义。 zend_bool magic_quotes_runtime; //是否对运行时从外部资源产生的数据使...

冻结not
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部