博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用WebSocket绕过广告屏蔽插件
阅读量:5950 次
发布时间:2019-06-19

本文共 1988 字,大约阅读时间需要 6 分钟。

hot3.png

现在网络上的广告真的是无所不用其极,在网上冲浪,稍不留神,随时随地都会碰上广告,于是广告屏蔽这个需求,就应运而生了。古语云,道高一尺魔高一丈。今天这篇文章就介绍了BugReplay是如何发现美国成人网站Pornhub使用WebSocket绕过广告屏蔽插件。

这篇文章的本意并非是如何绕开广告屏蔽机制,而是用户了解情况后,在如何反制广告商上缩短探索的时间。

这篇文章重现了BugReplay的工程师发现美国成人网站是如何使用WebSocket绕过广告屏蔽插件的过程,视频演示可在观看。

当构建的原型时,BugReplay的工程师评估了Chrome捕捉和分析网络流量的不同方法。第一个就是看起来很有前途的 API。

它的文档有如下的说明:

“使用chrome.webRequest API来观察和分析流量,并拦截、阻止或修改请求。”

这似乎正是BugReplay需要的。

在使用Chrome webRequest API进行实验后,该工程师很快意识到有一个大问题。它不允许用户分析任何WebSocket流量,而这个功能是用户真正需要的东西。

BugReplay发现2012年有一个相关的bug报告:

在这份Bug报告中,用户抱怨未能阻止WebSockets,以致网站可以轻易的绕过广告屏蔽插件。如果WebSocket数据通过webRequest API对Chrome扩展不可见,没有一些重型攻击他们不能被屏蔽。

最初,理论上屏蔽广告似乎是有风险的。采用这种技术的网站的案例非常模糊。在2016年8月,一位来自拥有Pornhub.com(MindGeek)的公司的员工,Chrome API添加WebSocket屏蔽功能。依照Alexa的数据,Pornhub是互联网上网站。BugReplay检查了几个MindGeek的网站,果不其然,他们发现,即使已经安装Adblock Plus插件,也能看到这些来自MindGeek所属的广告网络中的Pornhub广告,被标识位“垃圾广告”。

在下面的截图中,你可以在网页顶部看到一个横幅,表明该网站已发觉用户使用了广告屏蔽插件,并邀请用户订阅收费广告免费版的网站。在网页的右侧你能看到广告。

他们是如何做到的?

当用户访问Pornhub.com时,它会尝试检测您是否有广告屏蔽插件,如果检测到一个,它就打开一个WebSocket连接,作为传递广告的备份机制。

,你可以看到多个网络触发请求,被AdBlock阻止了:它们在网络流量中被标记为“失败”,如果你单击详细信息中的一条,你能看到失败原因是:net::ERR_BLOCKED_BY_CLIENT. 这是Chrome时报告的错误。

你可以在网络面板中单独找到WebSocket框架,或者只查看请求。WebSocket连接的域名是:“ws://ws.adspayformy.site.” ,这不过是针对广告屏蔽插件的玩笑而已。

当WebSocket加载时,浏览器为每个可用于广告的点发送一个带有JSON编码有效载荷的帧。检出一个,你可以在框架数据中看到广告数据被返回:

  1. zone_13,JavaScript应放置广告。2. 在media_type的图像,让页面知晓用哪种元素来创建(大多数是视频广告,在这篇文章我选择了一张图像,因为这样相对温和)。3. 图像本身是base64编码的,因此可以使用来重建。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,包装器在发送/接收WebSocket消息之前执行虚拟Web请求。扩展将这些虚拟Web请求识别为表示WebSocket消息。如果应该阻止相应的WebSocket消息,它就拦截并阻止它们。然后WebSocket包装器基于虚拟web请求是否被阻止来决定允许/阻止WebSocket消息。

对于uBlock Origin来说,他们发布了一个解决方法,具有“”。

转载于:https://my.oschina.net/xuxueli/blog/790779

你可能感兴趣的文章
【跃迁之路】【737天】程序员高效学习方法论探索系列(实验阶段494-2019.2.27)...
查看>>
vue的初步使用
查看>>
ApacheCN 学习资源汇总 2019.3
查看>>
进击webpack4 (优化篇)
查看>>
区块链 个人怎么赚钱 个人 如何投资区块链
查看>>
js对象的深浅拷贝
查看>>
Windows 下安装 Redis
查看>>
LNMP+HAProxy+Keepalived负载均衡(五)- 通过rsyncd实现文件的相互同步
查看>>
electron-vue使用electron-updater实现自动更新
查看>>
vue_music:搜索search.vue
查看>>
React中那些纠结你的地方(一)
查看>>
关于最近Vue3+ & Vue-CLI3+比较热门的十几篇文章
查看>>
Docker入门安装教程
查看>>
EOS开发dApp前需要了解的五件事
查看>>
开发一款即时通讯App,从这几步开始
查看>>
C++ Primer 第二章 学习笔记及习题答案
查看>>
Node.js 指南(入门指南)
查看>>
听听【八年阿里架构师】怎样讲述Dubbo和Spring Cloud微服务架构
查看>>
Vue—事件修饰符
查看>>
linux基础 二
查看>>