You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ISP注入广告致JavaScript运行异常,求可靠前端移除方案

解决ISP注入广告及应用崩溃问题的前端方案

这种ISP恶意注入广告还搞崩应用的情况真的很头疼,我给你几个经过实践验证的前端解决方案,帮你搞定这个问题:

一、移除注入的广告元素

ISP注入的广告通常会有固定的特征(比如特定类名、样式、图片来源),可以通过CSS或JavaScript精准定位并清除:

1. 用CSS全局隐藏(快速生效)

如果能找到广告元素的特征,比如特定类名、图片域名,直接用强制隐藏的样式:

/* 假设广告气泡有专属类名,比如isp-ad-bubble */
.isp-ad-bubble {
  display: none !important;
  visibility: hidden !important;
}

/* 针对广告图片,通过来源域名特征匹配 */
img[src*="ad-isp-domain.com"] { /* 替换为实际广告图的域名关键词 */
  display: none !important;
}

2. 用JavaScript动态删除(应对异步注入的广告)

很多广告是页面加载后异步注入的,用MutationObserver监听DOM变化,实时删除新出现的广告:

// 监听整个文档的DOM变化
const target = document.documentElement;
const observer = new MutationObserver((mutations) => {
  mutations.forEach((mutation) => {
    if (mutation.type === 'childList') {
      // 根据广告的特征选择元素,比如固定位置的气泡、含广告字样的元素
      const ads = document.querySelectorAll(
        '[style*="fixed; bottom: 20px"], .isp-ad-container, div:contains("广告")'
      );
      ads.forEach(ad => ad.remove());
    }
  });
});

// 启动监听
observer.observe(target, { childList: true, subtree: true });

二、修复jQuery提前调用导致的崩溃

ISP的代码在jQuery加载前就调用了$或jQuery,导致报错崩溃,可以提前定义临时占位函数避免报错:

// 提前定义空的$和jQuery函数,拦截ISP的调用
window.$ = window.jQuery = function(selector) {
  // 返回一个空对象,支持链式调用(比如.click()、.on())
  return {
    on: () => {},
    click: () => {},
    append: () => {},
    // 按需补充ISP代码用到的jQuery方法
  };
};

// 等真实jQuery加载完成后,会自动覆盖这个临时函数
document.addEventListener('DOMContentLoaded', () => {
  console.log('真实jQuery已加载,临时函数已被覆盖');
});

三、长期加固方案

这些方法能从根源减少ISP注入的可能性:

  • 启用HTTPS:HTTPS加密流量会大幅提高ISP注入广告的难度,多数ISP不会对HTTPS流量进行劫持注入;
  • 使用Subresource Integrity (SRI):给外部资源(比如jQuery)添加哈希验证,防止ISP篡改资源内容:
    <script src="https://code.jquery.com/jquery-3.6.4.min.js"
            integrity="sha256-oP6HI9z1XaZNBrJURtCoUT5SUnxFr8s3BzRl+cbzUq8="
            crossorigin="anonymous"></script>
    
  • 配置内容安全策略(CSP):通过CSP限制只允许加载信任来源的资源,阻止未知脚本/样式注入:
    <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' https://code.jquery.com; style-src 'self' 'unsafe-inline';">
    

内容的提问来源于stack exchange,提问作者chouyangv3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:04:47