防运营商劫持代码

article/2025/11/11 13:32:27

 

一、什么是运营商劫

什么是运营商:

运营商是指那些提供宽带服务的ISP,包括三大运营商中国电信、中国移动、中国联通,还有一些小运营商,比如长城宽带、歌华有线宽带。运营商提供最最基础的网络服务,掌握着通往用户物理大门的钥匙,目前运营商劫持很普遍。

举个劫持的栗子:

 

 

劫持方式:

运营商比较常见的作恶方式有三种,分别是DNS劫持、HTTP劫持、HTTPS劫持:

DNS劫持:这种劫持会把你重新定位到其它网站,我们所熟悉的钓鱼网站就是这个原理。但是因为它的违法性,现在被严厉的监管起来,已经很少见。

HTTP劫持:虽然DNS劫持已经被监管了起来,但是还有HTTP劫持啊!你DNS解析的域名的IP地址不变,当运营商发现你的是HTTP请求时,就会在里面插入一些奇奇怪怪的广告(比如一些banner、浮标、更有甚把你你的商品位给劫持了 WTF...)并且这种现象十分常见,不信你可以试着随便打开一个网页,仔细看看你就会发现一些小尾巴,这就是被HTTP劫持了。

HTTPS劫持:安全的超文本传输协议,数据加密这也能劫持?答案是肯定的!该劫持方式有两种:

  1. 伪造证书,通过病毒或者其他方式将伪造证书的根证书安装在用户系统中(较少)
  2. 代理也有客户的证书与私钥,或者客户端与代理认证的时候不校验合法性,即可通过代理来与我们服务端进行数据交互(较多)

备注:使用本篇的代码一定会让你查到HTTPS劫持的(前提是使用了https)

二、防运营商劫持

准确的来说是防script、iframe注入型劫持,95%以上是这种劫持方式,因为DNS劫持被严管了。

 

运营商是如何劫持的,网上有很多资料,这里不多逼逼

下面是防劫持代码:

<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><title>防劫持代码测试</title><script>console.log('发生劫持,初始化就直接置顶的流氓行为,暂无法防御,但可以通过埋点记录LOG,向工信部投诉!!');</script><!-- 防劫持 --><script shendun-eddy>/*** @note 防劫持代码* @key MutationObserver 提供了监视对DOM树所做更改的能力 */(function() {var srcFilterTags = ['script', 'iframe'];// 域名白名单 可以加多个var whiteList = ['zeptojs.com'];var whiteListReg = [];// 正则匹配
      whiteList.forEach(function(wl) {var wlReg = new RegExp('/.+?\/\/' + wl + '|\/\/' + wl + '|.+?\.' + wl + '|^' + wl);whiteListReg.push(wlReg);});// 白名单助手var inWhileList = function(addedNode) {// shendun-eddy 是script的白名单标签if (addedNode.src === '' && addedNode.getAttribute('shendun-eddy') !== null) {return true;}var isInWhiteList = false;whiteListReg.forEach(function(wlReg) {if (wlReg.test(addedNode.src)) {isInWhiteList = true;return false;}});return isInWhiteList;};// dom观察器var mutationHandler = function(records) {records.forEach(function(record) {Array.prototype.slice.call(record.addedNodes).forEach(function(addedNode) {srcFilterTags.forEach(function(tagName) {// 标签匹配 白名单匹配if (addedNode.tagName === tagName.toUpperCase() && !inWhileList(addedNode)) {addedNode.remove();};});});})};// 核心 - MutationObserver 提供了监视对DOM树所做更改的能力// 优点 - 动态监听是否有非法的 iframe 和 script 代码// 缺点 - 无法查找头部直接插入的代码var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver,observeMutationSupport = !!MutationObserver;var html = document.getElementsByTagName('html')[0];if (observeMutationSupport) {new MutationObserver(mutationHandler).observe(html, {'childList': true,'subtree': true});}// 唯独直接加载的不能remove掉,异步加载的都能remove掉!!// ***  记录头部的script,通知工信部 ***var eleList = document.querySelectorAll('script');var len = eleList.length;for (var i = 0; i < len; i++) {// 遍历操作if (!inWhileList(eleList[i])) {// do sth 这里的删除虽然已经晚了,因为头部同步JS已被执行,删除操作意义不大,但可以统计被劫持的代码是什么,记录好LOG 通知工信部// sendLog
          eleList[i].remove();}}})();</script><script>console.log("劫持1");</script>
</head>
<body><div>防劫持代码测试</div><div class="father"><div class="bro"><div class="xiongdei"><script src="https://mt.cnzz.com/js/hdpi_canvas.js"></script></div></div></div><script src="http://zeptojs.com/zepto.min.js"></script><!-- 这里执行了 console.log('哎哟,我来劫持你了...'); 虽然访问了这个script, 但被remove了不会执行--><script src="http://yun.dui88.com/qiho-h5/jqg/shendun_test.js"></script><script>console.log("劫持....");</script>
</body>
</html>
 

加入运营商劫持代码后,不在白名单和安全标签(shendun-eddy)内的script或者iframe都会被remove掉。

提示:network内能看到加载了其他非白名单内的script代码,但它们都没有执行

以 yun.dui88.com/qiho-h5/jqg… 为例,代码如下:

;(function(){console.log('哎哟,我来劫持你了...');
})()
复制代码

核心功能

MutationObserver()创建并返回一个新的 MutationObserver 它会在指定的DOM发生变化时被调用。

具体参数和用法传送门:developer.mozilla.org/zh-CN/docs/…

兼容性

 

所有浏览器的兼容性是92.79%,手机端的兼容性更高,代码中加了保护所以放心使用吧!

 

三、总结

目前运营商劫持率大约是3% ~ 25%,它们无处不在。

为了还用户一个干净安全的浏览环境,我们需要做好预防措施

  1. 全站https,能防一部分
  2. 加入防运营商劫持代码,能防大部分注入型劫持
  3. 记录Log,记录证据,向工信部投诉
很实用,拿过来以便备用,转载自掘金https://juejin.im/post/5bea7eb4f265da612859a9e4

转载于:https://www.cnblogs.com/wuyuchao/p/9983697.html


http://chatgpt.dhexx.cn/article/P9iEWQZD.shtml

相关文章

运营商劫持是什么意思,如何解决运营商劫持的问题?

网站被劫持跳转到网站无碍乎有四种原因导致的,其中一种就是运营商劫持。运营商不是为我们提供网络服务的吗,为什么会劫持?运营商劫持是怎么回事?如何才能解决运营商劫持的问题?运营商是指那些提供宽带服务的ISP,包括三大运营商中国电信、中国移动、中国联通,还有一些小运…

运营商劫持狠起来,连json都改

原创&#xff1a;小姐姐味道&#xff08;微信公众号ID&#xff1a;xjjdog&#xff09;&#xff0c;欢迎分享&#xff0c;转载请保留出处。感谢neko的供稿 运营商劫持&#xff0c;是常见的流氓手段&#xff0c;它们老少通吃&#xff0c;连孩子都不放过&#xff0c;经常嚣张的在右…

电信等运营商劫持的解决方法

老是弹出广告,其实这个是由于当地电信或者网通等运营商劫持DNS,然后进行投放他们的广告。 弹出广告一般的现象是先弹出一个114或者vnet.cn的网站,类似114.vnet.cn等等,然后进行跳转到广告页面,可以在打开页面的时候仔细观察一下浏览器的左下角部分。 IIS7网站监控可以及时…

劫持网络--运营商投放广告

居住在大深圳的关外几年&#xff0c;换了几家宽带运营商&#xff0c;对于运营商的DNS拦截投放广告已经无力吐槽了&#xff0c;在度娘上搜索任意东西他们时刻会提醒我&#xff0c;尤其是是惯了下淘宝或京东。作为一个小小的程序员&#xff0c;实在忍不住想看下究竟&#xff0c;也…

运营商进行网络劫持的前生今世+劫持的危害

原文地址&#xff1a;https://www.v2ex.com/amp/t/255600 运营商进行网络劫持的前生今世劫持的危害 2016-02-06 00:00:52 08:00 raysonx 西元 2016 年 2 月 5 日晚 &#xff08;注&#xff1a;本人只是一名技术人员&#xff0c;凭专业知识和经验写成本文&#xff0c;并非运营…

什么是网络流量劫持?

流量劫持 什么是流量劫持呢&#xff1f;网络劫持的具体表现&#xff1a;流量劫持常见的有两种&#xff1a;1、DNS劫持2、数据劫持&#xff08;或者可以说是HTTP劫持&#xff09; 网络劫持都有哪些类型&#xff1f;1.流量劫持2.权重劫持3.广告劫持4.后退劫持5.其他劫持(浏览器、…

你可能已经被运营商http劫持了

IIS7.COM网站劫持检测 1、检测网站是否被劫持2、域名是否被墙3、DNS污染检测4、网站打开速度检测5、网站是否被黑、被入侵、被改标题、被挂黑链 【深度检测】1、可以检测多层js劫持、图片劫持、FLASH劫持、地区电信劫持、DNS劫持、域名被墙、DNS污染2、可以获取严重占用加载时间…

运营商劫持(DNS/HTTP302)

本人以网络技术出身&#xff0c;近两年接触CDN网络&#xff0c;处理了一些CDN方面的网络问题&#xff0c;大多数以运营商丢包&#xff0c;延迟抖动为主&#xff0c;也处理一些硬件故障&#xff0c;比如机械硬盘的读写io测试&#xff0c;内存条兼容性测试&#xff0c;服务器IPMI…

运营商劫持是什么、运营商DNS网络劫持如何解决

在网络安全中DDoS攻击和运营商劫持攻击出现的频率非常高,此外,还有之前的暴力破解和针对Web层的攻击,所以系统安全是一项非常重要的环节和技术手段。 运营商劫持分为DNS劫持与HTTP劫持两种。简单介绍一下DNS劫持与HTTP劫持的概念,即运营商通过某些方式篡改了用户正常访问的…

第32篇:某运营商链路劫持(被挂博彩页)溯源异常路由节点(上篇)

Part1 前言 在世界杯举办期间&#xff0c;链路劫持的攻击风险估计会升高很多。链路劫持攻击是各类应急响应事件中危害比较大的&#xff0c;溯源起来有一定的难度&#xff0c;很多新手会感觉无从下手。本次ABC_123就分享一个自己曾经做过的真实的链路劫持分析案例。 Part2 前置…

《运营商劫持, 中间人攻击, 黑客入侵怎么办?》- HTTPS 技术反制

目录 1.HTTPS 是什么 1.1 运营商劫持 1.2 加密是什么 2. HTTPS 的工作过程 2.1 对称加密 2.2 非对称加密 2.3 引入证书 1.HTTPS 是什么 HTTPS 也是一个应用层协议 . 是在 HTTP 协议的基础上引入了一个加密层 . HTTP 协议内容都是按照文本的方式明文传输的 . 这就导…

Hive字符串转日期细节

日期函数&#xff1a;to_date();date_format();from_unixtime(unix_timestamp()) 测试数据&#xff1a;t1 t2 2020/4/1 13:01 2020-04-01 目的&#xff1a;将t1转成 2020-04-01 t2 -> 2020/04/01 方法(针对t1进行处理) from_unixtime(unix_timestamp(substr(t1,1,length(reg…

mysql 字符串转日期及其他日期转换

mysql 字符串转日期及其他日期转换 -- 字符串转日期 select str_to_date(2019/1/1, %Y/%m/%d) -- 2019-01-01SELECT STR_TO_DATE(concat(Cyear,/,Cmonth,/,Cday),%Y/%m/%d) SELECT date_format(DATE_ADD(DATE_FORMAT(CONCAT(2020-03,-01),%Y-%m-%d),INTERVAL -1 month ),%Y-%m…

SimpleDateFormat 字符串转日期

使用SimpleDateFormat类&#xff0c;可以将Date对象或具有日期格式的字符串进行互相转换使用SimpleDateFormat可以设置期日格式 默认的日期格式为 下面为构造函数中字符串字母所代表的内容 转换方法 此处构造函数使用的无参&#xff0c;方法中的参数格式需要于构造函数中设置的…

vue字符串转日期

vue中的数据判断对数据类型要求很高。 下面的代码是想根据 beginTime 和 endTime 来决定记录的状态&#xff0c;但是不起作用。 效果&#xff1a; 原因是 beginTime 和 endTime 的类型是字符串而非日期类型&#xff0c;所以无法与 new Date()进行比较。解决方法如下代码&#x…

JAVA字符串转日期及日期转字符串

一、字符串转日期 Testpublic void test10(){String date"2022-09-30";SimpleDateFormat simpleDateFormatnew SimpleDateFormat("yyyy-MM-dd");Date parse null;try {parse simpleDateFormat.parse(date);System.out.println("parse " pars…

云服务器可以存放文件吗,存放文件的云服务器

存放文件的云服务器 内容精选 换一换 本节操作介绍华为云上云服务器的跨账号跨区域迁移&#xff0c;建议采用镜像迁移方式。服务器迁移的常见场景与常用的迁移方式请参考迁移的背景知识。跨账号跨区域迁移的方法请参考方案介绍常见的服务器迁移场景包括物理服务器与云服务器之间…

文件服务器存储,文件服务器存储

文件服务器存储 内容精选 换一换 当您调用API时&#xff0c;如果遇到“APIGW”开头的错误码&#xff0c;请参见API网关错误码进行处理。 HPC是高性能计算(High Performance Computing)的简称。通常指以计算为目的&#xff0c;使用了很多处理器的单个计算机系统或者使用了多台计…

文件存储技术-OSS云存储服务

控制台 后台代码 获取访问阿里云API的密钥创建 service_oss 模块引入阿里云oss相关依赖 <dependencies><!-- 阿里云oss依赖 --><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId></depen…

NFS文件共享存储服务器简介

NFS&#xff08;Network File System&#xff09;即网络文件系统&#xff0c;它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中&#xff0c;本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件&#xff0c;就像访问本地文件一样。 在企业集群架构的工…