🔨工具:国内加速访问arxiv

注意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. 添加如下脚本

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

// ==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/, 'http://xxx.itp.ac.cn');
}
aTag.href = hrefHead + hrefTail
// console.log(targ, targ.href);
});