使用WebSocket绕过广告屏蔽插件

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

现在网络上的广告真的是无所不用其极,在网上冲浪,稍不留神,随时随地都会碰上广告,于是广告屏蔽这个需求,就应运而生了。古语云,道高一尺魔高一丈。今天这篇文章就介绍了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的能力”。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292170.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux c头文件#include<sys/types.h>和#include<fcntl.h>头文件总结

#include<sys/types.h>的介绍 是Unix/Linux系统的基本系统数据类型的头文件&#xff0c;含有size_t&#xff0c;time_t&#xff0c;pid_t等类型。linux编程中经常用到的头文件。 clock_t 表示系统时间&#xff08;以时钟周期为单位&#xff09;。   dev_t 用于设备号…

vba怎么安装_学VBA,这些最基础的概念一定要知道

说说VBA的那些事儿VBA是什么&#xff1f;很多使用Excel的人经常会看到这三个字母&#xff0c;那么VBA到底是什么呢&#xff1f;长得神似VB的它到底是干什么的&#xff1f;相信很多人都会有这样的问题&#xff0c;今天就和大家说说有关VBA的那些事儿。1 VBA到底是什么VBA的全称&…

你好骚啊......

1 世贤和品如的结婚照是用当年潘粤明和董洁的结婚照PS的......&#xff08;你好骚啊&#xff09;▼2 还挺有耐心的呢...▼3 这是打算铁定要赢了&#xff01;▼4 请打钱&#xff01;▼5 停车场停猫场&#xff1f;▼6 你的养母&#xff1a;粉红豹、跳跳鱼已上线▼7 这是什么…

演示:使用Sniffer统计与分析流量

演示&#xff1a;使用Sniffer统计与分析流量Sniffer是统计与分析网络数据流量的一个很好的选择。因为Sniffer的“混杂”模式会接收到同一个物理网络内的所有数据帧&#xff0c;无论是广播帧还是发送到一个具体地址的数据帧。如果需要Sniffer监听到所处物理网络不同的数据帧&…

CSS3之阴影

CSS3中新增属性-阴影&#xff0c;可以做出很多漂亮的效果。 文字阴影text-shadow text-shadow属性值的顺序&#xff1a; text-shadow: h-shadow v-shadow blur color; 参数分别表示水平阴影位置&#xff0c;垂直阴影位置&#xff0c;模糊半径&#xff0c;阴影颜色。 一个栗子&a…

推荐搞IT的你读读《软件随想录》

《软件随想录&#xff08;Joel on Software&#xff09;》&#xff0c;这是我多年前看的一本书&#xff0c;也是对我影响很大大的一本书。这不是一本讲软件技术的书&#xff0c;但跟技术强相关&#xff0c;推荐给朋友们读一下。这本书严格来讲&#xff0c;不是作者专门写的书&a…

linux c中的文件描述符与打开文件之间的关系

转载请说明出处&#xff1a;http://blog.csdn.net/cywosp/article/details/38965239 1. 概述在Linux系统中一切皆可以看成是文件&#xff0c;文件又可分为&#xff1a;普通文件、目录文件、链接文件和设备文件。文件描述符&#xff08;file descriptor&#xff09;是内核为了高…

spss练习数据_读硕博,为你推荐5本最实用的SPSS数据统计书

SPSS (Statistical Product and Service Solutions&#xff09;,是由IBM公司所推出的一系列用于统计学分析运算、数据挖掘、预测分析和决策支持任务的软件产品。SPSS的基本功能包括数据管理、统计分析、图表分析、输出管理等等&#xff0c;也有专门的绘图系统&#xff0c;可以根…

她半年内举报了755篇问题论文,专挑中国“下手”?还牵扯到北大副校长.........

全世界只有3.14 % 的人关注了爆炸吧知识是挑刺还是打假&#xff1f;2020年7月23日&#xff0c;海外一家学术打假网站PubPeer曝出北京大学常务副校长、北大医学部主任、中国工程院院士詹启敏25篇论文涉嫌学术造假。这25篇论文的发表时间在1998年至2019年&#xff0c;贯穿詹启敏从…

C#获取用户客户端系统版本设备名称浏览器

先看效果使用Neget引用包UAParser项目的github &#xff1a;https://github.com/ua-parser/uap-csharpusing UAParser;...string uaString "Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 …

ABP vNext微服务架构详细教程——简介

简介该系列文章主要展示ABP vNext框架在微服务架构下的用法&#xff0c;提供一套可落地的技术实现思路&#xff0c;并演示各服务在Kubernetes下的部署方案。基础概念ABP vNext基于ASP.NET Core的应用框架&#xff0c;是.Net主流应用开发框架之一。提供基于模块化的灵活项目模板…

电脑怎么测试硬盘的读写速度_两块硬盘合二为一,电脑读写翻倍?这样的“好事”你必须得了解...

近日&#xff0c;技嘉在旗下顶级的B550 AORUS MASTER主板上做了一次PCIe4.0固态阵列测试&#xff0c;由于该款主板支持3个PCIe4.0的M.2固态硬盘&#xff0c;所以这次的测试为3块PCIe4.0固态组建RAID0&#xff0c;来进行读写测试。常见的PCIe3.0x4的固态硬盘的读写速度一般在250…

C# 动态创建控件时注册Name属性

动态创建控件1. 容器控件 .RegisterName("Name",要注册的控件) //注册控件2. 容器控件 .FindName("Name") as 控件类型 //找到控件并转换成相应类型注意仅通过控件.Name来设置是不能通过FindName来找到控件的&#xff0c;必须注册动态删除控件1. 容器控件…

java配置运行环境和配置

2019独角兽企业重金招聘Python工程师标准>>> 1&#xff1a;准备好下载的java。开始安装 2&#xff1a;第一次蹦出安装路径设置为&#xff08;D:\java\jdk&#xff09;。不要设置下图样式设置路径! 3:jdk安装完成后会再弹出如下窗口&#xff0c;让你选择独立的jre的安…

SQL Server 的锁定和阻塞

本帖提供两种做法&#xff0c;可避免在 SQL Server 事务锁定时产生的不正常或长时间阻塞&#xff0c;让用户和程序也无限期等待&#xff0c;甚至引起 connection pooling 连接数超过容量。 所谓的「阻塞」&#xff0c;是指当一个数据库会话中的事务&#xff0c;正在锁定其他会话…

结构体数组排列_学习RTOS(3)数据结构

在 FreeRTOS 中存在着大量的基础数据结构列表和列表项的操作&#xff0c;列表和列表项是直接从 FreeRTOS 源码注释中的 list 和 list item 翻译过来的&#xff0c;其实就是对应我们 C 语言当中的链表和节点&#xff0c;在后续的讲解&#xff0c;我们说的链表就是列表&#xff0…

python实现元旦多种炫酷高级倒计时_附源码【第20篇—python过元旦】

文章目录 &#x1f30d;python实现元旦倒计时 — 初级(控制台)⛅实现效果&#x1f30b;实现源码&#x1f31c;源码讲解 &#x1f30d;python实现元旦倒计时 — 中级(精美动态图)⛅实现效果&#x1f30b;实现源码&#x1f31c;源码讲解 &#x1f30d;python实现元旦倒计时 — 高…