-
Notifications
You must be signed in to change notification settings - Fork 226
/
Lite-AC-Baidu-SoGou-Google-NoRedirect.user.js
197 lines (195 loc) · 10.5 KB
/
Lite-AC-Baidu-SoGou-Google-NoRedirect.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
// ==UserScript==
// @name AC-baidu: 优化百度、搜狗、谷歌搜索结果之重定向 lite
// @icon https://coding.net/u/zb227/p/zbImg/git/raw/master/img0/icon.jpg
// @grant GM_xmlhttpRequest
// @author AC
// @create 2015-11-25
// @run-at document-start
// @version 11.0
// @connect www.baidu.com
// @include http://www.baidu.com/*
// @include https://www.baidu.com/*
// @include http://www.sogou.com/*
// @include https://www.sogou.com/*
// @include /^https?://\w+.bing.com/.*/
// @include /^https?\:\/\/encrypted.google.[^\/]+/
// @include /^https?\:\/\/www.google.[^\/]+/
// @include https://*.zhidao.baidu.com/*
// @include https://zhidao.baidu.com/*
// @home-url https://greasyfork.org/zh-TW/scripts/30504
// @namespace 1353464539@qq.com
// @copyright 2017, AC
// @description 1.繞過百度、搜狗搜索結果中的自己的跳轉鏈接,直接訪問原始網頁-反正都能看懂
// @lastmodified 2019-05-22
// @feedback-url https://greasyfork.org/zh-TW/scripts/30504
// @note 2019.05.22-V11.0 诈尸,修复一直弹窗的问题,这个版本的基本上不会更新了,但是处理Baidu和搜狗的重定向功能算是完善的
// @note 2017.06.25-V10.0 修复上次更新导致的百度知道的老问题的出现
// @note 2017.06.24-V9.8 更新了bing上的图片favicon地址;并且尽量减少了MO触发次数,避免页面卡顿;修复搜狗的重定向问题
// @note 2017.06.23-V9.7 上传错了~重新来,顺带处理了谷歌favicon问题
// @note 2017.06.23-V9.6 修复了谷歌重定向的问题~~我的锅
// @note 2017.06.11-V9.5 不再使用DOM方式来监听页面了,使用timer+MO来处理,极大减少了cpu占用时间和瞬时网速占用
// @note 2017.05.26-V9.4 恢复favicon模式,现在这个脚本基本上全了,有需要以后再说
// @note 2017.05.15-V9.3 暂时移除百度右边侧栏的广告移除模式,准备下次优化好了再继续
// @note 2017.05.12-V9.2 暂时移除谷歌的安全搜索模式,因为很复杂的原因
// @note 2017.05.12-V9.1 暂时移除Favicon的显示,因为这样就杂了,有需要的人自己去装这个脚本吧,保留百度去广告
// @note 2017.05.12-V9.0 集合了去重定向+去广告+Favicon显示
// @note 2017.05.12-V8.7 集合了去广告的脚本,以前的那个去广告的脚本就不用了
// @note 2017.05.12-V8.6 修复谷歌安全搜索的BUG V2
// @note 2017.05.12-V8.4 新增:默认屏蔽谷歌的安全搜索功能
// @note 2017.05.05-V8.3 修复include范围太小导致的百度知道的屏蔽问题
// @note 2017.05.04-V8.2 终于修复了百度知道图片替换了文字的这个大BUG; 顺便处理了superapi.zhidao.baidu.com; 新增谷歌搜索结果重定向去除
// @note 2017.05.04-V8.1 终于修复了百度知道图片替换了文字的这个大BUG,顺便处理了superapi.zhidao.baidu.com
// @note 2017.05.04-V8.0 终于修复了百度知道图片替换了文字的这个大BUG,待测试
// @note 2017.03.28-V7.6 修复在ViolentMonkey上的不支持的问题
// @note 2017.03.28-V7.5 尝试修复chrome上的问题
// @note 2017.03.21-V7.4 尝试处理Edge上不支持的问题,结果发现是Edge本身的TamperMonkey支持有问题
// @note 2017.03.19-V7.3 修复打开百度之后再次点击“百度一下”导致的无法更新重定向问题
// @note 2017.03.19-V7.2 未知原因chrome的MutationObserver无法使用了,继续回归以前的DOMNodeInserted
// @note 2017.02.17-V7.0 修复搜狗的搜索结果重定向问题+改个名字
// @note 2017.02.17-V6.9 修复搜狗的搜索结果重定向问题
// @note 2016.12.10-V6.8 ***
// @note 2016.10.27-V6.7 修复了以前的重复请求,现在的请求数应该小了很多,网络也就不卡了,感觉萌萌哒
// @note 2016.04.24-V6.6 恢复以前的版本,因为兼容性问题
// @note 2015.12.01-V5.0 加入搜狗的支持,但是支出不是很好
// @note 2015.11.25-V2.0 优化,已经是真实地址的不再尝试获取
// @note 2015.11.25-V1.0 完成去掉百度重定向的功能
// ==/UserScript==
// 初次:还是采用了setInterval来处理,感觉这样的话速度应该比Dom快,也比MO适用,因为MO需要在最后才能调用,实用性还不如timer
// 之后:还是采用MO的方式来处理
(function(){
var fatherName = new Array(
"c-container", //baidu1
"rc", //google
"b_algo", //bing1
"b_ans", //bing2
"vrwrap", //sogou1
"rb"//sogou2
);
var Stype; // 去重定向的选择
var Ftype; // favicon的选择
var maxOneHtmlHeight=2500;
var ACMO = window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;
var option = {'childList':true,'subtree':true};
var observer = new ACMO(function(records){
//console.log(document.body.scrollHeight);
if(records.length<100){
if(records.length > 5 || document.body.scrollHeight > 4000){
//console.log("in"+records.length);
ACHandle();
}
}
});
if (location.host.indexOf("www.baidu.com") > -1) {
Stype = "h3.t>a";
Ftype = ".f13 .c-showurl[href],.c-container>div[class^='c-'] .c-showurl[href],.c-container>div[class^='c-'] .texttolink[href]";
startBaidu();
} else if (location.host.indexOf("sogou") > -1) {
Stype = "h3.pt>a, h3.vrTitle>a";
Ftype = "cite[id*='cacheresult_info_']";
srartOthers();
} else if (location.host.indexOf("google") > -1){
Stype = "";
Ftype = "._Rm";
srartOthers();
} else if (location.host.indexOf("bing") > -1){
Stype = "";
Ftype = ".b_attribution>cite";
srartOthers();
maxOneHtmlHeight = 4000;
} else {
addStyle(".word-replace{display: none !important;}");
return;
}
function startBaidu(){
var tt = setInterval(function(){
if(document.querySelector("#content_left")){
clearInterval(tt);
/***最后必须要设置好MO继续监听页面数据--自动加载下一页的问题***/
observer.observe(document.querySelector("#wrapper_wrapper"), option);
// 处理当前-可以开始设置那个xxx了
ACHandle();
}
}, 200);
}
function srartOthers(){
observer.observe(document, option);
}
function ACHandle(){
//console.log("deal");
if(Stype != null && Stype != "")
resetURL(document.querySelectorAll(Stype)); // 百度去重定向
//addFavicon(document.querySelectorAll(Ftype)); // 添加Favicon显示
removeOnMouseDownFunc(); // 移除onMouseDown事件,谷歌去重定向
//removeAD_baidu(); // 移除百度广告
};
function removeOnMouseDownFunc(){
try{
document.querySelectorAll(".g .rc .r a").forEach(function(one){
one.setAttribute("onmousedown", "");
});
}catch(e){}
}
function addStyle(css) { //添加CSS的代码--copy的
var pi = document.createProcessingInstruction(
'xml-stylesheet',
'type="text/css" href="data:text/css;utf-8,' + encodeURIComponent(css) + '"'
);
return document.insertBefore(pi, document.documentElement);
}
function resetURL(list){
for(var i = 0; i < list.length; i++){
// 此方法是异步,故在结束的时候使用i会出问题-严重!
// 采用闭包的方法来进行数据的传递
var curhref = list[i].href;
if(list[i]!= null && list[i].getAttribute("ac_redirectStatus") == null){
list[i].setAttribute("ac_redirectStatus", "0");
if(curhref.indexOf("baidu.com") > -1 || curhref.indexOf("sogou.com") > -1){
(function(c_curhref){
var url = c_curhref.replace(/^http:/, "https:");
if (curhref.indexOf("baidu.com") > -1 && url.indexOf("eqid") < 0) {
// 如果是百度,并且没有带有解析参数,那么手动带上
url = url + "&wd=&eqid=";
}
setTimeout(function(){
GM_xmlhttpRequest({
url: url,
headers: {
"Accept": "text/html"
},
method: "GET",
onreadystatechange:function(response) {
if(response.status==200){
DealResult(response, c_curhref);
}
}
});
},100);
})(curhref); //传递旧的网址过去,读作c_curhref
}else if(curhref.indexOf("/interstitial") > -1){
}else{
}
}
}
}
function DealResult(response, c_curhref){ // 数据获取成功,替换页面地址为真实地址
try{
var resultURL = response.finalUrl;
var resultResponseUrl = Reg_Get(response.responseText, "URL='([^']+)'");
if(resultResponseUrl != null)
resultURL = resultResponseUrl;
//console.log(resultURL);
var indexhref = Reg_Get(c_curhref, "((?:http)[^&]+)");// 必须要提取部分数据,因为之后的莫名加了其他参数ck=0.0.0.0.....
var ccnode = document.querySelectorAll("h3>[href*='"+indexhref+"']")[0];
if(ccnode != null){
ccnode.href = resultURL;
}else{
console.log("该链接已经被其他脚本干掉了哦"+resultURL);
}
}catch (e) {
}
}
function Reg_Get(HTML, reg){
var RegE = new RegExp(reg);
return RegE.exec(HTML)[1];
}
})();