Greasy Fork is available in English.

HB Partner 链接自动提示及清除

发现网页中存在疑似 HB Partner 链接时自动弹窗提示,点击不在白名单中的 Partner 链接进入 HB 后自动清除网址尾巴并删除相关 cookie,更多请详见说明。

// ==UserScript==
// @name           HB Partner 链接自动提示及清除
// @description    发现网页中存在疑似 HB Partner 链接时自动弹窗提示,点击不在白名单中的 Partner 链接进入 HB 后自动清除网址尾巴并删除相关 cookie,更多请详见说明。
// @match          *://*.humblebundle.com/*
// @match          *://keylol.com/t*
// @match          *://keylol.com/forum.php?mod=viewthread&tid=*
// @match          *://yxdzqb.com/*
// @author         Kazma Zhang
// @copyright      Kazma Zhang
// @version        1.3.1
// @licence        AGPL v3
// @grant          none
// @namespace      https://greasyfork.org/zh-CN/users/280819-kzpic
// ==/UserScript==

//目前仅匹配 hb(功能需要)、steamcn 和一个未做任何提示且隐藏了 Partner 链接的网站
//如需增减请按格式调整头部的 @match 字段,为 * 则匹配所有网站,注意删除 *://*.humblebundle.com/* 后自动清除功能将失效

(function(){

    //白名单:默认为空,如需忽略某些 Partner 的自动提醒和清除,请在下一行的引号内输入 Partner 名称,如需定义多个,请按此格式输入(数量不限):var white = ["abc", "def", "ghi"];
    var white = [""];

    //启用提醒:启用提醒功能
    var Warning = 1;

    //启用清除:启用清除功能
    var Clean = 1;

    //提醒原则:默认为 0,表示仅当网页中存在以链接形式出现或被隐藏的 Partner 链接时提醒,如需在任何时候都提醒,请更改为 1
    var WarningAll = 0;

    if (Warning == 1) {
        //获取 body 代码
        var str = document.body.innerHTML;
        var reg = "";
        //匹配规则,前者为 html 标签中的链接,后者为全部链接
        WarningAll == 0 ? reg = /<[^<>]*humblebundle\.com[^\'\"<>]*\?partner=[^<>]*>/g : reg = /humblebundle\.com[^\'\"<>]*\?partner=/g;
        //如匹配则提醒
        if (str.match(reg)) {
            alert("注意:此页面疑似包含 HB Partner 链接!\r\n如需查找请按 F12 或右键审查元素搜索“?partner=”。");
        }
    }

    if (Clean == 1) {
        //判断当前网站为 www.humblebundle.com
        if (window.location.host.indexOf("www.humblebundle.com") != -1) {
            //判断网址是否包含尾巴及尾巴是否不在白名单中
            if (window.location.search.indexOf("?partner=") != -1 && white.indexOf(window.location.search.replace("?partner=", "")) == -1) {
                //匹配则跳转到正常链接
                location.replace(window.location.origin + window.location.pathname);
            } else {
                //获取站点 cookie,不会上传请放心
                var strcookie = document.cookie;
                //拆分 cookie 为名/值对
                var arrcookie = strcookie.split("; ");
                //遍历 cookie 数组
                for(var i=0; i < arrcookie.length; i++) {
                    //拆分每对
                    var arr = arrcookie[i].split("=");
                    //如匹配则清除
                    if(arr[0] == "partner_id") {
                        if (white.indexOf(arr[1]) == -1) {
                            var date=new Date();
                            date.setTime(date.getTime() - 10000);
                            document.cookie = "partner_id=;domain=.humblebundle.com;expire=" + date.toGMTString() + ";path=/;";
                        }
                    }
                }
            }
        }
    }
}) ()