开发vscode插件「markdown文章一键发布」之技术选型

本文讲述了作者在开发VSCode插件时,针对将Markdown文件一键发布到CSDN的需求,探索了使用CSDN接口、模拟登录和Puppeteer模拟输入的三种方案,最终选定Puppeteer进行键盘鼠标模拟。
摘要由CSDN通过智能技术生成


哈喽,大家好!我是「励志前端小黑哥」,我带着最新发布的文章又来了!

上篇文章《开发vscode插件「markdown文章一键发布」之项目创建、调试、打包》,咱们了解了vscode插件开发的大致流程,项目算是启动起来了。

这篇文章,我们就以CSDN平台为例,来给我们即将要开发的插件「markdown文章一键发布」进行一个技术选型。

注意:此篇文章为系列文章中的其中一篇,感兴趣的朋友请关注我,有后续更新时,能快速回来!

关注我~~不迷路~

需求回顾

此插件的大致需求是:一键发布vscode保存的markdown文件到CSDN、知乎、掘进等三方平台。

插件的详细需求分析,请参考我的另一篇文章《基于vscode插件的markdown文章一键发布客户端 - 需求梳理》

话不多说,上方案!

方案一、CSDN社区提供一些三方接口,开放平台之类的东西

最简单的方案,就是CSDN平台提供一些接口,供我们这些三方开发者调用,俗称开放平台接口

很遗憾!并没有找到有相关的接口,此方案毙了!

CSDN没提供三方接口,我也无可奈何啊!

文章配图

方案二、直接根据TOKEN/COOKIE,模拟发送CSDN的接口

对于CSDN接口的分析,网上很多人都做过,也不算太复杂,本人也尝试分析过CSDN的接口,这里整出来,供大家参考。

CSDN登录接口

因为我这采取的是微信扫码登录,所有CSDN的登录接口,其实是一个标准的OAUTH登录流程。步骤如下:

第1步,获取登录二维码,并轮询发送请求,判断二维码的扫码状态

文章配图

文章配图

第2步,根据扫码状态,获取三方ticket,根据ticket进行登录,设置cookie等信息
文章配图

说完登录,我们就来看看文章的发布接口

文章发布接口

文章发布接口也比较简单,如下:

文章配图

但是发送的请求必须通过JS进行签名,并附加到请求头上,如下几个Key,这是后面的一个坑:
文章配图

清楚了文章发布接口,我们再来看看图片的上传接口吧

图片上传接口

图片上传接口这块令我很意外,CSDN社区居然使用的是阿里的云存储,都是些很常规的开发手段了吧!

第1步,获取阿里云上传的一些签名,这个签名是临时的,一般是2小时内有效:

文章配图

第2步,带上第1步生成的签名,带上file文件,组装formdata进行上传:
文章配图

至此,接口是分析完了,整个流程还是比较清晰的。

接口调用结果

接口分析倒是不难,但只要一调用就废了。

本人花了1-2天时间来对接口进行模拟调用,登录是可以登录的,但保存文章、保存图片这两个步骤始终是没能成功!

首先是Cookietoken的存储,csdncookie字段实在是太多了,并不能明确知道其后台校验了哪一个。这么多Cookie就问你怕不怕:

文章配图

然后,JS的签名算法也是一大难题,这个签名算法,我分析了一下它转码后的代码,大概知道sha256算法,但加密出来的接口也是调用不通的:

文章配图

再然后,如果换一个三方平台,这个分析过程又得继续,比较费事费力!

基于以上三点原因,此方案也被PASS掉了!

接口调用这块就交给各位喜欢研究的有志之士吧!

方案三、puppeteer模拟键盘鼠标进行输入

既然模拟不了接口,咱么就模拟鼠标键盘进行输入吧。

既然要模拟,这里就不得不提puppeteer库了,这是Google团队自己在维护的一个NodeJS包,用它准没错!

文章配图

再结合本人之前用它做过一些爬虫相关的小应用,使用起来更是得心应手!

所以,最终的一个技术选型为方案三!

结语

这篇文章,介绍了本人在开发插件过程中做的一些思考和选择,并以CSDN为例,对其接口进行了分析,并最终确认了一套通用的开发方案。

结合此篇文章对CSDN接口的分析,告诫一下当下的开发朋友:有些路是你永远走不通的,千万不要往死胡同钻,该回头时得回头!

预告

下篇文章,咱们就来实现一下CSDN一键发文的核心功能啦,敬请期待!记得点赞关注哟~

励志前端小黑哥,全网唯一账号!
关注我,带你了解更多前端知识!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

励志前端小黑哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值