教你用 Python 操控你的上网请求( 二 )


文章插图
 
然后我们再单击 Resume 按钮,将返 回信息放行,就会在浏览器看到如下图的效果:

教你用 Python 操控你的上网请求

文章插图
 
好了,以上我们只是手动简单操作了下,主要是可以让大家明白它的原理,接下来我们就来演示,通过 Python 脚本来自动完成数据的操作 。
Python 脚本示例接下来我们通过 Python 写一段脚本,实现在你用百度搜索任意内容时,都把你搜索的内容改为“建议使用Google搜索”,并且把请求返回内容里面,所有“百度”的字串都自动替换为“谷歌”,这个小脚本让我们同时实现了修改请求和返回内容,现在就上代码:
# baidu.py# 引入对应模块import mitmproxy.httpfrom mitmproxy import ctx, httpclass Baidu:# 请求时需要处理def request(self, flow: mitmproxy.http.HTTPFlow):if flow.request.host != "www.baidu.com" or not flow.request.path.startswith("/s"):returnif "wd" not in flow.request.query.keys():ctx.log.warn("can not get search word from %s" % flow.request.pretty_url)return# 打印日志ctx.log.info("正在搜索: %s" % flow.request.query.get("wd"))# 替换搜索关键词flow.request.query.set_all("wd", ["建议使用Google搜索"])# 请求返回时需要处理def response(self, flow: mitmproxy.http.HTTPFlow):# 获取请求返回的文本并替换text = flow.response.get_text()text = text.replace("百度", "谷歌")flow.response.set_text(text)# 增加插件addons = [Baidu()]写好代码保存,接下来我们重新启动 mitmweb ,这次命令后需要加上参数使 Python 脚本生效,在命令行输入: mitmweb -s baidu.py ,启动完成后我们回到浏览器打开百度随便输入个内容进行搜索,你会看到效果如下图所示:
教你用 Python 操控你的上网请求

文章插图
 

教你用 Python 操控你的上网请求

文章插图
【教你用 Python 操控你的上网请求】 
可以看到上面我们随便个词点搜索,返回的结果都是“建议使用Google搜索”,并且右上角“百度”也都被替换为了“谷歌” 。
总结本文为大家介绍了 mitmproxy 工具的安装以及如何使用,并写了一段小脚本简单实现了用它如何修改拦截的请求和返回的内容 。当然它的功能不止这么简单,有了它我们可以做很多事情,有兴趣的话后续再为大家介绍 。




推荐阅读