您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
使断锚网页版支持 HTTPS
当前为
// ==UserScript== // @name Duanmao HTTPS // @namespace CCCC_David // @version 0.2.1 // @description 使断锚网页版支持 HTTPS // @author CCCC_David // @match https://duanmao.top/* // @run-at document-start // @grant none // @require https://unpkg.com/ajax-hook/dist/ajaxhook.min.js // ==/UserScript== (() => { 'use strict'; const fixURL = (url) => url === undefined ? undefined : url.replace(/^https?:\/\/cdn1\.duanmao\.top\//i, 'https://duanmao.top/') .replace(/^http:\/\//i, 'https://'); ah.proxy({ onRequest: (config, handler) => { config.url = fixURL(config.url); handler.next(config); }, onError: (err, handler) => { handler.next(err); }, onResponse: (response, handler) => { handler.next(response); }, }); const isForumPage = window.location.pathname === '/forum'; const addMetaTags = () => { if (isForumPage) { return; } const metaReferrer = document.createElement('meta'); metaReferrer.name = 'referrer'; metaReferrer.content = 'same-origin'; document.head.appendChild(metaReferrer); const metaCSP = document.createElement('meta'); metaCSP.httpEquiv = 'Content-Security-Policy'; metaCSP.content = "base-uri 'self'; script-src 'self'; object-src 'none'; upgrade-insecure-requests"; document.head.appendChild(metaCSP); }; const updateElementURL = (el) => { const tagName = el.nodeName.toLowerCase(); // There are many HTML tag attributes which can include URLs // (see https://stackoverflow.com/questions/2725156/complete-list-of-html-tag-attributes-which-have-a-url-value), // but here we just deal with the most common two cases: // - <a href="..."></a> // - <img src="..." /> if (tagName === 'a') { el.href = fixURL(el.href); } else if (tagName === 'img') { el.src = fixURL(el.src); } }; const observer = new MutationObserver((mutationsList) => { for (const mutation of mutationsList) { if (mutation.type === 'childList') { for (const el of mutation.addedNodes) { if (el.nodeName.toLowerCase() === 'head') { addMetaTags(); } updateElementURL(el); } } } }); observer.observe(document.documentElement, { subtree: true, childList: true, }); if (document.head) { addMetaTags(); } for (const tagName of ['a', 'img']) { for (const el of document.getElementsByTagName(tagName)) { updateElementURL(el); } } const insertScriptInline = (script) => { const el = document.createElement('script'); el.appendChild(document.createTextNode(script)); document.body.appendChild(el); }; const insertScriptSrc = (src) => { const el = document.createElement('script'); el.src = src; document.body.appendChild(el); }; if (isForumPage) { document.documentElement.innerHTML = ` <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="referrer" content="same-origin"> <meta http-equiv="Content-Security-Policy" content="base-uri 'self'; script-src 'self' 'sha256-tjTO3rQxUkgLj//lUhUlsDm7/uSQn+aGhV+Lb2IwohA='; object-src 'none'; upgrade-insecure-requests"> <title>断锚</title> <link rel="stylesheet" href="/static/index.d0f128df.css"> </head> <body><noscript><strong>Please enable JavaScript to continue.</strong></noscript> <div id="app"></div> </body> </html> `; insertScriptInline(` (() => { window.coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)')); const metaViewport = document.createElement('meta'); metaViewport.name = 'viewport'; metaViewport.content = 'width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (window.coverSupport ? ', viewport-fit=cover' : ''); document.head.appendChild(metaViewport); })(); `); insertScriptSrc('/static/js/chunk-vendors.6e103c75.js'); insertScriptSrc('/static/js/index.37f94612.js'); } console.log('Duanmao HTTPS script is loaded'); })();