写点什么

美国成人网站使用 WebSocket 绕过广告屏蔽插件

  • 2016-11-08
  • 本文字数:1875 字

    阅读完需:约 6 分钟

现在网络上的广告真的是无所不用其极,在网上冲浪,稍不留神,随时随地都会碰上广告,于是广告屏蔽这个需求,就应运而生了。古语云,道高一尺魔高一丈。今天这篇文章就介绍了 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 框架,你可以在框架数据中看到广告数据被返回:

  1. 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 的能力”。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-11-08 18:0016171
用户头像

发布了 376 篇内容, 共 211.3 次阅读, 收获喜欢 949 次。

关注

评论

发布
暂无评论
发现更多内容

​《仿盒马》app开发技术分享-- 新人专享券(2)

鸿蒙小林

HarmonyOS NEXT

《仿盒马》app开发技术分享-- 首页活动配置(5)

鸿蒙小林

HarmonyOS NEXT

《仿盒马》app开发技术分享-- 首页banner(6)

鸿蒙小林

《仿盒马》app开发技术分享-- 商品详情页(10)

鸿蒙小林

手滑救星!通知中心一秒即达,这次真的“滑”得漂亮!

HarmonyOS SDK

harmoyos

HarmonyOS多设备开发方案全新升级,赋能全场景高效开发

最新动态

什么是即席查询?企业数据敏捷分析的新范式

镜舟科技

数据分析 存算分离架构 StarRocks 即席查询 OLAP 引擎

语音能否彻底取代键盘?Wispr Flow 融资 3000 万美金背后的思考丨Voice Agent 学习笔记

RTE开发者社区

缓存之美:Guava Cache 相比于 Caffeine 差在哪里?

京东科技开发者

《仿盒马》app开发技术分享-- 自定义标题栏&商品详情初探(9)

鸿蒙小林

腾讯云自研企业级操作系统TencentOS Server,助力央国企加速自主创新

极客天地

Nexpose 8.12.0 for Linux & Windows - 漏洞扫描

sysin

Nexpose

Meta 拟收购语音 AI 初创 PlayAI;Qwen-TTS API 正式上线,支持京沪川方言丨日报

RTE开发者社区

《仿盒马》app开发技术分享-- 金刚区(3)

鸿蒙小林

《仿盒马》app开发技术分享-- 首页商品流(7)

鸿蒙小林

华为JDC登场!观测云带来下一代监控观测平台的AI实战解法

观测云

人工智能

实战拆解:阿里云 ESA 重构金融行业的安全与速度

阿里云CloudImagine

云计算 最佳实践 边缘计算 安全防护 ESA

BOE(京东方)携手合作伙伴定义下一代电竞显示趋势 借势核聚变嘉年华构建产业生态闭环

爱极客侠

懒懒笔记 | 课代表带你梳理【RAG课程 17&18:企业级安全 + 多智能体协同,打造可控、智能的RAG系统】

商汤万象开发者

AI agent LLM llama

【HarmonyOS 5】鸿蒙TEE(可信执行环境)详解

GeorgeGcs

《仿盒马》app开发技术分享-- 首页模块配置(4)

鸿蒙小林

HarmonyOS NEXT

《仿盒马》app开发技术分享-- 首页地址选择&会员码(8)

鸿蒙小林

高性能缓存设计:如何解决缓存伪共享问题

京东科技开发者

【7 月 5 日北京】倒计时 5 天!原来 IoTDB 用户大会有这么多现场福利

Apache IoTDB

从0到亿级数据抓取:亮数据如何破解全球采集难题?

阿Q说代码

数据挖掘 数据采集 亮数据

Golang基础笔记七之指针,值类型和引用类型

Hunter熊

Go 指针 逃逸分析 引用类型 内存逃逸

ETLCloud CDC中如何监听多表?

谷云科技RestCloud

数据库 数据处理 ETL CDC 数据集成工具

SyncMate for mac(数据同步软件)

Geek贝

一次线上生产库的全流程切换完整方案

京东科技开发者

生而非凡,稳健流畅,HarmonyOS体验再升级

最新动态

《仿盒马》app开发技术分享-- 商品规格弹窗(11)

鸿蒙小林

美国成人网站使用WebSocket绕过广告屏蔽插件_语言 & 开发_刘志勇_InfoQ精选文章