mitmdump相关
一、mitmdump简介
二、安装
三、问题
一、mitmdump简介
当写爬虫时,往往最直接的就是抓包,破解接口,然后串改,然后获取数据。当遇上反爬手段比较严格,比如在参数里加入对所有参数动态加密就难了。
有两种选择路线,要么破解app,拿到加密逻辑。(难度很高,而且目标得兼容旧版本,不然新版本更新,强制更新后又得再次破解)
还有一种就是使用手机通过模拟人的操作,在数据传输时使用代理,在中间截取数据,这样做就可以不用破解app,但是代价就是爬取效率就相当低。
而mitmdump就是python写的比较好用的中间代理。
二、安装
执行命令
pip install mitmdump
安装完成后,执行命令,就会开启8080端口的代理,并且会生成证书在用户目录下
mitmdump
证书目录:
也可以通过链接代理后,访问 mitm.it 在网页上下载
2.手机连接一般就是在wifi里面设置ip地址跟端口,就可以使用代理了。
3.使用python脚本,新建文件
class GetMa: def __init__(self):# 设置上游代理 def request(self, flow: mitmproxy.http.HTTPFlow): pass # flow.request.headers['User-Agent'] = 'MitmProxy' # print('heads------', flow.request.headers) def response(self, flow: mitmproxy.http.HTTPFlow): # if not self.globalData['catching']: # return
addons = [
GetMa()
]
然后执行命令
mitmdump -s test.py
test.py要用你自己新建的文件名
request,是设置请求头,response是返回的信息
如果需要过滤接口
def response(flow: mitmproxy.http.HTTPFlow): url = 'https://***.***.**/**'if flow.request.url.startswith(url): print('这里是目标接口')
三、问题
1.命令问题,当文件夹中有 mitmdump.py文件时,执行 mitmdump -s mitmdump.py
会导致执行失败,命令行可能被动执行了mitmdump.py文件,而没有执行mitmdump 程序。注意文件的命名就好