本脚本会对一些页面进行重定向,安装前请确认理解【此操作可能带来某些安全隐患】,并愿意自行承担由此造成的一切后果。
// ==UserScript== // @name Go to the page which i want. // @namespace Go to the page which i want. // @icon https://i.v2ex.co/IY7K141dl.png // @grant none // @run-at document-start // @inject-into content // @version 1.0.2 // @author 稻米鼠 // @description 本脚本会对一些页面进行重定向,安装前请确认理解【此操作可能带来某些安全隐患】,并愿意自行承担由此造成的一切后果。 // @supportURL https://meta.appinn.net/t/21266 // @homepageURL https://meta.appinn.net/t/21266 // @match *://*.m.s###m.com/p/* // @match *://m.s###m.com/* // @match *://t.cn/* // @match *://link.zhihu.com/?target=* // @match *://weixin110.qq.com/cgi-bin/mmspamsupport-bin/newredirectconfirmcgi?* // @match *://c.pc.qq.com/middle.html* // @match *://item.m.jd.com/* // @match *://www.jianshu.com/go-wild* // @match *://mail.qq.com/cgi-bin/readtemplate* // ==/UserScript== // Variables const L = window.location // Redirect to new URL const redirectTo = url=>{ L.href = url } // Replace something from URL const replaceLocation = (inReg, outReg)=>{ redirectTo( L.href.replace(inReg, outReg) ) } // Redirect to a sub Url which in now Url const redirectLocation = ()=>{ redirectTo( decodeURIComponent( L.search .replace(/^.*?(https?%3A(?:%2F%2F|\/\/))/, '$1') .replace(/[?&#].*$/, '') )) } // Redirect based on element content const redirectByElementContent = selsector=>{ window.addEventListener('load', ()=>{ const el = document.body.querySelector(selsector) if(el && /^https?:\/\/.*/.test(el.innerText)){ redirectTo(el.innerText) } }) } // rules const rules = [ { // s###m mobile to PC reg: /^https?:\/\/(post\.)?m\.s###m\.com\//i, redirect: ()=>{ replaceLocation(/\/\/(post\.)?m\./, '//$1') } }, {/* JD mobile to PC */ reg: /^https?:\/\/item\.m\.jd\.com\/(?:product\/|ware\/view\.action\?.*wareId=)(\d+).*$/i, redirect: ()=>{ replaceLocation(/^https?:\/\/item\.m\.jd\.com\/(?:product\/|ware\/view\.action\?.*wareId=)(\d+).*$/i, 'https://item.jd.com/$1.html') } }, {/* JD hot sell */ reg: /^http(?:s)?:\/\/re\.jd\.com\/cps\/item\/(\d+)\.html.*$/i, redirect: ()=>{ replaceLocation(/^http(?:s)?:\/\/re\.jd\.com\/cps\/item\/(\d+)\.html.*$/i, 'https://item.jd.com/$1.html') } }, { // Weibo offsite link reg: /^https?:\/\/t.cn\/\w+/i, redirect: () => { redirectByElementContent('p.link, div.desc') } }, { // WeChat blocking address auto redirect reg: /^https?:\/\/weixin110\.qq\.com\/cgi-bin\/mmspamsupport-bin\/newredirectconfirmcgi\?/, redirect: () => { redirectByElementContent('p.weui-msg__desc') } }, { // All jumps to intermediate pages (destination address is included in the URL) reg: /https?%3A(?:%2F%2F|\/\/)/i, redirect: ()=>{ redirectLocation() } } ] for(const rule of rules){ if(rule.reg.test(L.href)){ rule.redirect() break } }