首页  编辑  

油猴脚本在网页脚本之前修改Script代码,例如去掉网页上某些反反广告的代码

Tags: /计算机文档/软件应用技巧/   Date Created:
这里演示了一个油猴插件脚本,用于在网页读取但是加载之前,修改网页内容。当然也演示了在文档加载之后如何修改页面节点。
示例内容是关闭反Adblock的提示
// ==UserScript==
// @name         Anti-Anti AD
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       Kingron
// @run-at       document-start
// @match        *://*/*
// @grant        none
// ==/UserScript==
(function() {
    'use strict';
    // 创建 MutationObserver 监听器, 检查每个 DOM 变化
    var observer = new MutationObserver(function(mutationsList) {
        for (var mutation of mutationsList) {
            if (mutation.type === 'childList') {
                for (var addedNode of mutation.addedNodes) {
                    // 检查是否是 <script> 元素
                    if (addedNode.tagName === 'SCRIPT') {
                        if (addedNode.src.indexOf('adsninja_client.js') > 0
                            || addedNode.src.indexOf('advertisement.js') > 0
                            || addedNode.src.indexOf('adblock-checker.js') > 0
                        ) {
                            addedNode.src = "";
                        } else if (addedNode.textContent.indexOf('typeof(aad)==') >= 0) {
                           addedNode.textContent = '';
                        } else {
                            addedNode.textContent = addedNode.textContent.replace("r9aeadS();", "");
                            addedNode.textContent = addedNode.textContent.replace("setTimeout(checker, 1000);", ""); // www.ruanyifeng.com
                            addedNode.textContent = addedNode.textContent.replace("document.getElementById('google_esf')", "document.body");
                        }
                    }
                }
            }
        }
    });
    // 监听整个文档树的变化
    observer.observe(document, { childList: true, subtree: true });
    document.addEventListener("DOMContentLoaded", function () {
        const node = document.createElement('div');
        node.id = 'google_esf';
        node.style.display = 'none';
        document.body.appendChild(node);
    });
})();