使用WebSocket绕过广告屏蔽插件
2019独角兽企业重金招聘Python工程师标准>>>
现在网络上的广告真的是无所不用其极,在网上冲浪,稍不留神,随时随地都会碰上广告,于是广告屏蔽这个需求,就应运而生了。古语云,道高一尺魔高一丈。今天这篇文章就介绍了BugReplay是如何发现美国成人网站Pornhub使用WebSocket绕过广告屏蔽插件。
这篇文章的本意并非是如何绕开广告屏蔽机制,而是用户了解情况后,在如何反制广告商上缩短探索的时间。
这篇文章重现了BugReplay的工程师发现美国成人网站是如何使用WebSocket绕过广告屏蔽插件的过程,视频演示可在此处观看。
当构建BugReplay的原型时,BugReplay的工程师评估了Chrome捕捉和分析网络流量的不同方法。第一个就是看起来很有前途的chrome.webRequest API。
它的文档有如下的说明:
“使用chrome.webRequest API来观察和分析流量,并拦截、阻止或修改请求。”
这似乎正是BugReplay需要的。
在使用Chrome webRequest API进行实验后,该工程师很快意识到有一个大问题。它不允许用户分析任何WebSocket流量,而这个功能是用户真正需要的东西。
BugReplay发现2012年有一个相关的bug报告:
“chrome.webRequest.onBeforeRequest不拦截WebSocket请求。”
在这份Bug报告中,用户抱怨未能阻止WebSockets,以致网站可以轻易的绕过广告屏蔽插件。如果WebSocket数据通过webRequest API对Chrome扩展不可见,没有一些重型攻击他们不能被屏蔽。
最初,理论上屏蔽广告似乎是有风险的。采用这种技术的网站的案例非常模糊。在2016年8月,一位来自拥有Pornhub.com(MindGeek)的公司的员工,开始反对Chrome API添加WebSocket屏蔽功能。依照Alexa的数据,Pornhub是互联网上第63个访问量最大的网站。BugReplay检查了几个MindGeek的网站,果不其然,他们发现,即使已经安装Adblock Plus插件,也能看到这些来自MindGeek所属的广告网络中的Pornhub广告,被标识位“垃圾广告”。
在下面的截图中,你可以在网页顶部看到一个横幅,表明该网站已发觉用户使用了广告屏蔽插件,并邀请用户订阅收费广告免费版的网站。在网页的右侧你能看到广告。
他们是如何做到的?
当用户访问Pornhub.com时,它会尝试检测您是否有广告屏蔽插件,如果检测到一个,它就打开一个WebSocket连接,作为传递广告的备份机制。
查看BugReplay浏览器记录,你可以看到多个网络触发请求,被AdBlock阻止了:它们在网络流量中被标记为“失败”,如果你单击详细信息中的一条,你能看到失败原因是:net::ERR_BLOCKED_BY_CLIENT
. 这是Chrome阻止资源加载时报告的错误。
你可以在网络面板中单独找到WebSocket框架,或者只查看WebSocket创建请求。WebSocket连接的域名是:“ws://ws.adspayformy.site.” ,这不过是针对广告屏蔽插件的玩笑而已。
当WebSocket加载时,浏览器为每个可用于广告的点发送一个带有JSON编码有效载荷的帧。检出一个WebSocket框架,你可以在框架数据中看到广告数据被返回:
- 在
zone_13
,JavaScript应放置广告。2. 在media_type
的图像,让页面知晓用哪种元素来创建(大多数是视频广告,在这篇文章我选择了一张图像,因为这样相对温和)。3. 图像本身是base64编码的,因此可以使用data uri scheme来重建。4. 一个“img_type”(“image/jpeg”)通过data uri。
广告屏蔽插件主要是用webRequest API进行工作的,因此通过在WebSocket上利用base64编码来传输数据构建广告,是一个绕开广告屏蔽的相当聪明的方式。
下一步是什么
2016年10月25日,在Chromium Tracker上,一名贡献者写了一个补丁,增加了使用webRequest API来阻止WebSockets的能力。如果这个补丁被接受,将会集成到Chrome stable版。
广告屏蔽插件作者可以选择在何时或何时推出最新版本的Chrome浏览器,以便让内容提供商(如Pornhub)了解他们在广告屏蔽战争中的下一步行动。
更新
自从BugReplay开始研究这个技术时,AdBlock Plus和uBlock Origin已经发布解决方法来阻止这种技术,而AdBlock和其他人还没有。
对于AdBlock Plus而言,包装器在发送/接收WebSocket消息之前执行虚拟Web请求。扩展将这些虚拟Web请求识别为表示WebSocket消息。如果应该阻止相应的WebSocket消息,它就拦截并阻止它们。然后WebSocket包装器基于虚拟web请求是否被阻止来决定允许/阻止WebSocket消息。
对于uBlock Origin来说,他们发布了一个解决方法,具有“使用CSP指令来屏蔽WebSocket的能力”。
转载于:https://my.oschina.net/xuxueli/blog/790779
使用WebSocket绕过广告屏蔽插件相关推荐
- 浏览器广告屏蔽插件推荐(Chrome与Firefox)
今天无意中打开MS Edge浏览网页时感觉广告好多,看起来很难受.我自己平时使用其他浏览器的时候都是使用广告屏蔽插件的,现在推荐给还没有使用过的小伙伴们,减少工作学习时无关信息的干扰. 目录 Chro ...
- 二、浏览器广告屏蔽插件_Adblock Plus
1.浏览器广告 在浏览器浏览内容时,有广告无可厚非,但有些网页做的太过分了.如广告影响了正常网页的浏览:广告内容低俗恶心.特推荐以下浏览器广告屏蔽插件. 2.浏览器广告屏蔽插件 2.1.Adblock ...
- chrome浏览器广告屏蔽插件adblock下载地址
推荐一个chrome广告屏蔽插件. 下载地址 https://downloads.adblockplus.org/devbuilds/adblockpluschrome/ 关键字: 1) 浏览器广告 ...
- chrome浏览器广告屏蔽插件adblock
chrome浏览器广告屏蔽插件adblock下载地址: https://downloads.adblockplus.org/devbuilds/adblockpluschrome/ 安装: chrom ...
- 2017年网友还在使用的广告屏蔽插件大集合!
题外话:最近我在想广告也是一个很炫的东西,让人又爱又恨!因为广告存在的必要性它养活了一部分人,又因为广告的讨厌性又养活了一些人.说实话我不讨厌的有创意的广告,说这句话并不是因为我的网站需要广告,当然我 ...
- 谷歌浏览器 广告屏蔽插件 ublock
总结 1.兼容性很好,支持几乎所有主流浏览器内核平台(详见下面的"支持的平台"). 2.广告过滤规则完美兼容 Adblock 规则,完全通用. 3.广告拦截效果很给力,国内视频插播 ...
- 简单几行代码,写一个百度广告屏蔽插件,爽到爆
下载地址:https://github.com/jsoncode/b... 使用方法: 将文件夹拖到这里面 一个小问题: 我没有境外支付信用卡>无法向谷歌支付$5的费用>每次打开浏览器都会 ...
- 浏览器广告屏蔽插件,特定类名adver,advertisement
最近在写个页面,有关于广告部分,用了.adver,.advertisement类似的命名,然后页面就不显示这部分了. 类似这样, 希望能对遇到的朋友有所帮助.
- Chrome 广告屏蔽功能不影响浏览器性能
开发四年只会写业务代码,分布式高并发都不会还做程序员? >>> Google 宣布 Chrome 的 API 调整计划,原因是因为有些 API 效率差.但是,第三方研究结果发现, ...
最新文章
- Useful Shell Option – extglob 和 shopt命令
- 实验测试2SK241的g-s击穿电压
- 关于 Quartz 框架如何引入 Dubbo 服务
- 基于React开发范式的思考:写在Lesx发布之际
- 会出现 unreachable statement 的可能
- Git教程~忽略特殊文件
- Web前端笔记-element ui中table中禁止换行,使用...进行省略
- C++新特性探究(三):=default、=delete
- elasticsearch环境搭建与使用
- executorservice 重启_iPhone7使用久了突然手机自动重启,多半原因出在这儿,进来看看...
- 检测精度大幅提升!移动端实时的NanoDet升级版NanoDet-Plus来了!
- 5 断点无效_JTO|应建明团队揭示罕见ALK/ROS1/RET基因组断点的分子病理学特点及靶向治疗疗效...
- 常见的影视cms及安装环境说明
- shap库源码和代码实现
- 从业务开始:一招攻破数据分析思路大难题
- 适合普通人的108个短视频项目:不用出镜也能赚钱的手机摄影玩法(3)
- 豆瓣评分小程序Part-3
- 棋圣高调搬弄名人日本棋圣挟五冠搬弄对手
- android可以控制手机充电吗,关于防止遥控器向安卓手机充电的问题
- python只读打开文件_关于python:只读文件的第一行?
热门文章
- 旅行者 问题_门槛项目:没有旅行者回到他的原籍城市。
- 真效率神器,UI稿智能转换成前端代码,准确率极高
- nginx修改upstream不重启的方法(ngx_http_dyups_module模块)
- 如何使用Gitbook创建html技术文档
- 拿下京东榜单第五首战告捷,看联想手机如何上演王者归来
- xtrabackup备份mysql“ib_logfile0 is of different”错误分析
- goaccess_nginx日志分析工具
- adb devices 里面有很多 emulator-XXXX的解决方法
- 为什么本地使用js或jquery操作cookie在谷歌浏览器chrome中不生效?
- Hsiaoyang:Google搜索结果页面分析