如果主机名与正则表达式匹配,如何使用 mitmproxy 插件过滤对主机的请求?
How to filter a request for a host with mitmproxy addon if its hostname match a regex?
我想实现一个插件来过滤和删除对一组域的所有请求。所有域都必须与以下正则表达式匹配:
a-.+\.xxxx\.com
我不知道如何获取请求主机名:
if re.match("a-.+\.xxxx\.com", flow.request.hostname):
# Do something
在mitmproxy中,下面class用于封装请求信息:
mitmproxy.net.http.Request
Request class 的承包商是:
def __init__(
self,
host: str,
port: int,
method: bytes,
scheme: bytes,
authority: bytes,
path: bytes,
http_version: bytes,
headers: Union[Headers, Tuple[Tuple[bytes, bytes], ...]],
content: Optional[bytes],
trailers: Union[None, Headers, Tuple[Tuple[bytes, bytes], ...]],
timestamp_start: float,
timestamp_end: Optional[float],
):
因此,主机和端口在平台的某处被传递给 class 实例。
实现使用一个数据class来存储数据:
@dataclass
class RequestData(message.MessageData):
host: str
port: int
method: bytes
scheme: bytes
authority: bytes
path: bytes
因此,访问请求主机名:
if re.match("a-.+\.xxxx\.com", flow.request.data.host):
# Do something
将以下方法直接添加到请求中 class:
一个getter
@property
def host(self) -> str:
一个setter
@host.setter
def host(self, val: Union[str, bytes]) -> None:
所以下面的代码也是可以接受的:
if re.match("a-.+\.xxxx\.com", flow.request.host):
# Do something
我想实现一个插件来过滤和删除对一组域的所有请求。所有域都必须与以下正则表达式匹配:
a-.+\.xxxx\.com
我不知道如何获取请求主机名:
if re.match("a-.+\.xxxx\.com", flow.request.hostname):
# Do something
在mitmproxy中,下面class用于封装请求信息:
mitmproxy.net.http.Request
Request class 的承包商是:
def __init__(
self,
host: str,
port: int,
method: bytes,
scheme: bytes,
authority: bytes,
path: bytes,
http_version: bytes,
headers: Union[Headers, Tuple[Tuple[bytes, bytes], ...]],
content: Optional[bytes],
trailers: Union[None, Headers, Tuple[Tuple[bytes, bytes], ...]],
timestamp_start: float,
timestamp_end: Optional[float],
):
因此,主机和端口在平台的某处被传递给 class 实例。
实现使用一个数据class来存储数据:
@dataclass
class RequestData(message.MessageData):
host: str
port: int
method: bytes
scheme: bytes
authority: bytes
path: bytes
因此,访问请求主机名:
if re.match("a-.+\.xxxx\.com", flow.request.data.host):
# Do something
将以下方法直接添加到请求中 class:
一个getter
@property
def host(self) -> str:
一个setter
@host.setter
def host(self, val: Union[str, bytes]) -> None:
所以下面的代码也是可以接受的:
if re.match("a-.+\.xxxx\.com", flow.request.host):
# Do something