【项目背景】
作为一个运营,每天都需要汇总分析店铺数据、回复顾客评价咨询,
手里几十个店铺,就不宜在这些基础工作上花太多时间。
一边学一边摸索,尝试过很多解决方案,
纯代码请求平台数据,执行效率高,但有时会遇到请求参数加密反爬、cookie时效较短无法持久运行等问题;
纯RPA方式能轻松突破常见反爬手段,但有时存在元素无法选取(比如实时订单页面刷新过快、前端页面结构变动)、交互过程繁琐问题。
鉴于此, 采取了影刀 + mitmproxy的方式, 影刀负责请求数据,mitmproxy负责响应监听,python负责交互和业务逻辑
以下是流程汇总,仅供参考
【环境准备】
一、mimtproxy 安装及配置
1. 安装python开发环境
影刀的python环境虽可安装mitmproxy库,但无法执行mitmdump命令,故需额外安装相关环境。
python安装过程较简单,此处略过。
2. 安装mitmproxy库
cmd环境下执行 pip install mitmproxy 即可
3. 证书安装及代理配置
安装完mitmproxy后,cmd环境下执行mitmdump命令,
此时会在 C:\users\用户名\ 目录下生成.mitmproxy文件夹,该文件夹包含相关证书
mitmproxy模式监听8080端口,打开网络代理设置为127.0.0.1:8080(如图)

浏览器访问mitm.it即会跳转至证书安装页面(如图),下载后一路下一步即可

# mitmproxy官方文档: https://docs.mitmproxy.org/
4. 启动监听及业务脚本
将美团外卖、饿了么、拼多多等商家后台的业务url填写到python脚本
将相关业务代码保存为 业务代码.py (见示例)
cmd环境执行网络监听 mitmdump -q -s 业务脚本.py
from mitmproxy import http
import json
import meal
def response(flow: http.HTTPFlow):
flow_url = flow.request.pretty_url
param = flow.request.text
if ele_comm_url in flow_url and flow.request.method == 'POST':
payload = json.loads(param)
isReplied = payload.get('params').get('rateQuery').get('isReplied')
if isReplied == False:
data = flow.response.json()
ksid = payload.get('metas').get('ksid')
meal.handle_ele_comm(data, ksid)
# 鉴于以上流程较复杂,其它同事上手时会有困难,可将以上内容打包,即可免除上述流程
二、 启动影刀流程 "进入商家后台 - 点击相关页面或按钮(请求业务数据)" (此处较简单,略过示例)
三、 业务处理
影刀操控浏览器发起数据请求,mitmdump捕获响应数据后,将响应数据转发业务处理函数(见前述示例代码)
【适用场景】
自动抓取美团、饿了么评价并自动回复
自动抓取美团、饿了么、京东、千牛、拼多多运营数据,生成运营日报