Python3+mitmproxy安装使用教程(Windows)

时间:2023-02-06 19:35:12

一、安装

1.1 安装mitmproxy

直接使用pip安装即可

pip install mitmproxy

pip本质上会一是安装mitmproxy库的相关代码,二是安装mitmproxy.exe/mitmdump.exe/mitmdump.exe三个可执行程序。

可执行程序被安装在$PYTHON_HOME/Scripts文件夹下,如果是conda版本的python那可以用以下命令来查看当前使用的是哪个环境。

conda env list

Python3+mitmproxy安装使用教程(Windows)

1.2 安装证书

和burpsuite类似mitmproxy默认只能拦截http,想要拦截https那就需要安装证书。

首先到$PYTHON_HOME/Scripts目录下运行一下mitmdump,完成之后在用户家目录下的.mitmproxy文件夹下即会生成证书,传到手机点击安装即可。

Python3+mitmproxy安装使用教程(Windows)

Python3+mitmproxy安装使用教程(Windows)

mitmproxy-ca.p12----PKCS12格式证书私钥

mitmproxy-ca.pem----PEM格式证书私钥

mitmproxy-ca-cert.cer----PEM格式证书,与mitmproxy-ca-cert.pem相同只是改变了后辍,适用于部分Android

mitmproxy-ca-cert.p12----PKCS12格式证书,适用于Windows

mitmproxy-ca-cert.pem----PEM格式证书,适用于大多数非Windows平台

mitmproxy-dhparam.pem----PEM格式秘钥文件,用于增强SSL安全性

Windows安装证书:双击mitmproxy-ca-cert.p12----全部默认直接点“下一步”直到安装完成。

Android安装证书:把mitmproxy-ca-cert.cer通过usb复制到手机上----点击使用证书安装器安装证书(通过qq发送到手机上时提示无法读取证书不懂什么原因)

二、网络代理配置

2.1 确保手机和电脑处于同一局域网

运行mitmproxy的电脑和运行目标app的手机要同处一个局域网才能进行代理。

如果是有笔记本那么笔记本和手机同连到一个路由器上,或者在笔记本上开启一个wifi然后用手机连上去,或者用Genymotion等模拟器运行app在模拟器设置代理,这三个方法都可以。

但如果是没有无线网卡的台式机那似乎只能使用模拟器,要用其他两种方法那得外接一个usb式无线网卡。

Python3+mitmproxy安装使用教程(Windows)

我这里用的方法是台式机外接无线网卡使用360开启一个wifi手机连上去,台式机ip为172.30.195.1手机ip为172.30.195.2。

2.2 电脑启动代理

我这里是windows,mitmproxy.exe并不支持windows,但这并没有很大关系,mitmproxy.exe本质就是一个窗口式的burpsuite的proxy+repeater。

如果要拦包改包我们用burpsuite更加好,用mitmproxy的意义在于代码能获取数据包,而这个功能是由mitmdump实现只要mitmdump.exe可运行即可。

Python3+mitmproxy安装使用教程(Windows)

和1.2一样启动mitmdump.exe

mitmdump.exe

Python3+mitmproxy安装使用教程(Windows)

2.3 手机配置代理

手机配置代理大同小异都在设置之中进行配置。比如我这里的路径是:

设置----无线和网络WLAN----长按wifi名----修改网络----显示高级选项----代理----手动---服务器主机名输入172.30.195.1(根据自己电脑ip修改)服务器端口输入8080----保存

Python3+mitmproxy安装使用教程(Windows)

2.4 代理效果查看

完成后在启动mitmdump.exe的代理窗口上即可看到手机发送的所有数据包。

Python3+mitmproxy安装使用教程(Windows)

三、Python3使用mitmproxy

我们前边2.2也提到使用mitmproxy的根本目的是想要python能修改发送的数据包,及截获服务端返回的数据包。只是像2.4那样打印出所有发送的请求对我们的目的而言是没有什么用的。

python接触发送数据包的途径是在启动mitmdump启动时使用-s选项指定处理脚本,其中通过重写request方法处理请求数据包,通过重写response方法处理响应数据包。示例如下。

启动命令:

mitmdump.exe -s example_script.py

exampl_script.py内容:

from mitmproxy import ctx

# 所有发出的请求数据包都会被这个方法所处理
# 所谓的处理,我们这里只是打印一下一些项;当然可以修改这些项的值直接给这些项赋值即可
def request(flow):
# 获取请求对象
request = flow.request
# 实例化输出类
info = ctx.log.info
# 打印请求的url
info(request.url)
# 打印请求方法
info(request.method)
# 打印host头
info(request.host)
# 打印请求端口
info(str(request.port))
# 打印所有请求头部
info(str(request.headers))
# 打印cookie头
info(str(request.cookies)) # 所有服务器响应的数据包都会被这个方法处理
# 所谓的处理,我们这里只是打印一下一些项
def response(flow):
# 获取响应对象
response = flow.response
# 实例化输出类
info = ctx.log.info
# 打印响应码
info(str(response.status_code))
# 打印所有头部
info(str(response.headers))
# 打印cookie头部
info(str(response.cookies))
# 打印响应报文内容
info(str(response.text))

Python3+mitmproxy安装使用教程(Windows)

如图箭头所指处正是经request方法处理,依次输出请求url、请求方法、host头、请求端口、所有头部及cookies

Python3+mitmproxy安装使用教程(Windows)

四、评述

我们在电脑上写爬虫,关键操作是找到请求url、制定请求数据包、解析返回结果。

从这个角度出发对app我们根本需要的似乎其实只是拦截请求数据包和响应数据包、分析他们的格式,没必要从app发出和接收数据包。

也就是似乎用burpsuite代理并进行数据包分析就完了,mitmproxy没什么用(?)。

参考:

崔庆才----《Python3网络爬虫开发实战》

Python3+mitmproxy安装使用教程(Windows)的更多相关文章

  1. Python3+mitmproxy安装使用教程(Windows)(转载)

    mitmproxy 是用于MITM的proxy,MITM中间人攻击.说白了就是服务器和客户机中间通讯多增加了一层.跟Fiddler和Charles最大的不同就是,mitmproxy可以进行二次开发,尤 ...

  2. Caffe+VS2015+python3的安装(基于windows)

    在网上找了许多安装Caffe的教程 感觉全都是杂乱无章的 而且也没有详细的 只能自己当小白鼠来实验一次了 本次配置:CUDA 8.0+ CUDNN  +VS 2015 +Python 3.5 + Ca ...

  3. 2018超详细sublime text3+python3.x安装配置教程(附常用插件安装教程)

    导读 本文是关于2018年7月最新版sublime text3+pythin3.x下载及安装配置教程,sublime text3版本为3176,python版本为3.7,安装环境是基于windows1 ...

  4. Python3+Flask安装使用教程

    一.环境配置 当前我的开发环境是Miniconda3+PyCharm.开发环境其实无所谓,自己使用Python3+Nodepad都可以.安装Flask库: pip install Flask 二.第一 ...

  5. Python3+Appium安装使用教程

    一.安装 我们知道selenium是桌面浏览器自动化操作工具(Web Browser Automation) appium是继承selenium自动化思想旨在使手机app操作也能自动化的工具(Mobi ...

  6. MySQL下载安装详情教程(Windows)

    1.下载MySQL数据库可以访问官方网站:https://www.mysql.com/ 2.点击DOWNLOADS模块下的Community模块下的MySQL Community Server进行下载 ...

  7. Python3+Scapy安装使用教程

    一.说明 之前写DoS程序的时候(见"拒绝服务(DoS)理解.防御与实现"),数据包完全是自己构造的,这其中的难处一是要清楚各层协议的字段.字段长度.字段是数值还是字符.大头还是小 ...

  8. Python3+slowloris安装使用教程

    一.说明 今天提到slowloris,这东西看着很眼熟,应该是以前局方打算用来刷竞赛积分的工具.我总觉得DoS没什么意思,但记不得怎么用了所以还是研究一下. 二.安装 slowloris就是一个pyt ...

  9. Python 3.6.3 官网 下载 安装 测试 入门教程 (windows)

    1. 官网下载 Python 3.6.3 访问 Python 官网 https://www.python.org/ 点击 Downloads => Python 3.6.3 下载 Python ...

随机推荐

  1. 使用html5的离线缓存技术

    突然想用html5的离线缓存,但是一直没有成功,在各种群里问发现很多人都没什么经验,最终终于在各种论坛找到解决方案了.下面就简单记录一下相关情况. 一.离线缓存的优点 我们都知道离线缓存主要是用来减少 ...

  2. rabbitmq之amqp queue

    rabbitmq作为一个消息中间件,暂存信息的能力是必不可少的. 镜像队列

  3. PhoneGap与Jquery Mobile组合开发android应用的配置

    PhoneGap与Jquery Mobile结合开发android应用的配置 由于工作需要,用到phonegap与jquery moblie搭配,开发android应用程序. 这些技术自己之前也都没接 ...

  4. iOS客户端的在线安装和更新——针对ADHoc证书

    这篇文章纯给自己留个备份,所以对AdHoc证书内部分发和对iOS客户端开发不了解的请直接无视. 一般在iOS游戏或应用开发过程中,正式发布到App Store之前,都需要内部的测试,客户端的安装是个不 ...

  5. window.showModalDialog 与window.open传递参数的不同?

    简单的说,就是一个在弹出窗口之后可以做其它的事,即window.open 另一个在弹出窗口之后不能做其它的事,只能是关闭了当前的窗口之后才能做其它的事,即window.showModalDialog ...

  6. iOS UIApplication 里面各const实际用意

    //后台通知:屏幕操作通知等等 UIKIT_EXTERN NSString *const UIApplicationDidEnterBackgroundNotification       NS_AV ...

  7. SSO框架介绍前篇

    SSO全程是single sign on,即单点登录,是一种统一认证和授权机制.   单点登录,指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其 ...

  8. proxifier配合ss,实现全局代理

    proxfixer配合ss的话,基本可以实现全局代理,分应用代理,或者玩外服的游戏(一般的游戏默认不走代理,本软件可以强制应用代理)      由于ss使用的是sockets5代理,一般情况下只有浏览 ...

  9. 我要曝光!CDN 省钱大法!

    七夕节刚过去,小明却特别郁闷,因为七夕当天,他错过了和远在北京的女神表白的机会.事情的经过是怎样的呢?为了在七夕当天送给自己女神一件礼物,小明在某购物网站上花重金购买了特别的礼物,礼物是从广东发送,结 ...

  10. os.path.dirname使用方法

    import os path1=os.path.abspath(__file__) print(path1)#当前文件的绝对路径 path2=os.path.dirname(os.path.abspa ...