python拦截修改数据包_拦截指定数据、修改JS -- mitmproxy
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
mitmdump
-q:屏蔽mitmdump默认的控制台日志,只显示自己脚本中的
-s:入口脚本文件
-p:更改端口,默认为8080
修改脚本文件时,不用重启也会生效
针对 HTTP 生命周期的事件
请求:def request(self, flow: mitmproxy.http.HTTPFlow):
响应:def response(self, flow: mitmproxy.http.HTTPFlow):
其它:
def http_connect(self, flow: mitmproxy.http.HTTPFlow):
def requestheaders(self, flow: mitmproxy.http.HTTPFlow):
def responseheaders(self, flow: mitmproxy.http.HTTPFlow):
def error(self, flow: mitmproxy.http.HTTPFlow):
请求:def request(flow:flow)
flow.request.headers
获取所有头信息,包含Host、User-Agent、Content-type等字段
flow.request.url
完整的请求地址,包含域名及请求参数,但是不包含放在body里面的请求参数
flow.request.host
域名
flow.request.method
请求方式:POST、GET等
flow.request.scheme
请求类型:http、https
flow.request.path
请求的路径,URL除域名之外的内容
flow.request.get_text()
请求中body的内容,有一些http会把请求参数放在body里面,可通过此方法获取,返回字典类型
flow.request.get_content()
结果如flow.request.get_text(),返回bytes类型
flow.request.raw_content
结果如flow.request.get_content(),返回bytes类型
flow.request.urlencoded_form
MultiDictView,content-type:application/x-www-form-urlencoded的请求参数,不包含url直接带的键值参数
flow.request.multipart_form
MultiDictView,content-type:multipart/form-data
flow.request.query
返回MultiDictView类型的数据,URL的键值参数
flow.request.query.get('wd')
取得请求参数wd的值
flow.request.query.keys()
取得所有请求参数
flow.request.query.set_all(key,[value])
修改请求参数
from mitmproxy.http import flow
def request(flow:flow):
# 获取所有头信息,包含Host、User-Agent、Content-type等字段
# print(flow.request.headers)
# 域名
# print(flow.request.host)
# 请求方式:POST、GET等
# print(flow.request.method)
# 请求类型:http、https
# print(flow.request.scheme)
# 请求的路径,URL除域名之外的内容
# print(flow.request.path)
# 请求中body的内容,有一些http会把请求参数放在body里面,可通过此方法获取,返回字典类型
# print(flow.request.get_text())
# 返回MultiDictView类型的数据,URL的键值参数
# print(flow.request.query)
# 完整的请求地址,包含域名及请求参数,但是不包含放在body里面的请求参数
if 'https://www.baidu.com' in flow.request.url:
# 取得请求参数wd的值
# print(flow.request.query.get('wd'))
# 取得所有请求参数
print(list(flow.request.query.keys()))
# 修改请求参数
flow.request.query.set_all('wd',['python'])
# 打印修改过后的参数
print(flow.request.query.get('wd'))
响应:def response(flow: flow)
flow.response.status_code
状态码
flow.response.text
返回内容,已解码
flow.response.content
返回内容,Bytes类型
flow.response.get_text()
取得响应的文本
flow.response.set_text()
修改响应的文本
flow.response = flow.response.make(404)
返回404
from mitmproxy.http import flow
import json
import re
def response(flow: flow):
# 状态码
# print(flow.response.status_code)
# 返回内容,已解码
# print(flow.response.text)
# 返回内容,Bytes类型
# print(flow.response.content)
# 取得响应的文本
# print(flow.response.get_text())
# 修改响应的文本
# flow.response.set_text('123')
# 返回404
# flow.response = flow.response.make(404)
# 修改淘宝对selenium的js检测文件
targetUrl = 'https://g.alicdn.com/AWSC/uab/122.js'
if targetUrl in flow.request.url:
taobao_js =flow.response.get_text()
taobao_js = taobao_js.replace('!function(){function','!function (){Object.defineProperties(navigator,{webdriver: {get: () => false}})function')
flow.response.set_text(taobao_js)
print('已修改')
# 淘宝搜索商品时,自动打印商品信息
if 'https://s.taobao.com/search' in flow.request.url:
start = flow.response.text.strip().index('{')
end = -2
print(json.loads(flow.response.text.strip()[start: end])['mods']['itemlist']['data']['auctions'])
# 空气质量网,修改检测F12的JS
# https://www.aqistudy.cn/historydata
if 'https://www.aqistudy.cn/historydata/monthdata.php' in flow.request.url:
js = flow.response.text
js = re.sub(r'endebug.*?}\);','',js,flags=re.S)
flow.response.set_text(js)
print('已正常')
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄
×
选择打赏方式:
微信
QQ钱包
支付宝
打赏
打赏
打赏
多少都是心意!谢谢大家!!!
×
选择分享方式:
微信扫一扫,分享朋友圈
Or
手机扫一扫,精彩随身带
python拦截修改数据包_拦截指定数据、修改JS -- mitmproxy相关推荐
- 蓝牙广播数据包_蓝牙BLE数据包格式汇总
以蓝牙4.0为例说明: BLE包格式有:广播包.扫描包.初始化连接包.链路层控制包(LL层数据包).逻辑链路控制和自适应协议数据包(即L2CAP数据包)等: 其中广播包又分为:定向广播包和非定向广播包 ...
- recvfrom 无法接收 icmp 差错数据包_利用ICMP隧道技术实现C2通信
本文为翻译文章,原文链接见文末.(翻译为脉搏首发) 一般来说,攻击者在行动过程中经常需要面对诸多的挑战,例如: 克服网络障碍(网络策略.分段等).在"隐形模式"下完成各项操作,这样 ...
- UDP数据包接收逻辑的优化修改以及对性能的影响
UDP数据包接收逻辑的优化修改以及对性能的影响 #include <stdio.h> #include <stdlib.h> #include <unistd.h> ...
- python分析数据包_Python解析pcap数据包
Post Views: 29,789 零.前言 历时数月,终于结束了考研初试,Blog也很长时间没有更新了,期间还是有些小伙伴来Blog看文章很是感动.以后一定会坚持更新,尽量给大家推送一些干货.这次 ...
- python构造数据包库_scapy构造数据包
一.进入scapy交互界面 在终端下输入:scapy ,进入交互界面: 二.查看scapy已经实现的网络协议 ls() 列出scapy中已实现的网络协议 ls(协议类型) 查看某个协议头部字段格式 l ...
- android数据包放在,安卓游戏数据包是什么_安卓游戏数据包放在哪里
现在随着各大游戏厂商的游戏效果越来越华丽,各种游戏也越来越大了.越来越多的游戏也需要用到游戏数据包了,今天小编就和机友们说说关于安卓游戏数据包是什么. 安卓游戏可以分为含数据包的和不含数据包的两个大类 ...
- 数据包覆盖Android,安卓数据包怎么安装 安卓游戏数据包安装教程
安卓数据包怎么安装?安卓数据包放在哪?这是很多安卓单机游戏爱好者经常问的问题,下面小编就为各位玩家带来:安卓游戏数据包安装教程,诸如数据包存放好后,为什么还是不能正常玩都能为您解答~ 安卓数据包怎么安 ...
- 深度学习数据自动编码器_如何学习数据科学编码
深度学习数据自动编码器 意见 (Opinion) When I first wanted to learn programming, I coded along to a 4 hour long Yo ...
- linux过滤数据包,用Tcpdump过滤数据包
对于网络管理人员来说,使用嗅探器可以随时掌握网络的实际情况,在网络性能急剧下降的时候,可以通过嗅探器来分析原因,找出造成网络阻塞的根源.Tcpdump就是Linux平台下一个以命令行方式运行的网络流量 ...
最新文章
- 英特尔诺基亚将联手开发智能手机
- Jboss/Wildfly安装配置
- python用pandas读取excel_Python使用pandas读取Excel文件数据和预处理小案例
- 阿里二面:RocketMQ 消息积压了,增加消费者有用吗?
- 10 tf.data模块
- python js 效率_Python,Node.js 哪个比较适合写爬虫?
- python标准库——time模块
- excel向下填充公式快捷键
- 手机长时间不用自动断网_手机自动断网怎么回事
- android广播监听短信并显示内容
- 常用布局方式与常用css
- Cesium之天空盒对应方位
- JAVA两年5009_【JAVA】PAT 乙级 1059 C语言竞赛(测试点1、2超时) 内含1-10000的素数表和0-10000是否素数的boolean值...
- 关于暖茶的所有:微电影《暖茶》介绍篇,美文诗歌篇,小说简介篇
- 米赛尔java火_山地自行车推荐 这几款山地自行车值得入手
- android 多包名apk,一个项目如何编译多个不同签名、包名、资源等,的apk?
- 教师计算机基础知识培训简报,信息技术能力提升培训简报.doc
- SringCloud
- Java图形界面编程模拟ATM自助取款系统
- 【wangEditor 5】在线解析本地word,将内容展现在wangEditor中