js实现广告拦截
广告拦截的实现方法
在JavaScript中实现广告拦截可以通过多种方式,以下是一些常见的方法:
基于DOM元素拦截 通过识别广告元素的特定类名、ID或属性,从DOM中移除这些元素。例如:

document.querySelectorAll('.ad-class, [id^="ad-"], iframe[src*="ads"]').forEach(el => el.remove());
拦截网络请求 使用Service Worker或浏览器扩展API拦截广告相关的网络请求:
// Service Worker示例
self.addEventListener('fetch', event => {
if (event.request.url.includes('adserver.com')) {
event.respondWith(new Response(null, {status: 204}));
}
});
内容安全策略(CSP) 通过设置CSP头阻止外部广告资源的加载:

// 通过meta标签设置
const meta = document.createElement('meta');
meta.httpEquiv = "Content-Security-Policy";
meta.content = "script-src 'self'; frame-src 'none'";
document.head.appendChild(meta);
浏览器扩展方法 在Chrome扩展中使用webRequest API:
// manifest.json需声明权限
chrome.webRequest.onBeforeRequest.addListener(
details => ({cancel: details.url.includes('ads')}),
{urls: ["<all_urls>"]},
["blocking"]
);
MutationObserver监控动态加载 针对动态加载的广告使用MutationObserver:
const observer = new MutationObserver(mutations => {
mutations.forEach(mutation => {
mutation.addedNodes.forEach(node => {
if (node.nodeType === 1 && node.classList.contains('ad')) {
node.remove();
}
});
});
});
observer.observe(document.body, {childList: true, subtree: true});
注意事项
- 纯前端拦截可能被绕过,建议结合后端过滤
- 过度拦截可能影响网站功能
- 商业网站使用需注意法律合规性
- 移动端需要考虑混合内容策略
更完整的解决方案通常需要结合多种技术,并针对具体广告网络进行定制化规则。专业广告拦截工具如uBlock Origin等采用规则列表+多种拦截技术的组合方案。






