mitmproxy关于httpflow的api说明(二)

本文主要介绍mitmproxy在HTTP流量记录方面的API使用,帮助理解如何捕获和操作HTTP请求与响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


class mitmproxy.flow. Error msg:str timestamp = None   →无

一个错误。

这不同于协议错误响应(例如,HTTP代码500),它由普通HTTPResponse对象表示。该类负责指示不符合正常协议通信的错误,例如中断连接,超时,协议错误。

揭示以下属性:

msg:描述错误时间戳的消息:自时代以来的秒数
get_state

检索对象状态。

set_state

从get_state调用返回的数据加载对象状态。

HTTP

class mitmproxy.http. HTTPRequest first_line_format method scheme host port path http_version headers content timestamp_start = None timestamp_end = None is_replay = False 

一个mitmproxy HTTP请求。

classmethod wrap request 

包裹一个现有的mitmproxy.net.http.Request

anticache

修改此请求以删除可能产生缓存响应的头文件。也就是说,我们删除ETags和If-Modified-Since头。

anticomp

修改此请求以删除将压缩资源数据的标题。

constrain_encoding

基于我们可以适当解码的限制允许的接受编码值。

content

用内容编码标题解码的HTTP消息体(例如gzip)

举: 当内容编码无效且严格为True时,ValueError。

另请参阅:raw_contenttext

cookies

请求Cookie。

一个空的MultiDictView物体,如果cookie怪物吃了他们全部。

decode strict = True 

根据当前的Content-Encoding头解码主体,然后删除头。如果没有Content-Encoding标题,则不执行任何操作。

举: 当内容编码无效且严格为True时,ValueError。
encode

用编码e编码,其中e是“gzip”,“deflate”,“identity”或“br”。任何现有的内容编码都被覆盖,内容未被预先解码。

举: ValueError,当指定的内容编码无效时。
first_line_format

HTTP请求表单定义在RFC7230中

原始形式和星号形式被归为“相对”。

get_content strict:bool = True   →bytes 

用内容编码标题解码的HTTP消息体(例如gzip)

举: 当内容编码无效且严格为True时,ValueError。

另请参阅:raw_contenttext

get_text strict:bool = True   →typing.Union [str,NoneType] 

HTTP消息体使用内容编码头(例如gzip)和内容类型头字符集进行解码。

举: 当内容编码或字符集无效且strict为True时,ValueError。

另请参阅:contentraw_content

headers

消息头对象

返回: mitmproxy.net.http.Headers
host

目标主机。这可以从原始请求解析(例如,从请求行)或从代理模式推断(例如,透明模式下的IP)。GET http://example.com/ HTTP/1.1

设置主机属性还会更新主机头(如果存在)。

host_header

请求的主机/授权头。

此属性映射到request.headers["Host"]或 request.headers[":authority"]根据是HTTP / 1.x还是HTTP / 2.0。

http_version

版本字符串,例如“HTTP / 1.1”

make method:str,url:str,content:typing.Union [bytes,str] ='',headers:typing.Union [typing.Dict [str,AnyStr],typing.Iterable [typing.Tuple [bytes,bytes] ]] =()

用于创建请求对象的简化API。

method

HTTP请求方式,例如“GET”。

multipart_form

将多部分表单数据作为MultiDictView对象。一个空的multidict.MultiDictView如果内容类型表示非表单数据或内容无法解析。

键和值是字节。

path

HTTP请求路径,例如“/index.html”。保证从斜杠开始,除了可能只是“*”的OPTIONS请求。

path_components

URL的路径组件作为字符串元组。组件不引用。

port

目标端口

pretty_host

类似于host,但使用主机头作为附加的首选数据源。这在透明模式下很有用,host只有IP地址,但可能不会反映实际的目的地,因为主机头可能被欺骗。

pretty_url

喜欢url,但使用pretty_host而不是host

query

请求查询字符串作为MultiDictView对象。

raw_content

原始(编码)HTTP消息体

另请参阅:contenttext

replace pattern repl flags = 0 count = 0 

将标头,请求路径和请求正文中的repl替换为正则表达式模式。编码内容将在更换前进行解码,然后重新编码。

返回: 更换的数量。
scheme

HTTP请求方案,应为“http”或“https”。

text

HTTP消息体使用内容编码头(例如gzip)和内容类型头字符集进行解码。

举: 当内容编码或字符集无效且strict为True时,ValueError。

另请参阅:contentraw_content

timestamp_end

最后一个字节时间戳

timestamp_start

第一个字节时间戳

url

URL字符串,由请求的URL组件构成

urlencoded_form

URL编码的表单数据作为MultiDictView对象。一个空的multidict.MultiDictView如果内容类型表示非表单数据或内容无法解析。

从mitmproxy 1.0开始,键和值是字符串。

class mitmproxy.http. HTTPResponse http_version status_code reason headers content timestamp_start = None timestamp_end = None is_replay = False 

一个mitmproxy HTTP响应。

classmethod wrap response 

包裹一个现有的mitmproxy.net.http.Response

content

用内容编码标题解码的HTTP消息体(例如gzip)

举: 当内容编码无效且严格为True时,ValueError。

另请参阅:raw_contenttext

cookies

响应饼干。一个可能是空的 MultiDictView,其中的键是cookie名字符串,值是(value,attr)元组。值是一个字符串,而attr是包含cookie属性的MultiDictView。在attrs中,一元属性(例如HTTPOnly)由Null值指示。

注意事项:
更新attr
decode strict = True 

根据当前的Content-Encoding头解码主体,然后删除头。如果没有Content-Encoding标题,则不执行任何操作。

举: 当内容编码无效且严格为True时,ValueError。
encode

用编码e编码,其中e是“gzip”,“deflate”,“identity”或“br”。任何现有的内容编码都被覆盖,内容未被预先解码。

举: ValueError,当指定的内容编码无效时。
get_content strict:bool = True   →bytes 

用内容编码标题解码的HTTP消息体(例如gzip)

举: 当内容编码无效且严格为True时,ValueError。

另请参阅:raw_contenttext

get_text strict:bool = True   →typing.Union [str,NoneType] 

HTTP消息体使用内容编码头(例如gzip)和内容类型头字符集进行解码。

举: 当内容编码或字符集无效且strict为True时,ValueError。

另请参阅:contentraw_content

headers

消息头对象

返回: mitmproxy.net.http.Headers
http_version

版本字符串,例如“HTTP / 1.1”

make status_code:int = 200,content:typing.Union [bytes,str] = b'',headers:typing.Union [typing.Dict [str,AnyStr],typing.Iterable [typing.Tuple [bytes,bytes]] ] =()

用于创建响应对象的简化API。

raw_content

原始(编码)HTTP消息体

另请参阅:contenttext

reason

HTTP原因短语,例如“未找到”。这是始终None为HTTP2请求,因为HTTP2响应不包含原因短语。

refresh 现在=无

这个相当复杂和启发式功能刷新服务器响应重播。

  • 它调整日期,到期和最后修改的标题。
  • 它调整cookie过期。
replace pattern repl flags = 0 count = 0 

将消息的头文件和正文中的repl替换为正则表达式模式。编码体将在更换前进行解码,之后重新编码。

返回: 更换的数量。
status_code

HTTP状态代码,例如200

text

HTTP消息体使用内容编码头(例如gzip)和内容类型头字符集进行解码。

举: 当内容编码或字符集无效且strict为True时,ValueError。

另请参阅:contentraw_content

timestamp_end

最后一个字节时间戳

timestamp_start

第一个字节时间戳

class mitmproxy.http. HTTPFlow client_conn server_conn live = None mode ='regular' 

HTTPFlow是表示单个HTTP事务的对象的集合。

request =无

HTTPRequest 目的

response =无

HTTPResponse 目的

error =无

Error 目的

请注意,Flow可以同时具有响应和错误对象。例如,当从服务器收到响应时,可能会发生这种情况,但发送回客户端时发生错误。

server_conn =无

ServerConnection 目的

client_conn =无

ClientConnection 目的

intercepted =无

这个流程目前被截获吗?

mode =无

代理层在接收此请求时有什么模式?

backup force = False 

保存此Flow的备份,可以恢复使用对.revert()的调用。

intercept

拦截此流。处理将停止,直到恢复被调用。

kill

杀死这个请求。

modified

这个流程是否被修改?

resume

继续流动 - 在一个intercept()之后调用。

revert

恢复到最后备份状态。

replace pattern repl * args ** kwargs 

在流的请求和响应中用repl替换正则表达式模式。编码内容将在更换前进行解码,然后重新编码。

返回所做的替换次数。

记录

mitmproxy.log. Log

中央记录器,暴露于脚本作为mitmproxy.ctx.log。

debug txt 

使用级别调试登录。

info txt 

记录级别信息。

alert txt 

记录级别警报。警报与信息具有相同的紧急性,但是向交互式工具发出信号,即使用户当前没有查看事件日志,用户的注意力也应被绘制到输出。

warn txt 

记录级别警告。

error txt 

记录级别错误。

class mitmproxy.log. LogEntry msg level 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值