用js屏蔽被http劫持的浮动广告实现方法

发布时间 - 2026-01-11 02:43:14    点击率:

最近发现网站经常在右下角弹出一个浮动广告,开始的时候以为只是浏览器的广告。

后来越来越多同事反映在家里不同浏览器也会出现广告。然后深入检查了下,发现网站竟然被劫持了。

然后百度了一大堆资料,什么http劫持、dns劫持、运营商劫持之类的,确定真的是中招了。看图:

真是偷梁换柱啊,被插入广告代码了。真是无良奸商,什么都做得出。

然并卵,最重要的解决办法是啥?然后把问题扔给了运维的同事。

最终结果是解决不了。没错,就是这么的坑爹。除非采用https。网上那些什么打电话、发信投诉之类的貌似没啥用。可能是运维太烂了。反正结果就是没结果。

然后,没办法啦。只能我们大前端自己想办法屏蔽啦。然后开启了研究劫持代码之旅,

......过程省略了800字寻找过程。

最终发现了,被劫持的广告会定义一个js全局变量_pushshowjs_ ,里面保存了一些劫持广告的相关信息,然后创建一个id为_embed_v3_dc的div放广告。并且每次都是一样的,不会有变化。

根据劫持广告的投放原理,最终使用了js屏蔽被劫持广告的方法。

具体代码如下:

;(function($,window,undefined){
 var needClear=false,
  timeout;
 if(window._pushshowjs_){
  console.log("adHttp");
  needClear=true;
 }
 window._pushshowjs_={};
 Object.freeze(window._pushshowjs_);//让对象只读, 防止属性被直接修改
 Object.defineProperty(window, '_pushshowjs_', {
  configurable: false,//防止属性被重新定义
  writable: false//防止属性被重新赋值
 });
 if(needClear){
  timeout=setInterval(function(){
   if($("#_embed_v3_dc").length>0){
    $("#_embed_v3_dc").remove();
    console.log("http清除");
    needClear=false;
    clearInterval(timeout);
   }
  },500);
  $(window).load(function(){
   if(needClear){
    setTimeout(function(){
     clearInterval(timeout);
     console.log("清除");
    },2000);
   }
  });
 }
}(jQuery,window));

代码不多,就不详细解析了(如果觉得代码有问题,望指正)。简单点说就是把劫持广告必须的全局js变量_pushshowjs_设定为不可被修改,只读。如果发现广告就清除。

放了代码,终于跟被劫持的广告说88了。

为什么说是笨办法?

因为这只是自欺欺人。其实劫持还是存在,并且被劫持了的js的加载顺序有可能会发生变化而导致错误,理想的办法还是要靠运维跟运营商去解决或使用https。

每个劫持的广告逻辑应该都差不多,但广告代码都会不同。所以我这个不一定会适用于其他的劫持广告。这只是一个思路,没办法之中的办法。

有大神有更好的解决办法,望指教。

以上这篇用js屏蔽被http劫持的浮动广告实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# js屏蔽被http劫持的广告  # JSP使用过滤器防止Xss漏洞  # JS写XSS cookie stealer来窃取密码的步骤详解  # JSP Struts过滤xss攻击的解决办法  # JSP过滤器防止Xss漏洞的实现方法(分享)  # JSP安全开发之XSS漏洞详解  # 防止xss和sql注入:JS特殊字符过滤正则  # 详解前端安全之JavaScript防http劫持与XSS  # 被劫  # 没办法  # 给大家  # 这只  # 解决办法  # 的是  # 是一个  # 也会  # 偷梁换柱  # 就不  # 最重要  # 不多  # 其他的  # 适用于  # 给了  # 之旅  # 希望能  # 大神  # 弹出  # 相关信息 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Linux系统运维自动化项目教程_Ansible批量管理实战  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  nodejs redis 发布订阅机制封装实现方法及实例代码  如何用腾讯建站主机快速创建免费网站?  JS去除重复并统计数量的实现方法  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  再谈Python中的字符串与字符编码(推荐)  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  如何撰写建站申请书?关键要点有哪些?  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  如何快速使用云服务器搭建个人网站?  Laravel如何使用Gate和Policy进行授权?(权限控制)  微信小程序 配置文件详细介绍  Windows Hello人脸识别突然无法使用  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  UC浏览器如何设置启动页 UC浏览器启动页设置方法  Python制作简易注册登录系统  黑客如何通过漏洞一步步攻陷网站服务器?  如何快速生成高效建站系统源代码?  Laravel如何使用withoutEvents方法临时禁用模型事件  高端建站三要素:定制模板、企业官网与响应式设计优化  如何用wdcp快速搭建高效网站?  如何在IIS管理器中快速创建并配置网站?  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  如何用免费手机建站系统零基础打造专业网站?  如何在阿里云完成域名注册与建站?  Swift中循环语句中的转移语句 break 和 continue  历史网站制作软件,华为如何找回被删除的网站?  如何在万网ECS上快速搭建专属网站?  如何用美橙互联一键搭建多站合一网站?  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  大连网站制作公司哪家好一点,大连买房网站哪个好?  在线教育网站制作平台,山西立德教育官网?  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  图册素材网站设计制作软件,图册的导出方式有几种?  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  如何在建站宝盒中设置产品搜索功能?  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  网站制作报价单模板图片,小松挖机官方网站报价?  如何自定义建站之星网站的导航菜单样式?  如何在局域网内绑定自建网站域名?  昵图网官方站入口 昵图网素材图库官网入口  详解Android图表 MPAndroidChart折线图  Linux系统命令中screen命令详解