Beehiiv Link Transparency

Decorate links on a Beehiiv newsletter page with title tags showing the target URLs

当前为 2024-01-03 提交的版本,查看 最新版本

// ==UserScript==
// @name         Beehiiv Link Transparency
// @version      0.1
// @description  Decorate links on a Beehiiv newsletter page with title tags showing the target URLs
// @author       Kevin Shay
// @namespace    https://gf.qytechs.cn/users/154233
// @match        https://www.todayintabs.com/*
// @grant        GM_xmlhttpRequest
// @connect      flight.beehiiv.net
// @require      https://update.gf.qytechs.cn/scripts/472236/1249646/GM%20Fetch.js
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// ==/UserScript==

/* globals gmFetch */

(function() {
    'use strict';

    const BEEHIIV_REDIRECT_RE = new RegExp('^https://flight.beehiiv.net/v2/clicks/');
    const ERROR_LOCATION_RE = new RegExp('Refused to connect to "([^]+)"');

    function checkLinks() {
        [...document.getElementsByTagName('a')].forEach((el) => {
            if (el.href.match(BEEHIIV_REDIRECT_RE)) {
                gmFetch(el.href, {
                    method: 'HEAD',
                    headers: {
                        'User-Agent': 'Mozilla/4.0 (compatible) Greasemonkey',
                    },
                }).then((res) => {
                    console.log(res);
                }).catch((e) => {
                    // FIXME: If GM_fetch and GM_xmlhttpRequest could be told not to follow redirects,
                    // we could look at the first redirect response and wouldn't need to rely on errors.
                    el.setAttribute('title', e.toString().match(ERROR_LOCATION_RE)[1].trim());
                });
            }
        });
    }

    checkLinks();
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址