您需要先安装一个扩展,例如 篡改猴、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');
- })();