Greasy Fork

来自缓存

Baidu:绕过百度重定向直接访问网页

繞過百度搜索結果中的自己的跳轉鏈接,直接訪問原始網頁-反正都能看懂

目前为 2015-11-25 提交的版本。查看 最新版本

// ==UserScript==
// @name Baidu:绕过百度重定向直接访问网页
// @author         AC
// @namespace      [email protected]
// @description    繞過百度搜索結果中的自己的跳轉鏈接,直接訪問原始網頁-反正都能看懂
// @version        2.0
// @create         2015-11-25
// @lastmodified   2015-11-25
// @include         /^https?\:\/\/www.baidu.[^\/]+/
// @copyright      2015+, AC
// @run-at         document-end
// @grant		    GM_xmlhttpRequest
// @icon            https://coding.net/u/zb227/p/zbImg/git/raw/master/icon.jpg
// @note            2015.11.25-V2.0 优化,已经是真实地址的不再尝试获取
// @note            2015.11.25-V1.0 完成去掉百度重定向的功能 
// ==/UserScript==

// 采用MutationObserver监视会大大实际代码的调用次数-比DOMNodeInserted更好的调用方式

var targets;
var list;
if(location.href.indexOf('www.baidu') > -1){
    targets = document.querySelector("#content_left"); // 百度
} 
mo = new MutationObserver(function(allmutations) {
    // 注意querySelectorAll得到的对象是静态的,所以每次重复调用的时候需要更新
    list = document.querySelectorAll(".t a");
    resetURL();
});
mo.observe(targets, {'childList': true, 'subtree': true});
function resetURL(){
    for(var i = 0; i < list.length; i++){
        // 此方法是异步,故在结束的时候使用i会出问题-严重!
        // 采用调用前通过context过去,调用结束后通过response.context获得
        var curhref = list[i].href;
        if(curhref.indexOf("http://www.baidu.com/link?url=") > -1)
            GM_xmlhttpRequest({
                    url: curhref,
                    headers: {
                        "Accept": "text/xml"
                    },
                    context: i+1, //直接传递i,在i=0的时候反馈回来时null-猜想被会被转换掉,所以+1
                    method: "GET",
                    onload: function(response) {
                        var index = response.context-1; 
                        document.querySelectorAll(".t a")[index].href=response.finalUrl;
                    }
           });
        else{
            //console.log("绕过百度重定向直接访问网页: 第"+i+"个已经处理了");
        }
    }
}