转载请注明出处 https://www.cnblogs.com/majianming/p/11823669.html

mitmproxy 是一个python 写成的代理工具,可以代理https、http等协议

重点是 可以自定义脚本 例如获取请求信息并保存到数据库,修改响应等等的操作(眨眼)

可以使用pip形式安装也可以使用编译好的二进制文件安装 (二进制文件 下载地址https://mitmproxy.org/downloads/)

但是 如果你需要自定义脚本而且安装第三方库的话 需要使用pip形式的安装

pip 形式的安装,首先保证你有安装了python 已经pip

下面以windows 安装为例

如果是windows 系统 还需要安装Microsoft Build Tools( https://www.microsoft.com/en-us/download/confirmation.aspx?id=48159)

然后

执行

pip install mitmproxy

如果需要在任何地方都能执行命令 ,那么最好按照提示将类似 C:\Users\User\AppData\Roaming\Python\Python37\Scripts 的路径加入系统环境Path ,否则 你可能需要一直使用全路径的形式访问

安装成功之后 上述路径下应该有 这些可执行文件

mitmweb.exe和mitmproxy.exe是可视化的代理程序

mitmproxy.exe打开会在控制台显示所有代理请求,但是windows下不可用,

mitmweb.exe 会打开默认的浏览器并显示所有代理请求

默认代理监听端口为8080 可以在命令行中 -p 8081 这里使用8080 端口 命令mitmweb (mitmweb -p 8080 )启动

接着我们在浏览器中实验效果 为了方便 我们使用

SwitchyOmega(https://chrome.google.com/webstore/detail/padekgcemlokbadohgkifijomclgjgif)进行代理切换



然后在 选择使用刚刚创建的代理就可以了

然后访问一个网站 就可以在刚刚弹出来的窗口中看到所有的请求了 (如果是https 系统需要导入证书 证书一般在用户目录的.mitmproxy文件夹中,

如果是火狐,因为mitmproxy 的根证书不是使用浏览器的证书信任关系(火狐自己有一套证书体系),所以 需要在设置→ 隐私和安全->安全->证书->查看证书→证书颁发机构→导入 导入证书)

如果需要些脚本

可以参考一下的格式 这个脚本是将登录请求保存下来 并把信息发送到指定的服务器上

import time

import mitmproxy.http
import requests
from mitmproxy import ctx intercept_url = "xx"
report_server_url = "xxxx" class LoginIntercept: def request(self, flow: mitmproxy.http.HTTPFlow):
if intercept_url in flow.request.pretty_url:
ctx.log.info("监听地址 %s" % flow.request.pretty_url)
ctx.log.info("请求头 %s" % flow.request.headers)
info = {
"url": flow.request.pretty_url,
"headers": str(flow.request.headers),
}
init_data = {"update_timestamp": int(time.time()),
"info": info}
try:
requests.post(report_server_url, json=init_data,timeout=2)
except Exception as e:
ctx.log.error("更新信息失败!原因【%r】" % e) addons = [
LoginIntercept()
]

命令行 mitmweb -p 8080 -s script.py 启动

转载请注明出处 https://www.cnblogs.com/majianming/p/11823669.html


参考

官网文档 https://mitmproxy.org/

github例子 https://github.com/mitmproxy/mitmproxy/tree/master/examples

mitmproxy 代理介绍及入门的更多相关文章

  1. mitmproxy 代理工具介绍:rewrite和map local实现

    在接口测试中,会用到抓包工具或者代理工具,常用代理工具包括charles. burpsuite. fiddler.mitmproxy等,ssh -D参数 可实现socks5代理.网络嗅探工具可以使用t ...

  2. Redis介绍及入门安装及使用

    Redis介绍及入门安装及使用 什么是Redis Redis is an open source (BSD licensed), in-memory data structure store, use ...

  3. .NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(一)

    在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,给大家初步介绍了一下FluentValidation验证组件.那里只是概述了一下,并没有对其使用和强大功能做深入研究 ...

  4. freemarker语法介绍及其入门教程实例

    # freemarker语法介绍及其入门教程实例 # ## FreeMarker标签使用 #####一.FreeMarker模板文件主要有4个部分组成</br>####  1.文本,直接输 ...

  5. (转)私有代码存放仓库 BitBucket介绍及入门操作

    转自:http://blog.csdn.net/lhb_0531/article/details/8602139 私有代码存放仓库 BitBucket介绍及入门操作 分类: 研发管理2013-02-2 ...

  6. NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(转载)

    原文地址:http://www.cnblogs.com/asxinyu/p/dotnet_Opensource_project_FluentValidation_1.html 阅读目录 1.基本介绍 ...

  7. 读写Word的组件DocX介绍与入门

    本文为转载内容: 文章原地址:http://www.cnblogs.com/asxinyu/archive/2013/02/22/2921861.html 开源Word读写组件DocX介绍与入门 阅读 ...

  8. [转帖]Druid介绍及入门

    Druid介绍及入门 2018-09-19 19:38:36 拿着核武器的程序员 阅读数 22552更多 分类专栏: Druid   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议 ...

  9. Mysql数据库的简单介绍与入门

    Mysql数据库的简单介绍与入门 前言 一.下载与安装 1.下载 官网下载MYSQL5.7.21版本,链接地址https://www.mysql.com/downloads/.下载流程图如下: 找到M ...

随机推荐

  1. [原创] Delphi 修改新建窗体时候的默认字体格式

    Delphi 修改新建窗体时候的默认字体格式 操作步骤: 1.运行输入“regedit” 2.找到目录(这里默认以Delphi 7为例) HKEY_CURRENT_USER\Software\Borl ...

  2. nofollow标签的作用 nofollow标签添加方法

    这篇文章主要介绍了nofollow标签的作用 nofollow标签添加方法,需要的朋友可以参考下   nofollow标签的作用 nofollow标签添加方法  模拟搜狗蜘蛛   nofollow标签 ...

  3. CSU 1503: 点到圆弧的距离(计算几何)

    题目描述 输入一个点 P 和一条圆弧(圆周的一部分),你的任务是计算 P 到圆弧的最短距离.换句话 说,你需要在圆弧上找一个点,到 P点的距离最小. 提示:请尽量使用精确算法.相比之下,近似算法更难通 ...

  4. 几幅图片弄清DFT、DTFT、DFS的关系 数字信号处理

    原址:http://www.cnblogs.com/BitArt/archive/2012/11/24/2786390.html 很多同学学习了数字信号处理之后,被里面的几个名词搞的晕头转向,比如DF ...

  5. k-近邻算法(kNN)测试算法:作为完整程序验证分类器

    #测试算法:作为完整程序验证分类器 def datingClassTest(): hoRatio = 0.10 #设置测试集比重,前10%作为测试集,后90%作为训练集 datingDataMat,d ...

  6. vue中的文件上传和下载

    文件上传 vue中的文件上传主要分为两步:前台获取到文件和提交到后台 获取文件 前台获取文件,主要是采用input框来实现 <el-dialog :title="addName&quo ...

  7. angularjs radio 默认选中

    添加ng-model后checked="checked"失效,可见angularjs也不好,会失效html标准属性 解决:添加ng-checked="1" &l ...

  8. tarjan复习笔记

    tarjan复习笔记 (关于tarjan读法,优雅一点读塔洋,接地气一点读塔尖) 0. 连通分量 有向图: 强连通分量(SCC)是个啥 就是一张图里面两个点能互相达到,那么这两个点在同一个强连通分量里 ...

  9. python/pandas 正则表达式 re模块

    目录 正则解说 中文字符集 re模块常用方法 1.正则解说 数量词的贪婪模式与非贪婪模式 正则表达式通常用于在文本中查找匹配的字符串.Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪) ...

  10. 【玩转SpringBoot】异步任务执行与其线程池配置

    同步代码写起来简单,但就是怕遇到耗时操作,会影响效率和吞吐量. 此时异步代码才是王者,但涉及多线程和线程池,以及异步结果的获取,写起来颇为麻烦. 不过在遇到SpringBoot异步任务时,这个问题就不 ...