Greasy Fork

Greasy Fork is available in English.

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

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

目前为 2019-09-06 提交的版本。查看 最新版本

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

(function() {
    'use strict';
    var option_disable_link = false;
    var hosts = {
        '机器翻译爬虫垃圾网站': [
            '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',
        ],
        '博彩垃圾网站': [
            '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',
        ],
        '垃圾下载站': [
            'download.csdn.net',
        ],
        '垃圾中文技术性网站': [
            'jb51.net',
            'blog.csdn.net',
        ]
    };
    

    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 process(link){
        for(var type in hosts){
            var h = hosts[type];
            for(var i = 0; i < h.length; i++){
                if(dnsDomainIs(link.hostname, h[i])){
                    link.setAttribute('title', type);
                    link.style.cursor = 'url(' + cursor_img + '), not-allowed';
                    link.style['color'] = 'red';
                    if(option_disable_link){
                        link.style['pointerEvents'] = 'none';
                        link.style['textDecoration'] = 'none';
                    }
                    return 
                }        
            }
        }
    }

    var links = document.getElementsByTagName('a');
    for(var i = 0; i < links.length; i++){
        process(links[i]);
    }
})();