背景说明
很多网站都有文档上传功能,如百度文库,原创力,当然也有宇宙闻名的CSDN小猴子网站。如果我们要批量大规模上传文档,手工方式比较低效。自动上传的话,又缺乏网站的API,那只能自己分析上传流程,然后程序模拟了。
Book118原创力
原创力网站采用的是直接HTTP上传multipart/form-data数据方式。
该网站登录无验证码,容易模拟登录,然后获取相应的token,即可实现自动化上传了。
CSDN
采用阿里云的OSS JS SDK(aliyun-sdk-js)上传,需要相应的api key。
主要的请求流程
- https://bizapi.csdn.net/download-console-api/v1/user/sources/getAuthorized
需要两个参数fileMd5和fileSize - oss上传:https://csdn-dl-data.oss-cn-beijing.aliyuncs.com
- 提交文档其它信息: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请求时会传回这两个值。
相关链接
- 阿里云OSS SDK