如何移除Disqus恶意成人视频广告?旧拦截代码已失效
Disqus成人广告拦截解决方案(适配最新广告系统)
核心解决方案:精准DOM监听+广告元素定位
Disqus更新广告投放逻辑后,旧方案依赖的iframe标识、加载顺序已失效,以下是针对性的拦截代码:
1. JS动态拦截方案(避免误删评论区)
使用MutationObserver实时监听评论区DOM变化,精准识别广告元素并移除:
// 监听Disqus评论区的动态DOM变化 const disqusObserver = new MutationObserver((mutations) => { mutations.forEach(() => { // 移除带广告域名的iframe document.querySelectorAll('iframe').forEach(iframe => { const src = iframe.src; // 匹配当前Disqus广告常用域名,可根据实际情况补充 if (src && /(ads\.disqus\.com|disqusads\.com|ad\.doubleclick\.net)/i.test(src)) { iframe.parentElement.remove(); // 移除广告容器,避免残留空白 } }); // 移除广告专属容器元素 document.querySelectorAll('.disqads-container, .adsbydisqus').forEach(el => el.remove()); }); }); // 启动监听:目标为Disqus评论区根容器 const disqusRoot = document.getElementById('disqus_thread'); if (disqusRoot) { disqusObserver.observe(disqusRoot, { childList: true, subtree: true }); }
优势:相比定时扫描的setInterval,MutationObserver能实时响应广告加载,且通过域名/类名精准定位,不会误删主评论区。
2. CSS辅助隐藏(解决广告短暂闪现问题)
配合JS使用CSS提前隐藏广告元素,避免页面加载时广告短暂显示:
/* 全局隐藏Disqus广告相关元素 */ .disqads-container, .adsbydisqus, iframe[src*="ads.disqus.com"], iframe[src*="disqusads.com"] { display: none !important; visibility: hidden !important; height: 0 !important; width: 0 !important; }
旧方案失效原因说明
- 旧代码依赖的
ads-iframe/disqusads关键词已从广告iframe的src中移除,Disqus更换了广告投放域名 - 按索引(
i===0 || i===2)删除iframe的逻辑极不稳定,Disqus的iframe加载顺序会随页面环境变化,导致误删主评论区
内容的提问来源于stack exchange,提问作者Laurentje
相关产品推荐
相关产品推荐

