1、安装抓包工具charles
Charles官网https://www.charlesproxy.com/,下载相应系统的Charles安装包,然后一键安装即可。
详细配置可以查看https://blog.csdn.net/liuwkk/article/details/81258522
2.安装mitmproxy和mitmdump
mitmproxy是一个支持HTTP和HTTPS的抓包程序,有类似Fiddler、Charles的功能,只不过它是一个控制台的形式操作。
mitmproxy还有两个关联组件。一个是mitmdump,它是mitmproxy的命令行接口,利用它我们可以对接Python脚本,用Python实现监听后的处理。另一个是mitmweb,它是一个Web程序,通过它我们可以清楚观察mitmproxy捕获的请求。
安装
pip install mitmproxy
设置代理
首先,我们需要运行mitmproxy,命令如下所示:
启动mitmproxy的命令如下:
mitmproxy
配置代理:
手机连接代理
代理服务器主机写你的电脑ip(手机必须连接WiFi和电脑同一个局域网下)
端口默认8080,可以自定义端口,后面会介绍
下面查看自己的ip
3、安装证书
手机浏览器打开chls.pro/ssl
下载证书
安装
以小米5试例 设置>跟多设置>系统安装
在cmd命令行
mitmdump -s 指定文件
mitmdump -s script.py
在指定Python文件之识别二函数
1、request() 参数为flow,它其实是一个HTTPFlow对象,通过request属性即可获取到当前请求对象。然后打印输出了请求的请求头,将请求头的User-Agent修改成了MitmProxy。
def request(flow):
flow.request.headers['User-Agent'] = 'MitmProxy'
print(flow.request.headers)
2、Response,mitmdump也提供了对应的处理接口,就是response()方法
from mitmproxy import ctx
def response(flow):
url = flow.response.url
response = flow.response.text
1、使用Charles抓取数据
抓取的用户
下面我们来看看抓取到数据
2、使用mitmproxy抓取数据
import json, csv
#函数名必须这样写 这是mitmdump规则
def response(flow):
# print(flow.response.text)
#下面这个网址是通过fiddler获取到的 但是有些数据我们无法解密,所以需要用mitmdump捕获数据包然后做分析
if 'aweme/v1/search/item' in flow.request.url:
for user in json.loads(flow.response.text)['aweme_list']:
user_info = {}
# 用户名
user_info['nickname'] = user['author']['nickname']
# 视频名称
user_info['title'] = user['author']['nickname']
# 用户id
user_info['uid'] = user['author']['uid']
# 用户介绍
user_info['signature'] = user['author']['signature']
# 视频链接
user_info['video'] = user['video']['play_addr']['url_list'][0]
# 视频封面
user_info['video_pio'] = user['video']['origin_cover']['url_list'][0]
# 用户头像
user_info['pic'] = user['author']['avatar_medium']['url_list'][0]
with open('user_g.json', 'a+', encoding='utf-8')as f:
if not user_info['uid'] in f.read():
f.write(json.dumps(user_info, ensure_ascii=False)+'\n')
通过命令运行
mitmdump -s 指定的文件名.py
mitmdump -s 指定的文件名.py -p 指定端口