All posts

🔨工具:国内加速访问arxiv

(Updated: )

注意arxiv读音与archive一样,英[ˈɑːkaɪv],美[ˈɑːrkaɪv]

国内访问论文预发布平台arxiv巨慢无比,让人闹心!网上找了一个很好用的方法,按照这个方法配置之后arxiv就秒开了。原理就是将arxiv重定向到xxx.itp.ac.cn(中科院理论物理研究所镜像)。 如果此时你找到了一篇文章,地址是arxiv.org/abs/1911.11763,只需要把arxiv.org换成xxx.itp.ac.cn即可。但每次都手动配置就很麻烦,为了贯彻将懒惰进行到底的精神,我们需要将上述过程自动化。配置如下:

  1. 安装Tampermonkey油猴插件,自行google。

  2. 添加如下脚本


// ==UserScript==
// @name        redirect_arxiv
// @namespace   redirect_arxiv
// @include     *
// @include     https://*github.io*
// @include     https://*arxiv.org/*
// @include     https://*google.c*
// @include     https://*semanticscholar.org/*
// @include     https://*github.com*
// @include     https://*zhihu.com*
// @include     https://*brainpp.cn*
// @include     https://*outlook.cn*
// @version     1.0
// @grant       none
// ==/UserScript==

// 重定向 arxiv.org 到 xxx.itp.ac.cn(中科院理论物理研究所镜像)

function findFatherNode(node, nodeName='A', maxDeep=1000){
    for (var i = 0; i < maxDeep; i++) {
        if (! node){return node}
        if (node.nodeName == nodeName){
            return node
        }else{
            node = node.parentElement
        }
    };
}

document.body.addEventListener('mousedown', function(e){
    var targ = e.target || e.srcElement;
    var aTag = findFatherNode(targ, 'A', 10);
    if (!aTag || !(aTag.href)){return};

    var headN = 17;
    var hrefHead = aTag.href.slice(0, headN);
    var hrefTail = aTag.href.slice(headN);
    if ( (hrefHead.indexOf('arxiv.org')==-1)){return};

    if ( hrefHead.match(/https?:\/\/arxiv\.org/) ) {
        hrefHead = hrefHead.replace(/https?:\/\/arxiv\.org/, 'https://arxiv.org');
    }
    aTag.href = hrefHead + hrefTail
    // console.log(targ, targ.href);
});