Greasy Fork is available in English.

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

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

Verzia zo dňa 2015-11-29 15:03:37 UTC. Pozri najnovšiu verziu.

// ==UserScript==
// @name Baidu:绕过百度重定向直接访问网页
// @author         AC
// @namespace      1353464539@qq.com
// @description    繞過百度搜索結果中的自己的跳轉鏈接,直接訪問原始網頁-反正都能看懂
// @version        5.0
// @create         2015-11-25
// @lastmodified   2015-11-25
// @include        http://www.baidu.com/*
// @include        https://www.baidu.com/*
// @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;
targets = document.getElementById("container"); // 百度
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: curhref, //直接传递i,在i=0的时候反馈回来时null-猜想被会被转换掉,所以+1
                    method: "GET",
                    onload: function(response) {
                        var indexhref = response.context;
                        var ccnode = document.querySelectorAll(".t a[href='"+indexhref+"']")[0];
                        //console.log(ccnode.href);
                        if(ccnode != null){
                            ccnode.href = response.finalUrl;
                        }else{
                            //console.log("该链接已经被其他脚本干掉了哦"+response.finalUrl);
                        }
                    }
           });
        else{
            //console.log("绕过百度重定向直接访问网页: 第"+i+"个已经处理了");
        }
    }
}