最近在学习崔大佬的《python3网络爬虫开发实战》。
在11.2节,按照书上说的, 运行mitmdump
的时候,会显示一长串的数据,并且在我们使用脚本截获命令的时候,对应着也会更改。
书上的例子是:
def request(flow):
flow.request.headers['User-Agent'] = 'MitiProxy'
print(flow.request.headers)
可奇怪的是,我无论怎么运行,就是无法在mitmdump -s scripyt看到我想要的数据,对应着我的手机上访问的http://httpbin.org/ge
中的user-anget
也没有变为MitiProxy
:
而书上的例子得出的结果是类似于:
我翻遍了百度,换各种关键字搜索都没找到我想要的答案,难道真的只有在Linux
环境下使用mitmporxy
了吗?想到还要去整个虚拟机,安装,就很麻烦。
我继续找着答案,突然在一篇博客,找到了我需要的解释!
使用 mitmproxy + python 做拦截代理
该文中有一行引起了我的注意:
我的直觉告诉我这是正确答案,因为我想要的数据输出也是在控制台,结合这篇文章前面的内容,我知道了mitmdump
这是默默截获数据,真正显示处理数据还是在mitmweb
内的。
我赶紧尝试了下,试着运行:
mitmweb -s script.py
回车,回到手机,激动地打开http://httpbin.org/get
网站,查看测试结果,果不其然,成功了!
再看看控制台:
看来没错。
我想了想原因,可能是因为书本是18年写的,到现在2020年,有些地方还没更新,而在现实数据这块,命令已经改变了,所以根据书本上来的话,是错误的方式。
如果有小伙伴运行时出现 No such script
,那么参考这篇文章:
mitmdump控制台如何打开/为何使用mitmdump -s script.py命令会No such script
如果觉得有帮助,就请点个赞再走吧。