一些文档上传网站实现原理的分析

背景说明

很多网站都有文档上传功能,如百度文库,原创力,当然也有宇宙闻名的CSDN小猴子网站。如果我们要批量大规模上传文档,手工方式比较低效。自动上传的话,又缺乏网站的API,那只能自己分析上传流程,然后程序模拟了。

Book118原创力

原创力网站采用的是直接HTTP上传multipart/form-data数据方式。
该网站登录无验证码,容易模拟登录,然后获取相应的token,即可实现自动化上传了。

CSDN

采用阿里云的OSS JS SDK(aliyun-sdk-js)上传,需要相应的api key。

主要的请求流程

  1. https://bizapi.csdn.net/download-console-api/v1/user/sources/getAuthorized
    需要两个参数fileMd5和fileSize
  2. oss上传:https://csdn-dl-data.oss-cn-beijing.aliyuncs.com
  3. 提交文档其它信息:https://upload.csdn.net/v1/user/sources/saveSource

通过Devtool里观察请求,可以看到oss js client上传的地址为https://csdn-dl-data.oss-cn-beijing.aliyuncs.com/down11/20230918/e92fda210d61b278e7165bfb8e17b025.pdf?uploads=,采用XHR断点,观察调用栈,结合OSS JS SDK的说明,可以推断出它采用的是分片上传,调用的是multipartUpload()方法,于是设置断点:

在这里插入图片描述
即可看到三个主要参数keyId, keySecret和token,这些是临时的会话秘钥信息。

这个三个参数什么时候传递到客户端的?可以采用拦截器搜索一下:

在这里插入图片描述
我们采用Hetty作为代理,然后搜accessKeyId的值,即可发现getAuthorized请求时会传回这两个值。

相关链接

猜你喜欢

转载自blog.csdn.net/jgku/article/details/132554187