影刀RPA进阶教程:HTTP请求与API对接——让你的流程能和任何系统通信
大部分的自动化流程,都是「模拟人在网页上操作」——点击、输入、跳转。
但还有一种更高级、更稳定的方式:直接调网站的API。
API调用不依赖页面加载、不依赖元素定位、不受网页改版影响。一次调通,终生稳定。
影刀的「HTTP请求」指令,就是用来干这个的。这篇文章从零讲起:什么是API、怎么在影刀里调接口、处理鉴权、解析响应。
一、什么时候该用API,什么时候该模拟操作
| 场景 | 推荐方式 | 原因 |
|---|---|---|
| 查询店铺数据 | API | 数据量大、结构整齐 |
| 批量上传商品 | API | 一次提交几十条 |
| 获取订单列表 | API | 接口稳定 |
| 登录 | 模拟操作 | 一般有验证码,API绕不过 |
| 查看图表数据 | API优先 | 参考上一篇图表提取文章 |
| 表单提交 | 模拟操作 | 前端可能有字段校验逻辑 |
核心判断标准:如果能找到可靠的后端API,优先用API。
二、影刀中发起HTTP请求
基本的GET请求
店群矩阵自动化突破运营极限!
# 影刀的HTTP请求指令HTTP请求(方法="GET",地址="https://api.example.com/products",请求头={"Content-Type":"application/json","Authorization":"Bearer your_token_here"})->响应对象# 响应对象包含三个字段状态码=响应对象.状态码# 200表示成功响应头=响应对象.响应头 响应体=响应对象.响应体# JSON字符串带参数的GET请求
# 查询参数放在URL后面HTTP请求(方法="GET",地址="https://api.example.com/products?page=1&limit=50&keyword=连衣裙")->响应也可以用影刀的「拼接字符串」指令动态构造URL:
关键词 = "连衣裙" 页码 = 1 每页数量 = 50 地址 = "https://api.example.com/products?page=" + 页码 + "&limit=" + 每页数量 + "&keyword=" + 关键词 HTTP请求( 方法="GET", 地址=地址 ) -> 响应POST请求(提交数据)
# 提交JSON格式的数据请求体={"name":"新款连衣裙","price":128.00,"stock":500}HTTP请求(方法="POST",地址="https://api.example.com/products",请求头={"Content-Type":"application/json"},请求体=JSON转字符串(请求体)# 把字典转JSON字符串)->响应三、解析响应数据
大部分API返回JSON格式,拿到响应体后需要解析:
HTTP请求(方法="GET",地址="https://api.example.com/products?keyword=连衣裙")->响应# 解析JSON响应数据=JSON解析(响应.响应体)# JSON一般长这样:# {# "code": 0,# "data": {# "total": 500,# "items": [# {"id": 1, "name": "连衣裙A", "price": 128},# {"id": 2, "name": "连衣裙B", "price": 199}# ]# }# }如果 响应数据["code"]==0:商品列表=响应数据["data"]["items"]遍历列表(商品列表,商品):名称=商品["name"]价格=商品["price"]写入行数据(结果表,[名称,价格])否则:输出日志(f"API返回错误:{响应数据}")四、鉴权处理
API一般有三种鉴权方式,影刀都能处理:
方式1:Bearer Token(最常见)
HTTP请求(方法="GET",地址="https://api.example.com/products",请求头={"Authorization":"Bearer eyJhbGciOi...(你的token)"})->响应Token一般从登录接口返回。先调用登录API拿到token,再拿token调业务API。
# 第一步:获取Token登录体={"username":"admin","password":"pass123"}HTTP请求(方法="POST",地址="https://api.example.com/auth/login",请求头={"Content-Type":"application/json"},请求体=JSON转字符串(登录体))->登录响应 登录结果=JSON解析(登录响应.响应体)访问Token=登录结果["access_token"]# 第二步:用Token调业务接口HTTP请求(方法="GET",地址="https://api.example.com/products",请求头={"Authorization":"Bearer "+访问Token})->业务响应方式2:API Key(拼多多、TEMU等平台常用)
HTTP请求(方法="GET",地址="https://open-api.pinduoduo.com/api/products",请求体={"app_key":"你的app_key","sign":"签名字符串",# 按平台文档生成"timestamp":时间戳})->响应电商平台的API一般需要签名,签名的生成规则每个平台不同,严格按照官方文档来。
方式3:Cookie鉴权
有些内部系统是Cookie鉴权的,先从浏览器拿Cookie再放请求里:
temu店群自动化报活动案例
# 从当前浏览器页面拿Cookie获取当前网页Cookie()->Cookie字符串 HTTP请求(方法="GET",地址="https://internal.example.com/api/data",请求头={"Cookie":Cookie字符串})->响应五、分页处理
API返回数据一般有分页,需要循环拉取:
当前页=1总页数=999# 初始设为一个大数条件循环(当前页<=总页数):HTTP请求(地址="https://api.example.com/products?page="+当前页+"&limit=100")->响应 数据=JSON解析(响应.响应体)# 首次获取总页数如果 当前页==1:总条数=数据["data"]["total"]总页数=向上取整(总条数/100)输出日志(f"共{总条数}条,分{总页数}页")# 处理当前页数据遍历列表(数据["data"]["items"],商品):写入行数据(结果表,[商品["id"],商品["name"]])当前页=当前页+1六、错误处理
API调用不是100%成功的,必须加错误处理:
try:HTTP请求(方法="GET",地址="https://api.example.com/products",超时=10# 10秒超时)->响应 如果 响应.状态码==200:数据=JSON解析(响应.响应体)# 正常处理否则如果 响应.状态码==401:输出日志("Token过期,重新登录获取Token")刷新Token()否则如果 响应.状态码==429:输出日志("请求太频繁,等待60秒")固定等待(60秒)否则:输出日志(f"未知错误,状态码:{响应.状态码}")except异常:输出日志(f"请求失败:{异常}")# 重试或跳过七、推荐资源
- Postman(API调试工具):在真正写进影刀之前,先用Postman调通接口、确认返回格式
- 各平台开放平台文档:拼多多开放平台、TEMU开放平台、淘宝开放平台
- JSON在线格式化工具:方便查看复杂JSON的结构
作者:林焱
本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。