wordpress 外部调用,seo培训师,平湖网站建设,门户网站代码2019独角兽企业重金招聘Python工程师标准 现在网络上的广告真的是无所不用其极#xff0c;在网上冲浪#xff0c;稍不留神#xff0c;随时随地都会碰上广告#xff0c;于是广告屏蔽这个需求#xff0c;就应运而生了。古语云#xff0c;道高一尺魔高一丈。今… 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.comMindGeek的公司的员工开始反对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_13JavaScript应放置广告。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