配置mitmproxy
mitmproxy 是一个抓包程序,另外还有mitmweb、mitmdump两个关联组件
windows下配置mitmproxy
-
pip install mitmproxy
mitmproxy是一个控制台形式的抓包,不支持在cmd 上运行;不过可以使用mitmdump或者mitmweb,后者是一个网页形式 -
配置证书:设置浏览器的代理;chrome浏览器 为例:地址栏输入 chrome://settings回车,搜索代理点击打开代理设置,设置局域网,高级,127.0.0.1:8080; 注意检测8080和8081端口是否被占用
# cmd netstat -ano | findstr 8080 tasklist | findstr pid taskkill /pid pid
- 终端执行
mitmdump
开始监听8080端口; 浏览器地址栏输入 http:mitm:it 下载 HTTPS 证书;选择对应的平台点击下载,双击证书添加到受信任根证书管理机构中;这一步不做,所有的https请求的都会显示SSL Error; 浏览器显示“您的链接不是私密链接”
模拟器/APP中安装证书
将windows本地的mitmproxy-ca-cert.pem复制到模拟器上(MuMu模拟器找到模拟器上的更多里的文件共享,打开文件共享将证书拖放到这里)
安全选选:从SD卡上安装→共享文件→点击mitmproxy-ca-cert.pem安装
mitmweb使用
进入虚拟环境(有安装mitmproxy包):设置好代理之后(手机或者模拟器设置代理,在同一网段);执行 mitmweb;浏览器自动打开页面地址127.0.0.1:8081抓包
mitmdump使用: (需关闭mitmweb)
# 同样进入切换到安装有mitmproxy包的虚拟环境,cd到项目目录下,执行:
mitmdump -q -s addons.py --set body-size-limit=10k "~m post"
# -q 屏蔽 mitmdump 默认的控制台日志,只显示自己脚本中的
# -s 入口脚本文件
# --set body-size-limit=10k 只处理小于 10k 的请求
# "~m post" 只处理 post 方法的请求
m_script.py 示例脚本
def response(flow):
"""
获取列表页
@param flow:
@return:
"""
if 'https://list.tmall.com/search_product.htm?' in flow.request.url:
print(f'url: {flow.request.url}')
count = re.findall(r'&s=(\d+).*', flow.request.url)
try:
count = int(count[0])
page = int(count/30)
except Exception as e:
page = 0
print(f'page: {page}')
if page > 0:
html = flow.response.text
print(html)
# save_html(index=page, data=html)
网友评论