// ==UserScript== // @name 微信文章自动加载图片 (防盗链穿透版) // @namespace http://tampermonkey.net/ // @version 1.0 // @description 解决微信防盗链和URL参数问题 // @author You // @match *://mp.weixin.qq.com/* // @grant none // @run-at document-start // ==/UserScript== (function () { 'use strict'; // 1. 强制设置 Referrer Policy,骗过微信防盗链 // 这能让图片在被外部工具抓取时也认为是“自己人” const meta = document.createElement('meta'); meta.name = 'referrer'; meta.content = 'no-referrer-when-downgrade'; // 或者 'unsafe-url' document.head.appendChild(meta); function replaceSrc() { document.querySelectorAll('img[data-src]').forEach(img => { // 2. 提取真实链接 let trueSrc = img.dataset.src; // 3. 【强力清洗】去除所有可能干扰的参数和锚点 // 去除 # 后面的 trueSrc = trueSrc.split('#')[0]; // 去除 &tp=webp 这种可能导致格式错误的参数 if (trueSrc.includes('&tp=')) { trueSrc = trueSrc.split('&tp=')[0]; } // 去除 &wxfrom= 等参数 if (trueSrc.includes('&wxfrom=')) { trueSrc = trueSrc.split('&wxfrom=')[0]; } // 4. 只有链接发生变化时才替换 if (img.src !== trueSrc) { img.src = trueSrc; // 修改 referrerPolicy 属性,告诉浏览器不要隐藏来源 img.referrerPolicy = 'no-referrer-when-downgrade'; // 移除可能导致冲突的 data-src img.removeAttribute('data-src'); } }); } // 立即运行 if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', replaceSrc); } else { replaceSrc(); } // 监听动态加载 const observer = new MutationObserver(replaceSrc); observer.observe(document.body, { childList: true, subtree: true }); })();