【了解篇】python 抓取网络 psutil.net_io_counters 和 scapy.all 的区别


psutil.net_io_counters 和 scapy.all 是两个用于网络数据处理和监控的不同库和方法,它们各自的功能和侧重点不同。

1. psutil.net_io_counters

psutil 是一个用于跨平台系统和进程监控的库,psutil.net_io_counters 函数主要用于获取关于网络接口的 I/O 统计信息。它提供了以下数据:

  • bytes_sent: 已发送的字节数。
  • bytes_recv: 已接收的字节数。
  • packets_sent: 已发送的数据包数量。
  • packets_recv: 已接收的数据包数量。
  • 其他可能的网络接口指标(如错误和丢包数)。

使用场景:

  • psutil 适用于需要查看系统级别的网络统计数据和性能监控的场景。
  • 由于它是系统级 API,使用 psutil 可以获得相对准确的网络流量信息,比如总的接收和发送字节,而不关注包级别的数据。

示例:

import psutil

net_io = psutil.net_io_counters()
print(f"已发送字节: {net_io.bytes_sent}, 已接收字节: {net_io.bytes_recv}")

2. scapy.all

scapy 是一个强大的数据包构建、分析和嗅探工具。通过 scapy,可以对网络数据包进行相对低级的监控和操作,包括捕获、发送和操作个别的数据包。
使用场景:

  • scapy 适用于需要捕获、分析、构建和发送个别网络数据包的场景。例如,可以用它检测特定类型的流量、发起网络攻击(如 DDoS 测试等)、安全检测等。
  • scapy 允许用户访问更细粒度的网络层级数据,能够分析每个数据包的内容、构建自定义数据包并发送。

示例:

from scapy.all import sniff

def packet_callback(packet):
    print(packet.summary())

sniff(prn=packet_callback, store=0)  # 捕获数据包并处理

总结

  • psutil: 适用于需要获取总体网络 I/O 统计信息的高层次监控,关注流量和性能。
  • scapy: 适用于需要深入到抓取、分析和发送数据包的低层次操作。适合进行更复杂的网络分析和数据包处理任务。

可以根据具体需求选择合适的工具。如果需要高层的整体统计,用 psutil;如果需要包级的操作和分析,用 scapy。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值