在Python中,抓包可以通过多种库实现,以下是一些常用的库和方法:
Scapy Scapy是一个强大的Python库,用于创建、发送和解码网络数据包。
可以使用`sniff`函数进行数据包嗅探,并通过`wrpcap`函数保存数据包。
示例代码:
from scapy.all import *sniff(iface="eth0", count=100, filter="tcp", prn=lambda x: x.summary())
from scapy.all import *sniff(iface="eth0", count=100, filter="tcp", prn=lambda x: x.summary())Pyshark
Pyshark是Wireshark的命令行工具`tshark`的Python接口。
可以使用`FileCapture`类从`.pcap`文件中读取数据包。
示例代码:
import pysharkcap = pyshark.FileCapture('sample.pcap')for pkt in cap:print(pkt)
subprocess
可以使用Python的`subprocess`模块调用外部命令行工具,如`tcpdump`,进行数据包捕获。
示例代码:
import subprocessproc = subprocess.Popen(["tcpdump", "-i", "eth0", "-c", "10"], stdout=subprocess.PIPE)for line in iter(proc.stdout.readline, ''):print(line)

mitmproxy
mitmproxy是一个开源的、支持Python扩展的命令行抓包工具。
可以拦截、查看、修改HTTP和HTTPS通信数据。
示例代码(使用mitmproxy进行抓包):
from mitmproxy import proxy, optionsfrom mitmproxy.tools.dump import DumpMasterclass DumpMaster(DumpMaster):def __init__(self):super().__init__()def request(flow):print(flow.request.url)def response(flow):print(flow.response.status_code)opts = options.Options(listen_host='0.0.0.0', listen_port=8080)pconf = proxy.config.ProxyConfig(opts)m = proxy.server.ProxyServer(pconf)m.addons.add(request)m.addons.add(response)m.run()
其他工具
Fiddler:
Windows平台下的HTTP代理工具,支持可视化抓包和断点设置。
Charles:macOS平台下的HTTP代理工具,支持HTTP/2,但需要付费。
AnyProxy:阿里巴巴开源的HTTP抓包工具,基于NodeJS实现。
选择合适的抓包工具取决于你的具体需求,比如是否需要图形界面、是否支持HTTPS、是否要自定义处理逻辑等。希望这些信息对你有帮助,
