转载请注明出处 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. 报数问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位

    n = int(input("请输入人数:")) list_p = list(range(1,n+1)) #将所有人放在一个数字里面 count = 0 #设置一个变量,用户计算报 ...

  2. FMXUI TEXTVIEW代码设置IMAGEINDEX

    FMXUI作为一个开源的控件,真是DELPHIER的福音,向作者致敬.​TEXTVIEW非常好用,在属性面板中有ImageIndex属性,可以方便设置图标,在实际应用中图标状态需要改变,但在代码设置时 ...

  3. InputStream接口的常见实现类

    一. FileInputStream FileInputStream可以从系统文件中获取输入字节,也从可以从诸从图象数据的的原始字节流中读取. 如果是读取字符串流,推荐使用FileReader. 感觉 ...

  4. Java IO流总结(二)-示例

    1.使用文件操作的9大方法完成文件的判断 判断文件或目录是否存在 : exits() 返回值boolean型 * 判断是否是文件: isFile() boolean * 判断是否是目录: isDiec ...

  5. c# 如何获取系统管理员权限(UAC) 及判断当前是否是管理员权限

    环境说明: VS2012,windows 7  亲自验证过win7 和xp ,XP直接不弹框,因为XP没有UAC控制机制 步骤1: 右键项目-->属性-->安全性-->选中[启用Cl ...

  6. jenkins的安装与使用

    以前用过hudson,前段时间听以前同事说,他现在搞jenkins,zookeeper...,现在的项目 也是手动的,所以我也就搞了一个jenkins.期间也遇到好多问题,主要是自己水平不够,网上的都 ...

  7. 10.14 socket 网络编程

    简单的例子 socket客户端 import socket client = socket.socket() #声明socket类型,同时生成socket连接对象 client.connect(('l ...

  8. [HDU2604]Queuing

    题目:Queuing 链接:http://acm.hdu.edu.cn/showproblem.php?pid=2604 分析: 1)将当前格和上一格合并当作一个状态,考虑下一个格子放0(m)还是1( ...

  9. soj#552 449E Jzzhu and Squares

    分析 https://www.cnblogs.com/Memory-of-winter/p/11209128.html 代码 #include<bits/stdc++.h> using n ...

  10. Visual Studio Code - 调试 Node.js 代码

    官方的文档写的太好了!大家还是看参考资料吧. 参考资料: Debugging in Visual Studio Code Debug Node.js Apps using Visual Studio ...