Docker布置mitmproxy镜像使用Python脚本拦截请求

el/2024/4/20 15:35:48

​mitmproxy 就是用于 MITM 的 proxy,MITM 即中间人攻击(Man-in-the-middle attack)。用于中间人攻击的代理首先会向正常的代理一样转发请求,保障服务端与客户端的通信,其次,会适时的查、记录其截获的数据,或篡改数据,引发服务端或客户端特定的行为。本文教会读者如何用Docker搭建一个mitmproxy服务。

一、官方镜像及启动命令

官方镜像

docker pull mitmproxy/mitmproxy

1、挂载证书启动

docker run --rm -it -v ~/.mitmproxy:/home/mitmproxy/.mitmproxy -p 8080:8080 mitmproxy/mitmproxy

2、mitmdump加载脚本

-v 将本地文件挂载到docker里面

docker run --rm -it -v ~/.mitmproxy:/home/mitmproxy/.mitmproxy -v  /mitm_proxy/:/usr/mitm_proxy  -p 8899:8899 mitmproxy/mitmproxy mitmdump -p 8899  -s /usr/mitm_proxy/proxy.py

3、mitmweb

docker run --rm -it -p 8080:8080 -p 127.0.0.1:8081:8081 mitmproxy/mitmproxy mitmweb --web-host 0.0.0.0

在这里插入图片描述

二、定制自己的Docker

1、创建Dockerfile

创建自己的Docker的好处就是可以定制化下载各种各样的包

FROM mitmproxy/mitmproxy
ADD ./mitm_proxy /mitm_proxy
WORKDIR /mitm_proxy
RUN pip install PyMySQL
指令说明
FROM指定所创建镜像的基础镜像
ADD赋值指定的路径下的内容到容器中的路径下,可以为URL;如果为tar文件,会自动解压到路径下(注意: 上边命令中.和/demo_mitm之间有空格,其中.表示宿主机的当前目录,即当前脚本所在目录,/demo_mitm表示docker容器目录,合起来的意思就是将宿主机当前目录下的文件拷贝至docker容器的/demo_mitm目录,文件夹不存在会自动创建)
WORKDIR配置工作目录,这里我配置的是/demo_mitm,即在上边通过ADD指令添加的目录下
RUN在创建镜像时运行的命令,可写多个

2、Build

docker build -t demo_mitm:latest .

使用docker images,查看镜像
在这里插入图片描述

3、启动

 docker run  -i  -it -v ~/.mitmproxy:/home/mitmproxy/.mitmproxy -v  /data1/mitm_proxy/:/usr/mitm_proxy   -p 8899:8899 demo_mitm mitmdump -p 8899  -s /usr/mitm_proxy/proxy.py  

4、后台启动

 docker run  -i -d -it -v ~/.mitmproxy:/home/mitmproxy/.mitmproxy -v  /data1/mitm_proxy/:/usr/mitm_proxy   -p 8899:8899 demo_mitm mitmdump -p 8899  -s /usr/mitm_proxy/proxy.py  

5、docker run参数

docker run --help
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] Run a command in a new container-a, --attach=[] Attach to stdin, stdout or stderr.-c, --cpu-shares=0 # 设置 cpu 使用权重 --cap-add=[] Add Linux capabilities--cap-drop=[] Drop Linux capabilities--cidfile=""  # 把容器 id 写入到指定文件 --cpuset="" # cpu 绑定 -d, --detach=false Detached mode: Run container in the background, print new container id # 后台运行容器 --device=[] Add a host device to the container (e.g. --device=/dev/sdc:/dev/xvdc) --dns=[]  # 设置 dns --dns-search=[]  # 设置 dns 域搜索 -e, --env=[] # 定义环境变量 --entrypoint="" Overwrite the default entrypoint of the image # ? --env-file=[] # 从指定文件读取变量值 --expose=[] # 指定对外提供服务端口 -h, --hostname=""  # 设置容器主机名 -i, --interactive=false # 保持标准输出开启即使没有 attached --link=[]  # 添加链接到另外一个容器 --lxc-conf=[] (lxc exec-driver only) Add custom lxc options --lxc-conf="lxc.cgroup.cpuset.cpus = 0,1" -m, --memory="" # 内存限制 --name=""  # 设置容器名 --net="bridge"  # 设置容器网络模式 'bridge': creates a new network stack for the container on the docker bridge 'none': no networking for this container 'container:<name|id>': reuses another container network stack 'host': use the host network stack inside the container.  Note: the host mode gives the container full access to local system services such as D-bus and is therefore considered insecure.-P, --publish-all=false  # 自动映射容器对外提供服务的端口 -p, --publish=[] # 指定端口映射  format: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort  (use 'docker port' to see the actual mapping) --privileged=false  # 提供更多的权限给容器 --restart="" Restart policy to apply when a container exits (no, on-failure[:max-retry], always) --rm=false # 如果容器退出自动移除和 -d 选项冲突 --security-opt=[] Security Options--sig-proxy=true Proxify received signals to the process (even in non-tty mode). SIGCHLD is not proxied.-t, --tty=false  # 分配伪终端 -u, --user=""  # 指定运行容器的用户 uid 或者用户名 -v, --volume=[]  # 挂载卷 --volumes-from=[] # 从指定容器挂载卷 -w, --workdir=""  # 指定容器工作目录 
console.log("公众号:虫术")
Blog:http://404nofoundx.top/

http://www.ngui.cc/el/3376899.html

相关文章

20211209|每日算法—最接近的三数之和

疾风知劲草&#xff0c;板荡识诚臣。 勇夫安识义&#xff0c;智者必怀仁。 0x001、最接近的三数之和 地址&#xff1a;https://leetcode-cn.com/problems/3sum-closest/ 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数&#xff0c;使它…

scrapy爬虫框架基本介绍

一、介绍 Scrapy 是一种快速的高级 web crawling 和 web scraping 框架&#xff0c;用于对网站进行爬网并从其页面提取结构化数据。它可以用于广泛的用途&#xff0c;从数据挖掘到监控和自动化测试。 二、架构 三、组件 Scrapy Engine 引擎负责控制数据流在系统中所有组件中…

smali语法基础详解

一、介绍 apk文件通过apktool反编译出来的都有一个smali文件夹&#xff0c;里面都是以.smali结尾的文件。 smali语言是Davlik的寄存器语言&#xff0c;语法上和汇编语言相似&#xff0c;Dalvik VM与JVM的最大的区别之一就是Dalvik VM是基于寄存器的。基于寄存器的意思是&#…

安卓逆向 | 某社交类APP shield

*本文章仅供学习交流,切勿用于非法通途,如有侵犯贵司请及时联系删除 一、分析执行流程 initializeNative()---->cPtr = initialize(str)----->intercept(Interceptor.Chain chain, long j2) 二、Unidbg public class xhs extends AbstractJni {private final Andro…

安卓逆向 | 某社交类APP gsid

*本文章仅供学习交流,切勿用于非法通途,如有侵犯贵司请及时联系删除 一、目标参数 gsid 二、抓包 表单里面必要的几个参数checktoken、mfp、appkey,其中appkey是固定值。 0x01、checktoken jadx搜索checktoken,跟进去发现个b方法,用r0tracer hook一下这个方法,根据抓…

安卓逆向 | 某新闻类APP sign

*本文章仅供学习交流,切勿用于非法通途,如有侵犯贵司请及时联系删除 一、抓包 POST请求,url和header里面都携带一个sign,url中的sign猜测可能是根据From表单进行的加密,修改参数,显示签名错误,header里面可能是根据时间戳进行的加密。 二、Header中的sign 1、Java层分…

安卓逆向 | 某新闻类APP sn

*本文章仅供学习交流,切勿用于非法通途,如有侵犯贵司请及时联系删除 一、抓包 通过抓包,然后转换成python代码,通过删除字段的方式确定加密参数为 st:猜测为时间戳sn:猜测根据时间戳加密二、脱壳 查壳工具查看有壳,用Frida-DEXDump脱壳,不会的可以点击传送门,开箱即用…

密码学 MD5信息摘要算法

一、简介 MD5信息摘要算法&#xff08;英语&#xff1a;MD5 Message-Digest Algorithm&#xff09;&#xff0c;一种被广泛使用的密码散列函数&#xff0c;可以产生出一个128位&#xff08;16字节&#xff09;的散列值&#xff08;hash value&#xff09;&#xff0c;用于确保…

mitmproxy:ImportError: DLL load failed while importing _brotli: 找不到指定的模块。

问题: ImportError: DLL load failed while importing _brotli: 找不到指定的模块。 ImportError: DLL load failed while importing _brotli: 找不到指定的模块。 ImportError: DLL load failed while importing _brotli: 找不到指定的模块。 解决方案: https://support.mi…

(点云补全任务)GAN逆映射:Unsupervised 3D Shape Completion through GAN Inversion

&#xff08;点云补全任务&#xff09;GAN逆映射&#xff1a;Unsupervised 3D Shape Completion through GAN Inversion简介论文abstract1. introduction2. related works3. method概述3.1 Enhancing Point Cloud Uniformity3.2 Degradation in the 3D Space3.3 Loss Function …