-
Notifications
You must be signed in to change notification settings - Fork 4
/
搜索引擎结果中屏蔽自定义网站.user.js
241 lines (233 loc) · 8.55 KB
/
搜索引擎结果中屏蔽自定义网站.user.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
// ==UserScript==
// @name 搜索引擎结果中屏蔽自定义网站
// @namespace BlockKafanTopicinGoogle
// @include /^https?\:\/\/encrypted.google.[^\/]+/
// @include /^https?\:\/\/www.google.[^\/]+/
// @include /^https?\:\/\/www.baidu.[^\/]+/
// @include /^https?\:\/\/[\w]+.bing.[^\/]+/
// @include /^https?\:\/\/www.haosou.com+/
// @include /^https?\:\/\/www.so.com+/
// @include /^https?\:\/\/www.youdao.com/
// @include /^https?:\/\/www.sogou.com/
// @include /^https?:\/\/search.disconnect.me/
// @author AC
// @version 0.7.0
// @description 从Google Baidu Bing等搜索引擎结果中屏蔽自定义的网站,作者AC,本人只添加了垃圾网站。
// @grant note 2017.4.14 更新了:根据反馈,处理了chrome上的MutationObserver的问题,还是换回了DOMinsert,反正能用
// @grant note 2016.2.6 更新了:根据反馈,增加了新的搜索点:Disconnect.ME搜索点,建立了一个简单的搜索结果
// @grant note 2015.11.22 更新了:采用了新的事件触发MutationObserver,替代之前经常被出触发的DOMinsert事件,大大减少了触发的情况,减轻了浏览器负担
// @grant note 2015.11.21 更新了:之前由于偷懒,所以简单的写了些大部分功能,这次基本上是完善了总的功能,应该不会有漏网之鱼了,如果出现问题请及时反馈邮箱1353464539@qq.com,如果没有问题的话应该来说这是最后一版了,除非以后代码失效了我会进行修改的
// @grant note 2015.11.4 更新了:谷歌干掉搜索结果留下的空白--注意先备份以前的修改
// @grant note 2015.10.31-4 一定程度上再次调整了卡顿的几率,同时加入函数tryto_del_specificEle(url_d, spec_d, spec_f_d, index_d),还有删除了百度的软件推广
// @grant note 2015.10.31-3 看来都不喜欢卡饭,我就直接写好了不要www.kafan.cn好了,之前只是针对www.kafan.cn/topic
// @grant note 2015.10.31-2 修正了(因修改谷歌页面卡顿)导致的百度卡死情况,蛋疼的百度在某个f13标签卡死了
// @grant note 2015.10.31 更新处理谷歌页面卡顿的情况-求测试和反馈
// ==/UserScript==
//===================================================特殊规则处理=======================================================
/***用于干掉某些不属于普通规则的模块,可以自己仿照格式添加**/
//var sepcStr1_USELESS=new Array("待删除目的URL", "待删除网址的class", "待删除网址对应最终块的class");
var sepcStr1=new Array("rj.baidu.com","c-showurl", "result-op c-container"); //百度软件推广
tryto_del_specificEle(sepcStr1[0], sepcStr1[1], sepcStr1[2], sepcStr1[3]);
//===================================================普通规则变量定义=======================================================
/*
变量x用于baidu-google-bing-haosou-youdao
就是网址的黑名单的意思~~,--不显示该名单中的网址
*/
var x=new Array(
"251com.cn",
"51wendang.com",
"92to.com",
"aichengxu.com",
"aiuxian.com",
"bitscn.com",
"bkjia.com",
"book118.com",
"btdcw.com",
"bubuko.com",
"chinadmd.com",
"codego.net",
"codes51.com",
"ctosay.cn",
"doczj.com",
'educity.cn',
"examw.com",
"fx114.net",
'go-gddq.com',
"it610.com",
"itfly.net",
"itnose.net",
"jav-library.com",
"jav007.com",
"javmega.net",
"javss.com",
"jkforum.net",
"kafan.cn/topic",
"lxway.com",
"mm131.com",
"myexception.cn",
"niubb.com",
"qiusuoge.com",
"sanwen8.cn",
"sjsjw.com",
"t66y.cc",
"th7.cn",
"uu456.com",
"xuebuyuan.com",
"xuehuile.com",
"wenkuxiazai.com",
"wxphp.com",
"yuntuwang.net",
"www.knowsky.com",
"www.makaidong.com",
"www.mamicode.com",
"www.voidcn.com",
"www.kafan.cn › 卡饭教程"
);
//网址节点的最近父节点 百度、必应、谷歌、好搜、有道--->用来尽可能的保证不卡死浏览器
var dir_fatherName = new Array(
"f13", //百度
"b_attribution", //必应
"f kv _SWb", //谷歌
"res-linkinfo", //好搜
"result-footer", //有道
"fb", //搜狗
"title"
);
//网址节点的最终父节点-一一对应
var end_fatherName = new Array(
"result c-container ", //百度
"b_algo", //必应
"g", //谷歌
"res-list", //好搜
"rnw default", //有道
"rb", //搜狗
"result"
);
var map={};
initMap();
//===================================================主入口=======================================================
document.addEventListener('DOMNodeInserted', blockKafanBaidu, false);
//document.addEventListener('DOMNodeInserted',blockKafanBaidu,false);
function blockKafanBaidu() {
var isBaidu = (location.href.indexOf('.baidu.com') > -1);
var isDisConnectMe = (location.href.indexOf('.disconnect.me') > -1);
var citeList;
if(isBaidu){
citeList = document.getElementsByClassName('c-showurl'); //之前取的是g,但这个标签在google中是最大的标签,导致谷歌页面卡住,所以先判断是baidu站点
deal(citeList)
}else if(isDisConnectMe){
citeList = document.getElementsByClassName('title');
deal_DisConnectMe(citeList);
}else{
citeList = document.getElementsByTagName('cite'); // 其他的几个搜索貌似都是以cite为TAG的
deal(citeList)
}
}
// 传入nodelist,然后查找两个列,查看是否一致,一致则删除
function deal(citeList){
for (var index = 0; index < citeList.length; index++) {
var element = replaceAll(citeList[index].innerHTML);
if (checkIndexof(element)) {
var node = citeList[index].parentNode;
var cur_dir_fatherName = node;
var II=0;
if(is_dir_fatherNode(cur_dir_fatherName.className)){
for(II = 0; II <= 5; II++){
node = node.parentNode;
console.log(node.className+" kk "+ map[cur_dir_fatherName.className]);
if(isequal(node.className, map[cur_dir_fatherName.className])){
break;
}
}
}
if(II <= 5)
node.parentNode.removeChild(node);
}
}
}
function deal_DisConnectMe(citeList){
for (var index = 0; index < citeList.length; index++) {
var element = replaceAll(citeList[index].href);
if (checkIndexof(element)) {
var node = citeList[index].parentNode;
var cur_dir_fatherName = node;
var II=0;
if(is_dir_fatherNode(cur_dir_fatherName.id)){
for(II = 0; II <= 5; II++){
node = node.parentNode;
console.log(node.id+" kk "+ map[cur_dir_fatherName.id]);
if(isequal(node.id, map[cur_dir_fatherName.id])){
break;
}
}
}
if(II <= 5)
node.parentNode.removeChild(node);
}
}
}
// 初始化Map
function initMap(){
var length = dir_fatherName.length;
for(var i = 0; i < length; i++){
var a = dir_fatherName[i];
var b = end_fatherName[i];
map[a] = b;
}
}
// 确认是否为最终节点
function isequal(cur_end, map_end){
if(map_end == cur_end)
return true;
return false;
}
// 遍历Array,判断网址父节点是应该属于列表中的
function is_dir_fatherNode(node){
var leng = dir_fatherName.length;
for(var i = 0; i < leng; i++){
if(node == dir_fatherName[i]){
return true;
}
}
return false;
}
/**
url_d 被删除的地址url
spec_d 被删除节点的Class名字
spec_f_d 被删除节点的总的父亲节点的Class名字
index_d 节点到父节点的层数
*/
function tryto_del_specificEle(url_d, spec_d, spec_f_d, index_d){
//alert('删除ing '+spec_d);
var citeList2 = document.getElementsByClassName(''+spec_d);
for(var index = 0; index < citeList2.length; index++){
var ele = replaceAll(citeList2[index].innerHTML);
if((ele.indexOf(''+url_d)>-1)){
var node = citeList2[index].parentNode;
for(var index2 = 0; index2 <= 4; index2++){
node = node.parentNode;
//alert(node.className);
if(node.className == spec_f_d){
break;
}
}
if(index2 <= 4)
node.parentNode.removeChild(node);
}
}
}
/*去掉网址中的<xxx>*/
function replaceAll(sbefore){
var send;
send = sbefore.replace(/<[^>]*>/g ,"");
return send;
}
/*确认是当前例子的一个子例*/
function checkIndexof(element){
var result = (element.indexOf(x[0]) > -1);
for(var i = 1; i <= x.length; i++){
//alert("check");
result = result || (element.indexOf(x[i]) > - 1);
}
return result;
}