评论系统API修复

事情起因

最开始是我发现后台一条评论没有IP地址的记录,然后我就纳闷了,不对啊?
于是我发现,评论系统获取访客IP的API接口:https://forge.speedtest.cn/api/location/info 它寄了……
api

博客配置

主题:安知鱼主题
评论系统:Valine + LeanCloud

解决第一步,更改Valine.min.js为本地引用

抓包可以发现,调用这个接口的是Valine.min.js这个脚本,也就是我的评论系统(Valine)的核心文件
api
接下来就需要对这个文件进行更改,但是别忘了,Valine评论系统是作为插件安装在我所使用的主题中的,主题的源码是写死的,他在获取Valine.min.js文件的时候,并没有本地引用,而是通过CDN从 https://cdn.cbd.int/valine@1.5.1/dist/Valine.min.js 获取
api
所以想要修改Valine.min.js,就必须先让Hexo引用本地Valine.min.js文件,然后再进行修改。
还是有难度的,不过我们可以通过修改主题的layout布局文件来修改
打开 \themes\anzhiyu\layout\includes\third-party\comments\valine.pug 文件
不难发现Valine系统的初始化代码:
api
箭头指着的地方就是Valine.min.js的初始化代码,我们只需要把 !{url-for(theme.asset.valine)} 改成 !{url-for(“/js/Valine.min.js”)} 即可,接着将你下载到的Valine.min.js文件放到 \themes\anzhiyu\source\js 目录下即可,这时重新生成页面再抓包就会发现Valine.min.js文件变成本地引用了
api
特别注意!
你需要更改两个地方的pug文件,上面所示范的只是其中一个,还有一个在 \themes\anzhiyu\layout\includes\third-party\card-post-count\valine.pug 也需要使用同样方法更改

第二步,修改Valine.min.js中的api接口

在valine.min.js中搜索api,找到下面这一段代码,将api改为你的api接口即可。
温馨提示 在VSCode中,按住ctrl+f可以快速查找
api
valine原本使用的API为:https://ip.useragentinfo.com/json
我改成了:https://ip.useragentinfo.com/json
这个API的响应数据和原先的API差不多,所以不需要改json处理逻辑
之后重新生成页面就好辣