Greasy Fork

来自缓存

Greasy Fork is available in English.

HB Partner 链接自动提示及清除

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

当前为 2019-03-15 提交的版本,查看 最新版本

// ==UserScript==
// @name           HB Partner 链接自动提示及清除
// @description    发现网页中存在疑似 HB Partner 链接时自动弹窗提示,点击不在白名单中的 Partner 链接进入 HB 后自动清除网址尾巴并删除相关 cookie,更多请详见说明。
// @include        http*://*.humblebundle.com/*
// @include        http*://steamcn.com/*
// @include        http*://*.yxdzqb.com/*
// @author         Kazma Zhang
// @copyright      Kazma Zhang
// @version        1.0.0
// @licence        AGPL v3
// @grant          none
// @namespace      http://greasyfork.icu/users/4421
// ==/UserScript==

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

//白名单:默认为空,如需忽略某些 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) {
            //匹配则清除相关 cookie 并跳转到正常链接
            document.cookie = "partner_id=;path=/;";
            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) {
                        document.cookie = "partner_id=;path=/;";
                    }
                }
            }
        }
    }
}