Greasy Fork

HTTPS图片强制加载器

自动将网页中的HTTP图片资源替换为HTTPS协议

// ==UserScript==
// @name         HTTPS图片强制加载器
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  自动将网页中的HTTP图片资源替换为HTTPS协议
// @author       YourName
// @match        *://*/*
// @exclude      http://localhost:*/*
// @license      MIT
// @run-at       document-end
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 协议升级函数
    function upgradeToHttps(element) {
        try {
            // 处理src属性
            if (element.src && element.src.startsWith('http://')) {
                element.src = element.src.replace('http://', 'https://');
            }

            // 处理srcset属性(支持多密度图片)
            if (element.srcset) {
                element.srcset = element.srcset.replace(/http:\/\//g, 'https://');
            }
        } catch (e) {
            console.warn('HTTPS升级出错:', e);
        }
    }

    // 初始处理所有图片
    function processImages() {
        const images = document.getElementsByTagName('img');
        for (let img of images) {
            upgradeToHttps(img);
        }
    }

    // 使用MutationObserver监听动态加载的内容
    const observer = new MutationObserver(mutations => {
        mutations.forEach(mutation => {
            mutation.addedNodes.forEach(node => {
                if (node.nodeName === 'IMG') {
                    upgradeToHttps(node);
                } else if (node.querySelectorAll) {
                    node.querySelectorAll('img').forEach(upgradeToHttps);
                }
            });
        });
    });

    // 配置观察器
    observer.observe(document.body, {
        childList: true,
        subtree: true
    });

    // 初始执行
    window.addEventListener('DOMContentLoaded', processImages);
    processImages(); // 兼容已加载完成的情况
})();