2025-12-25 upload
This commit is contained in:
48
venv/Lib/site-packages/mitmproxy/addons/block.py
Normal file
48
venv/Lib/site-packages/mitmproxy/addons/block.py
Normal file
@@ -0,0 +1,48 @@
|
||||
import ipaddress
|
||||
import logging
|
||||
|
||||
from mitmproxy import ctx
|
||||
from mitmproxy.proxy import mode_specs
|
||||
|
||||
|
||||
class Block:
|
||||
def load(self, loader):
|
||||
loader.add_option(
|
||||
"block_global",
|
||||
bool,
|
||||
True,
|
||||
"""
|
||||
Block connections from public IP addresses.
|
||||
""",
|
||||
)
|
||||
loader.add_option(
|
||||
"block_private",
|
||||
bool,
|
||||
False,
|
||||
"""
|
||||
Block connections from local (private) IP addresses.
|
||||
This option does not affect loopback addresses (connections from the local machine),
|
||||
which are always permitted.
|
||||
""",
|
||||
)
|
||||
|
||||
def client_connected(self, client):
|
||||
parts = client.peername[0].rsplit("%", 1)
|
||||
address = ipaddress.ip_address(parts[0])
|
||||
if isinstance(address, ipaddress.IPv6Address):
|
||||
address = address.ipv4_mapped or address
|
||||
|
||||
if address.is_loopback or isinstance(client.proxy_mode, mode_specs.LocalMode):
|
||||
return
|
||||
|
||||
if ctx.options.block_private and address.is_private:
|
||||
logging.warning(
|
||||
f"Client connection from {client.peername[0]} killed by block_private option."
|
||||
)
|
||||
client.error = "Connection killed by block_private."
|
||||
|
||||
if ctx.options.block_global and address.is_global:
|
||||
logging.warning(
|
||||
f"Client connection from {client.peername[0]} killed by block_global option."
|
||||
)
|
||||
client.error = "Connection killed by block_global."
|
||||
Reference in New Issue
Block a user