scapy 抓包解析http,直接返回内容
时间: 2024-03-16 11:41:13 浏览: 135
使用Python实现windows下的抓包与解析
可以使用Scapy库抓包解析HTTP,并返回HTTP响应内容。以下是一个示例代码:
```python
from scapy.all import *
def sniff_http(packet):
if packet.haslayer(TCP) and packet.haslayer(Raw):
if packet[TCP].dport == 80 or packet[TCP].sport == 80: #判断是否为HTTP协议
load = str(packet[Raw].load) #获取数据包负载
if 'GET' in load or 'POST' in load: #判断是否为HTTP请求
http_header = load.split('\r\n\r\n')[0] #获取HTTP头部信息
if 'Host' in http_header:
host = http_header.split('Host: ')[1].split('\r\n')[0] #获取主机名
method = load.split(' ')[0] #获取HTTP请求方法
path = load.split(' ')[1] #获取HTTP请求路径
url = 'http://' + host + path #构造完整的URL
http_request = method + ' ' + path + ' HTTP/1.1\r\nHost: ' + host + '\r\n\r\n' #构造HTTP请求
#发送HTTP请求并接收响应
response = sr1(IP(dst=host)/TCP(dport=80)/Raw(load=http_request), verbose=False)
if response:
print(response[Raw].load) #打印HTTP响应内容
#启动抓包
sniff(filter='tcp', prn=sniff_http)
```
注意:这种方式只适用于明文传输的HTTP协议。对于HTTPS协议,需要进行SSL握手并解密才能获取HTTP响应内容。
阅读全文