乐变自动化集成
文章目录
介绍
需要在项目的自动构建流程中集成乐变上传与上线功能,相关功能都需要从命令行使用;但是由于乐变未提供 API,因此只能手工摸拟 HTTP 请求完成相应操作。
思路
使用 Charles 抓包工具对每一个操作进行抓包,然后可以将请求拷贝为 cURL 命令,再通过 cURL to Python requests 工具 将命令转换为 Python 代码。
分析每一个请求
- 将需要的参数提取出来,做成变量由外部配置传入。
- 网页里的参数需要解析对应的网页,使用正则表达式找出对应的值,然后保存并传递给其他请求。
注意:登录请求的结果是使用 JavaScript 触发跳转,导致浏览器开发工具中只能抓取当前网页的加载信息,导致无法看到登录信息,因此只能使用抓包工具进行抓包。
|
|
环境
- Python 2.7
- Requests 2.19.1
- macOS 10.13.4
- Windows 7
方案
Requests 库
注意,由于国内网络原因、操作系统等各方面原因,通过 pip 或 pipenv 安装此库并不方便;同时为了整个构建系统的完整性,需要将库嵌入到仓库中。代码可以直接从 requests/requests: Python HTTP Requests for Humans™ ✨🍰✨ 下载。
Embedding a Python library in my own package - Stack Overflow
参数处理
Cookies 需要从 login 请求中获取,然后传递给后续的所有操作。
Headers 中的参数都要检查,去除无用的参数。
上传文件时要注意除了文件之外还有两个额外的参数需要传递。
POST a Multipart-Encoded File - Quickstart — Requests 2.19.1 documentation
所有的操作都要检查返回值,包括 HTTP Response Code 与 JSON 中的 code 值。
检查包的 Bundle ID 是否是第一次提交,是的话创建新渠道,否的话更新渠道。
需要额外处理通用渠道包(PATCH_V3)版本,相关请求的参数不同。
参考资料
- Requests: HTTP for Humans — Requests 2.19.1 documentation
- Installation of Requests — Requests 2.19.1 documentation
- Convert cURL command syntax to Python requests, Node.js code
- 7.2. re — Regular expression operations — Python 2.7.15 documentation
- JSON Editor Online - view, edit and format JSON online
- Unicode编码转换 - 站长工具