之前因为 Zotero 知网 translator 插件有点年久失修,非常影响日常使用。根据之前积累下来的,有限的 javascript 知识,修改 CNKI.js 的部分代码,现在 Zotero 的最新版包括了这个修复,可以顺利地抓取知网上的引文信息。不过如果你想要下载 PDF 格式的论文,可以试试最新版的CNKI.js。之后,不断有小伙伴向我反馈,在使用学校代理的时候不能正常地抓取知网的信息。造成这个问题的原因,其实很简单,一般我们在学校的时候,学校会从知网上购买相应的数据库资源,知网会给学校相应地使用权限,根据学校的 IP 地址来判断是否购买了知网的资源。而当我们不在校园网时,一般会使用学校图书馆提供的 VPN 来帮你获取知网数据库。但可惜 Zotero 可并不知道你在使用 VPN 来获取引文数据,所以为我们需要添加一些简单设置来告诉 Zotero 是否需要使用 VPN。

1 不需要学校代理

不过在最开始前,有一个简单的方便方法,可以不用添加 Zotero Connector 中的代理。一般和知网合作的机构,都会开通中国知网高校/机构外部访问系统,网址为https://fsso.cnki.net/。我这里以南农为例,简单说明一下。

后面可能还会有一个用户选项,你直接点击Accept就可以了,之后就会转到知网的界面,可以和在学校一样搜索和下载文献了

2 使用校园代理

Zotero Connector 添加代理的设置的过程不难,我用两个例子来说明下操作过程。

2.1 示例1

以一知网文章为例,代理前后的网址为

# 代理前
https://kns.cnki.net/KCMS/detail/detail.aspx?dbcode=CJFQ&dbname=CJFDLAST2015&filename=NYSB201509001&v=MDMzOTVUcldNMUZyQ1VSTE9lWitkb0Z5M2xWYi9BS3pUWWJMRzRIOVRNcG85RlpZUjhlWDFMdXhZUzdEaDFUM3E=
# 代理后
https://kns-cnki-net-s.vpn2.njau.edu.cn/KCMS/detail/detail.aspx?dbcode=CJFQ&dbname=CJFDLAST2015&filename=NYSB201509001&uid=thisisafakeuidhashstringsW4IQMovwHtwkF4VYPoHbKxJw!!&v=MDMzOTVUcldNMUZyQ1VSTE9lWitkb0Z5M2xWYi9BS3pUWWJMRzRIOVRNcG85RlpZUjhlWDFMdXhZUzdEaDFUM3E=

在对比代理前后链接的变化,可以发现主域名从kns.cnki.net变成kns-cnki-net-s.vpn2.njau.edu.cn,代理后还增加了一个 UID 的参数,不过这个参数在这里暂时没有作用。

找到代理前后的差异后,就可以按照下图找到 Zotero Connector 设置部分(分别是 Firefox 和 Chrome 浏览器), 进行代理设置
2019-11-5_10

代到 Proxies 设置选项

先对上面出现的几个带百分号的变量简单说明下,以上面提到的https://kns.cnki.net/KCMS/detail/detail.aspx...

  • %h, 匹配的主域名,这里指kns.cnki.net
  • %p, 这里我理解成除了主域名外的部分,KCMS/detail/detail.aspx?...类似这部分
  • %d, 域名中的目录部分,我没用过
  • %f, 域名中的文件文件
  • %a, 任意字符串

从我们观察到使用代理后网址发生的变化,主域名从kns.cnki.net变成kns-cnki-net-s.vpn2.njau.edu.cn。那根据上面的变量格式,代理后的网址为%h-s.vpn2.njau.edu.cn,其中%h就是kns.cnki.net,而-s.vpn2.njau.edu.cn就是代理后增加的后缀了。网址后面剩下的部分就用%p来替代了。同时注意下方还有两个选项:

  1. Automatically associate new hosts, 自动关联到合适的新域名
  2. Automatically convert between dots and hyphens in proxied hostnames,域名中的.-可以互换,kns.cnki.net等价于`kns-cnki-net

一般第一个选项是要勾选,第二个选项看实际情况,这个示例是有点和横线,可以勾选上。从截图中可以看到,还有一个%h.s.vpn2.njau.edu.cn/%p的设置,这个代理设置,不勾选Automatically convert between dots and hyphens in proxied hostnames,这是当时论坛求助时,别人建议加上[^1]。最后剩下的Hostnames那里,可以不填,一般代理设置正确,能被 Zotero 正确识别,那对应的域名会出现在这里,要是识别不了,可以手动添加。

上述所有代理设置成功的话,当你打开知网的时候,应该会出现类似下面那样的黄色的提示,可以不必管它,点 X 关掉就好。

2.2 示例2

在这个例子中,学校代理后的网址形式与前一例有区别:

# 代理前
https://kns.cnki.net/KCMS/detail/detail.aspx?dbcode=CJFQ&dbname=CJFD2007&filename=JJYJ200711012&uid=WEEvREcwSlJHSldRa1FhcTdnTnhXS1B6bEpDaUJ5Sk54QXBkZW1KTHg4RT0=$9A4hF_YAuvQ5obgVAqNKPCYcEjKensW4IQMovwHtwkF4VYPoHbKxJw!!&v=MDA0MjhIdGJOcm85RVpvUjhlWDFMdXhZUzdEaDFUM3FUcldNMUZyQ1VSN3FmWmVScEZ5N2tWNzNCTHlmU1pMRzQ=
# 代理后
https://nau.edu.cn/https/77726476706e69737468656265737421fbf952d2243e635930068cb8/KCMS/detail/detail.aspx?dbcode=CJFQ&dbname=CJFD2007&filename=JJYJ200711012&uid=WEEvREcwSlJHSldRa1FhcTdnTnhXS1B6bEpDaUJ5Sk54QXBkZW1KTHg4RT0=$9A4hF_YAuvQ5obgVAqNKPCYcEjKensW4IQMovwHtwkF4VYPoHbKxJw!!&v=MDA0MjhIdGJOcm85RVpvUjhlWDFMdXhZUzdEaDFUM3FUcldNMUZyQ1VSN3FmWmVScEZ5N2tWNzNCTHlmU1pMRzQ=

比较代理前后网址的变化,可以观察到代理后的网址主域名发生变化了。设置参数是nau.edu.cn/https/77726476706e69737468656265737421fbf952d2243e635930068cb8/%p,没有%h是因为代理后的网址已经没有代理前网址的主域名,只需要在代理后的主域名后加上剩余的网址部分。仅只需勾选Automatically associate new hosts,另一个不用勾选。Hostnames 部分也可以手动添加www.cnki.net。配置正常后,刷新代理网址应该能正常识别,并出现黄色的提示信息。

3 最后

因为在校外使用代理,可能同一时间段内使用代理登录知网下载文献的人数比较多,知网会出现一个验证码限制你的使用,这个时候 Zotero 的下载知网论文时会出现下载不了的情况 。这时可以过一段时间再进行尝试,同时注意不要密集地下载而触发知网的保护机制。

前面举出的两个是通过浏览器来登录代理并登录到知网的,还有一些同学可能是通过类似EasyConnect软件来登录获取相关资源。因为手头没有测试环境,所以还不清楚这种方式抓取知网信息,是否有问题。