我正在尝试找到监视基于Python的程序包的网络流量的方法。一种建议的方法是将WireShark合并到软件包中。我以前从未做过这样的事情,也无法在Internet上找到与此有关的任何教程。而且,无论我能收集到什么,似乎都建议使用PyShark作为包装器来执行任务。有人可以为我提供一些指导,例如代码片段或关于如何解决该任务的指针吗?任何帮助将非常感激。
答案 0 :(得分:0)
弄清楚,我可能可以使用TShark
或pyshark
来监视基于Python的程序包的网络流量。有关详细信息,请参见https://www.wireshark.org/docs/man-pages/tshark.html上的官方文档。可以按照以下来源做我最初想做的事情:
截至2019年7月17日的更新:
因此,对我而言,主要要注意的是,我可以使用pyshark中的两种方法来捕获数据包,即FileCapture
或LiveCapture
。 FileCapture
主要用于从捕获文件中读取数据,因此它对我没有太大帮助,因为我想捕获一些实时事件。另一方面,LiveCapture
用于从实时界面中进行读取,因此我选择使用它来监视实时网络流量。因此,我编写了以下代码片段,以捕获笔记本电脑上传输的一些tcp数据包:
@staticmethod
def get_packet_info(interface=None):
"""
Returns the size of the transmitted data using Wireshark.
Args:
interface: A string. Name of the interface to sniff on.
Returns: Size of the packet sent over WebSockets in a given event.
"""
if interface is None:
raise Exception("Please provide the interface used.")
else:
capture = pyshark.LiveCapture(interface=interface)
capture.sniff(timeout=60)
for packet in capture:
try:
packet_info = packet.pretty_print()
except:
raise Exception("Cannot determine packet info.")
return packet_info
sniff
的参数可以从timeout
更改为packet_count
。另外,我可以向LiveCapture添加更多属性以更好地控制。