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相关推荐

  1. 蓝牙广播数据包_蓝牙BLE数据包格式汇总

    以蓝牙4.0为例说明: BLE包格式有:广播包.扫描包.初始化连接包.链路层控制包(LL层数据包).逻辑链路控制和自适应协议数据包(即L2CAP数据包)等: 其中广播包又分为:定向广播包和非定向广播包 ...

  2. recvfrom 无法接收 icmp 差错数据包_利用ICMP隧道技术实现C2通信

    本文为翻译文章,原文链接见文末.(翻译为脉搏首发) 一般来说,攻击者在行动过程中经常需要面对诸多的挑战,例如: 克服网络障碍(网络策略.分段等).在"隐形模式"下完成各项操作,这样 ...

  3. UDP数据包接收逻辑的优化修改以及对性能的影响

    UDP数据包接收逻辑的优化修改以及对性能的影响 #include <stdio.h> #include <stdlib.h> #include <unistd.h> ...

  4. python分析数据包_Python解析pcap数据包

    Post Views: 29,789 零.前言 历时数月,终于结束了考研初试,Blog也很长时间没有更新了,期间还是有些小伙伴来Blog看文章很是感动.以后一定会坚持更新,尽量给大家推送一些干货.这次 ...

  5. python构造数据包库_scapy构造数据包

    一.进入scapy交互界面 在终端下输入:scapy ,进入交互界面: 二.查看scapy已经实现的网络协议 ls() 列出scapy中已实现的网络协议 ls(协议类型) 查看某个协议头部字段格式 l ...

  6. android数据包放在,安卓游戏数据包是什么_安卓游戏数据包放在哪里

    现在随着各大游戏厂商的游戏效果越来越华丽,各种游戏也越来越大了.越来越多的游戏也需要用到游戏数据包了,今天小编就和机友们说说关于安卓游戏数据包是什么. 安卓游戏可以分为含数据包的和不含数据包的两个大类 ...

  7. 数据包覆盖Android,安卓数据包怎么安装 安卓游戏数据包安装教程

    安卓数据包怎么安装?安卓数据包放在哪?这是很多安卓单机游戏爱好者经常问的问题,下面小编就为各位玩家带来:安卓游戏数据包安装教程,诸如数据包存放好后,为什么还是不能正常玩都能为您解答~ 安卓数据包怎么安 ...

  8. 深度学习数据自动编码器_如何学习数据科学编码

    深度学习数据自动编码器 意见 (Opinion) When I first wanted to learn programming, I coded along to a 4 hour long Yo ...

  9. linux过滤数据包,用Tcpdump过滤数据包

    对于网络管理人员来说,使用嗅探器可以随时掌握网络的实际情况,在网络性能急剧下降的时候,可以通过嗅探器来分析原因,找出造成网络阻塞的根源.Tcpdump就是Linux平台下一个以命令行方式运行的网络流量 ...

最新文章

  1. 英特尔诺基亚将联手开发智能手机
  2. Jboss/Wildfly安装配置
  3. python用pandas读取excel_Python使用pandas读取Excel文件数据和预处理小案例
  4. 阿里二面:RocketMQ 消息积压了,增加消费者有用吗?
  5. 10 tf.data模块
  6. python js 效率_Python,Node.js 哪个比较适合写爬虫?
  7. python标准库——time模块
  8. excel向下填充公式快捷键
  9. 手机长时间不用自动断网_手机自动断网怎么回事
  10. android广播监听短信并显示内容
  11. 常用布局方式与常用css
  12. Cesium之天空盒对应方位
  13. JAVA两年5009_【JAVA】PAT 乙级 1059 C语言竞赛(测试点1、2超时) 内含1-10000的素数表和0-10000是否素数的boolean值...
  14. 关于暖茶的所有:微电影《暖茶》介绍篇,美文诗歌篇,小说简介篇
  15. 米赛尔java火_山地自行车推荐 这几款山地自行车值得入手
  16. android 多包名apk,一个项目如何编译多个不同签名、包名、资源等,的apk?
  17. 教师计算机基础知识培训简报,信息技术能力提升培训简报.doc
  18. SringCloud
  19. Java图形界面编程模拟ATM自助取款系统
  20. 【wangEditor 5】在线解析本地word,将内容展现在wangEditor中

热门文章

  1. 4种常用压缩格式在hadoop中的应用
  2. ant.design pro 登录模块分析
  3. Python标准库--time模块的详解
  4. XidianOJ 1175: count
  5. mybatis配置文件的bug
  6. 第十五节,基本数据类型,元组tuple
  7. 【Xamarin开发 Android 系列 2】VS2015跨平台开发的几种方式
  8. Windows消息机制概述
  9. AI 对不起 我还爱着你
  10. 苹果自动驾驶“排名垫底”,每1.1英里就发生一次脱离...