本文最后更新于:2024-11-02T17:08:04+08:00
前言
在2021年我实现了一个Node导出博客的功能:爬取接口及博客页面并导出为md文件格式。中途有许多迭代及优化以及解决了一些关键问题,写篇文章做个记录和review
博客更新功能
在原有的导出功能上增加了博客更新的功能,避免了每次都全部导出,是否消耗时间。在命令中新增-update命令进行升级操作,如使用node server -type:csdn -id:time_____ -update
更新时会对比博客名称是否存在,如果没有则会单独导出这篇文章。核心代码是
以及下面的更新数据操作,我的做法是在根目录新增了一个文章缓存的temp目录,第一次加载时会将文章列表存在文件中,后续update时只需对比一下列表长度并截取新增的文章列表即可
具体改动见:博客更新
同时,我们可以在Jenkins中修改一下pipeline,以及使用构建触发器通过定时自动触发,这样就可以每天自动更新博客了
图片防盗链
由于爬取博客使用的是原图片,一般图片都会使用图片防盗链防止异常请求,如果使用非法Referer访问对方的资源就会抛错
如果使用浏览器打开就正常此时就来到了第二个优化点:反代,使用replace替换原有的img地址到我的本地nginx服务器上,下面是代码中的修改点
以及commit
参照之前的文章:Nginx常用指令,基本配置,反向代理_DieHunter1024的博客-CSDN博客
我们在自己nginx的服务器中新建一个路由,配置反代,使访问/csdnImg/的请求都代理到图片的路径中
然而使用了之后依旧是403
由于HTTP Referer防盗链的校验,我们需要在nginx中增加Referer伪装绕过校验,此外,我们可以增加User-Agent伪装隐藏真实身份、绕过一些限制,伪装成浏览器防止封禁
以上就是文章的全部内容,希望能帮助你
源码地址:blog_website: 基于 node 编写的CSDN博客导出的爬虫脚本+hexo部署