• mitmproxy 可以抓到非浏览器发起的请求,(很多别的抓包工具也可以,但是我平时图省事是只用浏览器开发者工具的)
  • mitmproxy 能直接将抓到的http请求包引入到 python中 进行编辑,比如可以自己撰写脚本,将抓到的包直接构造 requests 或者 scrapy.Requests 对象,或者将抓到的包,按请求顺序一次保存在队列中,再通过 requests 类封装,便于以后爬虫开发。

mitmproxy 安装

我是直接通过python pip 安装的

pip install mitmproxy

安装过程中遇到了 ruamel-yaml 的问题:

Pip subprocess error:
ERROR: Cannot uninstall 'ruamel-yaml'. It is a distutils installed project and thus we cannot
accurately determine which files belong to it which would lead to only a partial uninstall.

经过一番Google,找到解决方案:直接在 anaconda 中删除 ruamel 相关的文件即可:

windows 路径 anaconda/Lib/site-packages/ruamel*

Linux 路径 anaconda3/lib/python3.8/site-packages/ruamel*

mitmproxy 的使用

mitmproxy 安装以后提供了三个执行程序:mitmproxy, mitmdump, mitmweb,直接在控制台输入即可。

mitmproxy 提供了 shell 交互式的抓包界面,但是只能在 Linux 环境中使用

mitmdump 后台抓包,

mitmweb 会在默认浏览器打开一个抓包可视化的界面,

我自己常用的参数:

-w 指定输出的文件

-s 指定抓包时执行的脚本

开启抓包代理以后,浏览器打开链接 http://mitm.it/ ,安装SSL证书,便于抓取 HTTPS 。

使用 mitmproxy 抓包时,发现很多请求会返回 413 错误,找到解决方案是抓包时候,添加 --set http2=false 参数,即:

mitmweb.exe -s .\gid.py --set http2=false

mitmproxy 脚本

我个人基本上用这些就够了,不同的函数对应了HTTP请求的不同阶段,脚本会在请求对应的阶段执行对应的函数,可以通过这些函数对请求进行更改,

import mitmproxy.http
import pickle
import os
import jsonclass GetSeq:def __init__(self, domains=[], url_pattern=None, ):self.num = 1self.dirpath = "./flows/"if not os.path.exists(self.dirpath):os.mkdir(self.dirpath)self.domains = domainsself.url_pattern = url_patterndef http_connect(self, flow: mitmproxy.http.HTTPFlow):"""An HTTP CONNECT request was received. Setting a non 2xx response onthe flow will return the response to the client abort theconnection. CONNECT requests and responses do not generate the usualHTTP handler events. CONNECT requests are only valid in regular andupstream proxy modes."""def requestheaders(self, flow: mitmproxy.http.HTTPFlow):"""HTTP request headers were successfully read. At this point, the bodyis empty."""def request(self, flow: mitmproxy.http.HTTPFlow):"""The full HTTP request has been read."""def responseheaders(self, flow: mitmproxy.http.HTTPFlow):"""HTTP response headers were successfully read. At this point, the bodyis empty."""def response(self, flow: mitmproxy.http.HTTPFlow):"""The full HTTP response has been read."""# 自行更改这里的保存代码,此处仅供参考def save_flow():fname = "{}flow-{:0>3d}-{}.pkl".format(self.dirpath, self.num, flow.request.host)pickle.dump({"num": self.num,"request": flow.request,"response": flow.response}, open(fname, "wb"))log_data = dict(num = self.num,url = flow.request.url,fname = fname)with open("flow_que.log", "a+", encoding="utf8") as f:s = json.dumps(log_data)f.write(s)self.num += 1# 添加自己的过滤需求if flow.request.headers.get('content-type', None) == "application/json":save_flow()if len(self.domains) == 0: save_flow()for domain in self.domains:if domain in flow.request.url:save_flow()def error(self, flow: mitmproxy.http.HTTPFlow):"""An HTTP error has occurred, e.g. invalid server responses, orinterrupted connections. This is distinct from a valid server HTTPerror response, which is simply a response with an HTTP error code."""addons = [GetSeq(domains=["baidu.com",],url_pattern = None,)
]

mitmproxy 安装,使用,抓取 HTTPS,以及python脚本编写相关推荐

  1. burpSuite之安装+配置代理+安装证书抓取https

    1.安装用的破解版,解压直接可以用 2.打开BurpSutie配置代理 使用默认的127.0.0.1:8080就好 编辑完记得Running打勾✔ 3.配置浏览器代理安装证书 对火狐浏览器配置代理及安 ...

  2. 如何用fiddler抓取HTTPS的详细教程(附fiddler安装教学)

    对于想抓取HTTPS的测试初学者来说,常用的工具就是fiddler,可是在初学时,大家对于fiddler如何抓取HTTPS真是伤了脑筋,可能你一步步按着网上的帖子成功了,那当然是极好的,有可能没有成功 ...

  3. Fiddler无法抓取HTTPS的问题,Fiddler证书无法安装终极解决方案,

    Fiddler无法抓取HTTPS的问题,Fiddler证书无法安装终极解决方案, 参考文章: (1)Fiddler无法抓取HTTPS的问题,Fiddler证书无法安装终极解决方案, (2)https: ...

  4. android 监听本机网络请求_fiddler如何抓取https请求实现fiddler手机抓包-证书安装失败100%解决...

    一.HTTP协议和HTTPS协议. (1) HTTPS协议=HTTP协议+SSL协议,默认端口:443 (2) HTTP协议(HyperText Transfer Protocol):超文本传输协议. ...

  5. App逆向——安卓7以上如何安装抓取https的包

    安卓7以上如何抓取https的包 1.从抓包软件中导出证书 以burpsuite为例,访问http://burp,导出证书即可 2.通过openssl处理pem证书 >>>opens ...

  6. 【教程】小米手机Android 7.0+抓取HTTPS请求安装Charles证书主要流程

    以下教程可能耗费你数小时时间,请注意时间. 目标:抓取HTTPS的包 如果你的手机是在Android 7.0+及其以上,想要抓取HTTPS的请求,必须要将证书(*.pem)用系统用户的权限安装,即把这 ...

  7. Charles安装后无法抓取https请求,显示 unknow

    问题描述 安装Charles后,双击打开,尝试抓取https请求,但抓取到的请求显示unknow,如下图: 问题原因 出现此问题的原因为Charles配置问题 解决办法 一. 安装证书 步骤: 1.点 ...

  8. 小米Android系统限制联网,Android 7 以上版本,绕过CA限制,抓取https

    环境 手机:小米5A 系统:MIUI 10 电脑:win10 抓包:mitmdump (可替换成其他抓包软件) 电脑需要安装: mitmdump(可替换成任意抓包软件) adb openssl 背景 ...

  9. Fiddler抓取HTTPS最全(强)攻略!

    对于想抓取HTTPS的测试初学者来说,常用的工具就是fiddler. 但是初学时,大家对于fiddler如何抓取HTTPS难免走歪路,也许你一步步按着网上的帖子成功了,这自然是极好的. 但也有可能没那 ...

最新文章

  1. 19-flutter的ListView 和 GridView的使用
  2. memcached java 多线程_springboot使用memcache缓存
  3. Qt Widgets、QML、Qt Quick的概念与区别
  4. ajax上传文件 获取失败,Ajax上传文件/照片时报错TypeError :Illegal invocation的解决方法...
  5. 字符串使用与内部实现原理
  6. 微擎 php开发手册,目录结构
  7. metasploit下载教程linux,Metasploit 3.6安装与配置之Linux篇
  8. 【计算机网络】【硬件】交换机芯片介绍
  9. 2022年高压电工考试试题模拟考试平台操作
  10. Maya---2018up4 Python 开发环境配置(win10x64)
  11. 【B站】在电脑浏览B站视频时,暂停后自动播放的BUG
  12. 怎么拿到签到王者的勋章?
  13. Hamming Embedding 汉明嵌入
  14. 前端实现lottie动画
  15. vue-codemirror搭配js代码美化使用指南
  16. 无法启动计算机中丢失HAL.dll,XP系统hal.dll文件丢失无法启动的修复办法
  17. 航班管家获得1500万美元B轮融资
  18. 风力发电功率预测数据(两个风力发电场25台风力发电机2年发电数据,时间间隔30min,含风速、风向、外界温度等天气特征)
  19. 内部函数intrins.h应用
  20. 影像组学ibex_影像组学的图像分析及模型构建

热门文章

  1. 代理重加密(Proxy Re-encryption)
  2. tf 2.0 --activations--elu
  3. 基于Java的数据交换整合平台V2.0更新了
  4. Keystone Fernet tokens
  5. qlexpress - QLExpress 规则引擎 简单案例
  6. win2003服务器360修复漏洞打不开网页,WIN2003服务器出现HookPort 服务启动失败的解决办法!...
  7. Laravel Excel文件模板导出
  8. 主机字节序与网络字节序的转换函数:htonl、ntohl、htons、ntohs【转】
  9. Expression常用方法使用
  10. 【Ubuntu18.04分区分配方式推荐与详解】