Greasy Fork is available in English.

AutoJump

为了应对QQ,知乎,简书...等网站不自动跳转第三方URL的问题

Fra 04.03.2022. Se den seneste versjonen.

// ==UserScript==
// @name         AutoJump
// @name:zh-CN   自动跳转第三方URL
// @namespace    https://greasyfork.org/zh-CN/scripts/440863-autojump
// @version      1.5
// @description  为了应对QQ,知乎,简书...等网站不自动跳转第三方URL的问题
// @author       Antecer
// @include      *
// @icon64       https://antecer.gitlab.io/amusingdevice/icon/antecer.ico
// @icon         https://antecer.gitlab.io/amusingdevice/icon/antecer.ico
// @run-at       document-start
// @grant        none
// @license      MIT
// ==/UserScript==

(function () {
	'use strict';
	// 创建sleep方法(用于async/await的延时处理)
	function Sleep(ms) {
		return new Promise((resolve) => setTimeout(resolve, ms));
	}

	var jumpLink = null;
	var fromUrl = location.origin + location.pathname;
	// 规则列表
	var fromUrls = {
		'https://c.pc.qq.com/middlem.html': /(?<=pfurl=)[^&]+/, // QQ
		'https://link.zhihu.com/': /(?<=target=)[^&]+/, // 知乎
		'https://www.jianshu.com/go-wild': /(?<=url=)[^&]+/, // 简书
		'https://link.csdn.net/': /(?<=target=)[^&]+/, // csdn
	}
	// 查找规则
	if (fromUrls[fromUrl]) {
		let jumpMatch = window.location.search.match(fromUrls[fromUrl]);
		if (jumpMatch) jumpLink = decodeURIComponent(jumpMatch[0]);
	}
	// 贴吧跳转页(贴吧跳转url加密了,需要特殊对待)
	if (fromUrl == 'http://jump2.bdimg.com/safecheck/index') {
		(async ()=>{
			while(!document.body) await Sleep(100);
			let html = document.documentElement.outerHTML;
			let jumpMatch = html.match(/(?<=class="link">)[^<]+/);
			if (jumpMatch) jumpLink = decodeURIComponent(jumpMatch[0]);
		})();
	}

	// 跳转到目标网页
	if (jumpLink) {
		document.documentElement.innerHTML = `正在跳转到目标网站...<br>${jumpLink}`;
		top.location = jumpLink;
	}
})();