Greasy Fork

Greasy Fork is available in English.

Ban Bad Websites 标记/屏蔽机器翻译 SEO 垃圾网站

标记/禁用垃圾网站链接。主要针对机器翻译 Stack overflow 等 SEO 垃圾网站。

当前为 2020-11-18 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Ban Bad Websites 标记/屏蔽机器翻译 SEO 垃圾网站
// @namespace    http://greasyfork.icu/zh-CN/scripts/389721-ban-bad-websites
// @version      0.4.9
// @description  标记/禁用垃圾网站链接。主要针对机器翻译 Stack overflow 等 SEO 垃圾网站。
// @author       Phuker
// @match        *://*/*
// @grant        none
// ==/UserScript==

/*
GitHub:
https://github.com/Phuker/BanBadWebsites

Greasy Fork:
http://greasyfork.icu/zh-CN/scripts/389721

License:
GNU General Public License v3.0
*/

(function() {
    'use strict';

    // - - - - - - - - - - Start User Config - - - - - - - - - -

    // 突出显示目标超链接,改变链接的颜色、装饰线、边框、指针样式等
    var option_highlight_link = true;

    // 如果启用突出显示目标超链接,设置文字颜色
    // 示例:'red' '#CC0033' null
    var option_highlight_link_color = '#CC0033';

    // 如果启用突出显示目标超链接,设置背景色
    // 由于 CSS 的特性,有可能无法正确设置想要的区域
    // 示例:'red' '#CC0033' null
    var option_highlight_link_background_color = null;

    // 如果启用突出显示目标超链接,设置边框
    // 由于 CSS 的特性,有可能无法正确设置想要的区域
    // 示例:'solid 1px #CC0033'
    var option_highlight_link_border = null;

    // 如果启用突出显示目标超链接,设置下划线、上划线、贯穿删除线等样式
    // 由于 CSS 的特性,某些情况下无效
    // 示例:'line-through solid #CC0033'
    var option_highlight_text_decoration = null;


    // 使目标超链接无法点击
    // [不推荐] 垃圾网站有时候还有一定参考价值,必要时可能仍然需要点击访问
    var option_disable_link = false;


    // 隐藏目标超链接
    // [不推荐] 此脚本不是特定网站的针对性脚本,无法完美删除目标超链接,可能会导致网页显示错乱
    var option_remove_link = false;

    // - - - - - - - - - - End User config - - - - - - - - - -

    var hosts = {
        '爬虫采集 SEO 机器翻译垃圾网站': [
            'codeday.me',
            'code.i-harness.com',
            'djcxy.com',
            'voidcc.com',
            'itranslater.com',
            'kknews.cc',
            '1r1g.com',
            'xbuba.com',
            'voidcn.com',
            'codenong.com',
            'helplib.com',
            'jishuwen.com',
            'androidcookie.com',
            'soinside.com',
            'kbase101.com',
            'bbsah.com',
            'cn.computer-clans.com',
            'uwenku.com',
            'ojit.com',
            'stackoverrun.com',
            'mlog.club',
            'it-swarm.net',
            'bullforyou.com',
            'it1352.com',
            'itkeyword.com',
            'kutu66.com',
            'stackovernet.com',
            'orcode.com',
            'qastack.cn',
            'chubuntu.com',
            'codebug.vip',
            'it-swarm.asia',
            'bugshoot.cn',
            'stackoom.com',
            'itdaan.com',
            'z4q7.com',
            'slowmotionvideoclips.com',
            'bayouseo.com',
            '4659855.com',
            'hotbarebaking.com',
            'rsfaf.com',
            'wanmeiyule2.com',
            'ksa-boy.com',
            'poolandspapartsmart.com',
            'reallifetucson.com',
            'fulucaijing.com',
            'luxury-condos-miami.com',
            'zkyshop.com',
            'thehesedlove.com',
            'dc120.com.cn',
            'kaicen.cn',
            'zhetiaohe.com',
            'codecocoa.com',
            'cctsuzhou.cn',
            'juhc66.cn',
            'artez.org.cn',
            'hyhome.com.cn',
            'bdqxgw.com',
            'colabug.com',
            'ohmyrss.com',
            'ups360.net',
            '3li.cc',
            '723g.com.cn',
            'xinhexinli.com',
            '585906.com',
            'baopen.xyz',
            'jrccn.cn',
            'africamv.com',
            'hotbak.net',
            'pai-hang-bang.com',
            'lanzhouyangsheng.com',
            '9999ktv.com',
            '52movs.com',
            'zsyawen.com',
            'pianshen.com',
            'zhipanyou.com',
            'bbsmax.com',
            'shuzhiduo.com',
            'codeqq.com',
            'mamicode.com',
            'bubuko.com',
            'feimao777.com',
            'geek-share.com',
            'daimajiaoliu.com',
            'dajiayouxi.com',
            'gedixinxi.com',
            'gushidazahui.com',
            'jiankangjiaoliu.com',
            'yuerxinde.com',
            'xuexidushu.com',
            'dnxxj.com',
            'tiyujiaoliu.com',
            'shishangjiaoliu.com',
            'shehuiwenhua.com',
            'naozhuanwan.com',
            'meirongjiaoliu.com',
            'yulejiaoliu.com',
            'crifan.com',
            'oox8.com',
            'qu02.com',
            'tongfengqu.com',
            'wntzx.cn',
            'dovov.com',
            'cocoachina.com',
            'coder.work',
            'dofe.com.cn',
            '0937car.cn',
            'ubuntuqa.com',
            'it-swarm.dev',
            'codingdict.com',
            'jingjiamitan.com',
            'zhezhier.com',
            'win10xiazai.com',
            'paradacreativa.es',
            'thinbug.com',
            'answer-id.com',
            'mos86.com',
            'jeepxie.net',
            'qqyouyan.com',
            'baobaoyuer.com',
            'cnpython.com',
            'routinepanic.com',
            '4008140202.com',
            'pythonheidong.com',
            'bugjia.net',
            'generacodice.it',
            'generacodice.com',
            '366service.com',
            'oomake.com',
            'itread01.com',
            'soblog.cc',
            'shangmayuan.com',
            'read01.com',
            'yuanmas.com',
            'someabcd.com',
        ],
        '博彩垃圾网站': [
            'ceptchina.com',
            'cwptz.com',
            'danengtzs.com',
            'dzim.net',
            'lygzywl.com',
            'meihuijj.com',
            'rongtaihe1879.com',
            'seaolife.com',
            'stx160.com',
            'tiyiba.com',
            'winenine.com',
            'xiaoxtea.com',
            'zjwsrcw.com',
            '58pjy.com',
            '36511cp.com',
            'sdtasdb.com',
            'cairoibf.org',
            'macaodaily.com',
            '52365o.com',
            'wenliku.com',
            '36545622.com',
            '365888432.com',
            'chnweiyu.com',
            '2266601.com',
            'code5.cn',
            'yangzheng365.com',
        ],
        '垃圾下载站': [
            'download.csdn.net',
            'manong5.com',
        ],
        '垃圾中文技术性网站': [
            'jb51.net',
            'blog.csdn.net',
            'yq.aliyun.com',
        ]
    };

    var urls = {
        '机器翻译爬虫垃圾网站': [
            // http://www.imooc.com/wenda/detail/581525
            'https://www.imooc.com/wenda',
            'https://m.imooc.com/wenda',

            'https://cloud.tencent.com/developer/ask',  // https://cloud.tencent.com/developer/ask/69735
        ],
        '垃圾 SEO 网站': [
            'https://help.aliyun.com/wordpower/',
        ],
    }
    

    var cursor_img = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABj1BMVEX4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT4BlT////D56oEAAAAg3RSTlMAROOgDAAAAAyg40QARNX/+44LAACO+9VE4/////2QCwD//+Og+////5AK+6AMjv38k44MAAv//wD////8Cv+TCgAA/5MKAAAAAAALkP/8kAsAAAALkP3///2QCwAMjv3/jgyg+/////ug4////+NE1f/7jo77/9VEAETjoAwMoONEAJyONeEAAAABYktHRIRi0FpxAAAAB3RJTUUH4wEJAyMIrljkvAAAAOhJREFUGNNjYGBkYmZhZWNnZ2Pl4OTi5mHg5eMXEBQSFhERFhIV4xeXYJCUkpaRlZNXUJCXk5VRVFJmUFFVU9eQ1dTS0pTVUJfR1mHQ1dPXUNcwMDQ0AFKyRsYMJqZyQCkzc3MzIF9OiJXBQlhe08DM0srK0tpGU17YgoFdRMHW0NyqudnKzt7B0YkdScDZxdXN3YPB08vbB6LF188/IDCIITgkNAxiaHhEZFR0DENsXHwC1FqgSGISQ3JKahrMYeHpGZkMWdk5CKfn5OYx5BcUFhVDPFdSWlZewVBZVV1TC/F+XX1DYxMA6lI04KQBZEYAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTktMDEtMDlUMDM6MzU6MDgrMDg6MDDq0TSKAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE5LTAxLTA5VDAzOjM1OjA4KzA4OjAwm4yMNgAAAEN0RVh0c29mdHdhcmUAL3Vzci9sb2NhbC9pbWFnZW1hZ2ljay9zaGFyZS9kb2MvSW1hZ2VNYWdpY2stNy8vaW5kZXguaHRtbL21eQoAAAAYdEVYdFRodW1iOjpEb2N1bWVudDo6UGFnZXMAMaf/uy8AAAAYdEVYdFRodW1iOjpJbWFnZTo6SGVpZ2h0ADUxMo+NU4EAAAAXdEVYdFRodW1iOjpJbWFnZTo6V2lkdGgANTEyHHwD3AAAABl0RVh0VGh1bWI6Ok1pbWV0eXBlAGltYWdlL3BuZz+yVk4AAAAXdEVYdFRodW1iOjpNVGltZQAxNTQ2OTc2MTA4Y0VIZwAAABF0RVh0VGh1bWI6OlNpemUANjcyN0L99mrAAAAAYnRFWHRUaHVtYjo6VVJJAGZpbGU6Ly8vaG9tZS93d3dyb290L25ld3NpdGUvd3d3LmVhc3lpY29uLm5ldC9jZG4taW1nLmVhc3lpY29uLmNuL2ZpbGVzLzExNy8xMTc1NzQ5LnBuZ54B8P8AAAAASUVORK5CYII=';

    // modified from PAC
    function dnsDomainIs(host, domain) {
        if(domain[0] === '.'){
            domain = domain.substr(1);
        }
        var idx = host.length - domain.length;
        return (host === domain) || (idx > 0 && host.lastIndexOf('.' + domain) == idx - 1);
    }

    function ban_link(link, type){
        if(link.hasAttribute('phuker-banned')){
            return
        } else {
            link.setAttribute('phuker-banned', 'yes');
            console.log('Ban Bad Website: ' + link.href + ' - ' + type);
        }
        
        if(option_highlight_link){
            link.setAttribute('title', type);
            link.style.cursor = 'url(' + cursor_img + '), not-allowed';
            if(option_highlight_link_color){
                link.style['color'] = option_highlight_link_color;
            }
            if(option_highlight_link_background_color){
                link.style['background-color'] = option_highlight_link_background_color;
            }
            if(option_highlight_link_border){
                link.style['border'] = option_highlight_link_border;
            }
            if(option_highlight_text_decoration){
                link.style['textDecoration'] = option_highlight_text_decoration;
            }
        }

        if(option_disable_link){
            link.style['pointerEvents'] = 'none';
            if(!option_highlight_text_decoration){
                link.style['textDecoration'] = 'none';
            }
        }

        if(option_remove_link){
            link.style['display'] = 'none';
        }
    }

    function process(link){
        for(let type in hosts){
            var h = hosts[type];
            for(let i = 0; i < h.length; i++){
                if(dnsDomainIs(link.hostname, h[i])){
                    ban_link(link, type)
                    return 
                }        
            }
        }
        for(let type in urls){
            var u = urls[type];
            for(let i = 0; i < u.length; i++){
                if(link.href.startsWith(u[i])){
                    ban_link(link, type)
                    return 
                }        
            }
        }
    }

    function ban_bad_websites(){
        var links = document.getElementsByTagName('a');
        for(var i = 0; i < links.length; i++){
            let link = links[i];
            if(!link.hasAttribute('phuker-banned')){
                process(link);
            }
        }
    }
    window.addEventListener('load', ban_bad_websites);
    setTimeout(ban_bad_websites, 3 * 1000);
    setTimeout(ban_bad_websites, 10 * 1000);
})();