python抓包截取http记录日志

#!/usr/bin/python

import pcap

import dpkt

import re

def main():

pc=pcap.pcap(name="eth1")                                             # 抓取 eth1

pc.setfilter(‘tcp port 80‘)                                                       # 过滤表达式 tcp port 80

for p_time, p_data in pc:                                                      #

ret = main_pcap(p_time, p_data)

if ret:

print ret

def main_pcap(p_time, p_data):                                                 # 解码

out_format = "%s\t%s\t%s\t%s\t%s\tHTTP/%s"

p = dpkt.ethernet.Ethernet(p_data)                                     #

ret = None

if p.data.__class__.__name__ == ‘IP‘:

ip_data = p.data

src_ip = ‘%d.%d.%d.%d‘ % tuple(map(ord,list(ip_data.src)))

dst_ip = ‘%d.%d.%d.%d‘ % tuple(map(ord,list(ip_data.dst)))

if p.data.data.__class__.__name__==‘TCP‘:

tcp_data = p.data.data

if tcp_data.dport==80:

if tcp_data.data:

h = dpkt.http.Request(tcp_data.data)                                            # http解码

pre = "^/.*$"

if match(pre, h.uri):                                                                           # url 重写

http_headers = h.headers

host = h.headers[‘host‘]

url = "http://" + host + h.uri

else:

url = h.uri

# datetime srcip dstip GET /index.htm HTTP/1.1                       # 输出日志格式

ret = out_format % (p_time, src_ip, dst_ip, h.method, url, h.version)

return ret

def match(pre, line):

p = re.compile(pre)

m = p.match(line)

return m

# 脚本运行也达到了武星预期的要求,OK。

# 后续记录下referer 还是很有必要的。

======================================================================================

安装

1. python 2.5

2. pypcap               python的抓包函数库

http://code.google.com/p/pypcap/downloads/list

3. dpkt                     python的解包函数库

http://code.google.com/p/dpkt/downloads/list

4. winpcap             python支持pacp的驱动

如果有wireshark的话,就直接安装wireshark吧,里面带着winpcap

在Linux中有个库叫做libpcap可以胜任。libpcap是一个简单而又强大的数据包捕获函数库,可以在多种操作系统上运行。

关于libpcap有几个很好的教程:

http://www.tcpdump.org/pcap.htm (官方向导,英文,写得很适合新手)

http://blog.csdn.net/bat603/archive/2006/09/04/1175729.aspx (主要函数中文说明)

http://blog.csdn.net/bat603/archive/2006/09/04/1176251.aspx (入门源码)

时间: 2024-08-30 12:00:25

python抓包截取http记录日志的相关文章

python 抓包与解包

我使用的环境为:Windows10.python3.6.scapy 2.4.0 一.基本知识 Sniff方法定义: sniff(filter="",iface="any", prn=function, count=N) filter的规则使用 Berkeley Packet Filter (BPF)语法 iface用来指定要在哪个网络接口上进行抓包(通常不指定即所有网络接口) prn指定回调函数,每当一个符合filter的报文被探测到时,就会执行回调函数,通常使用l

python抓包

socket+struct dpkt+pcap 基于wincap(win) 捕获报文:socket pcap 报文解析:struct  dpkt

python 进行抓包嗅探

一.绪论 最近一直想弄一个代理,并且对数据包进行解读,从而完成来往流量的嗅探.于是今天学习了一下如何使用Python抓包并进行解包. 首先要用到两个模块 dpkt(我这边ubuntu16.04 LTS)Python2.7中默认安装的 pcap安装 1 pip install pypcap 然后来说一下,pypcap主要用来抓包或者说是sniffer的,dpkt用来解包的,我对dpkt的认知是解包传输层以及传输层一下的数据比较不错,但是对于应用层数据的解读就是渣渣.尤其是HTTP,所以HTTP部分

linux+jmeter+python基础+抓包拦截

LINUX 一 配置jdk 环境 *需要获取root权限,或者切换为root用户 1.windows下载好,去 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 官方网站下载jdk(linux相应版本) 2.在usr目录下创建java路径文件夹 [root bin]cd /usr mkdir java 3.将jdk-8u60-linux-x64.tar.gz放到刚才创建的文件夹下

Python+Requests接口测试教程(1):Fiddler抓包工具

本书涵盖内容:fiddler.http协议.json.requests+unittest+报告.bs4.数据相关(mysql/oracle/logging)等内容.刚买须知:本书是针对零基础入门接口测试和python+requests自动化的,首先本书确实写的比较基础,对基础内容也写的很详细,所以大神绕道. 为什么要先学fiddler? 学习接口测试必学http协议,如果直接先讲协议,我估计小伙伴们更懵,为了更好的理解协议,先从抓包开始.结合抓包工具讲http协议更容易学一些. 1.1 抓fir

Python 爬虫知识点 - 淘宝商品检索结果抓包分析(续二)

一.URL分析 通过对“Python机器学习”结果抓包分析,有两个无规律的参数:_ksTS和callback.通过构建如下URL可以获得目标关键词的检索结果,如下所示: https://s.taobao.com/search?data-key=s&data-value=44&ajax=true&_ksTS=1482325509866_2527&callback=jsonp2528&q=Python机器学习&imgfile=&js=1&stat

python mitmdump抓包与redis订阅消息

本实例实现需求 django项目,后端采用python mitmdump 扩展脚本"sdk_log.py"实时抓取与过滤4399SDK 客户端日志,并且使用redis发布. 前端使用websocket连接,订阅某频道信息,实时输出对应游戏的客户端日志到页面中. 开发环境 win7,python3, 安装redis_server 参考 在windows x64上部署使用Redis 安装python redis python3 -m pip install redis 安装python m

python+pcap+dpkt抓包小实例

通过pcap与dpkt抓包解包示例: #!/usr/bin/env python # -*- coding: utf-8 -*- """ 网络数据包捕获与分析程序 """ import pcap import dpkt import json import re import time from urllib import unquote # 过滤输出目标ip dst_lists = [ '203.66.1.212', # nslookup dp

python Pycurl 库 —— 实现对网站抓包分析

经常使用基调网络的同学,可能对基调网络对页面元素的性能展示感觉很好.它可以做到对一条URL做详细的检测,包括:阻塞时间.DNS解析时间.建立连接时间.SSL握手时间.发出请求时间.首包时间等. 其实,我们也可以做到.比如Python pycurl 库就可以做到对数据的收集,然后可以对收集的数据写入redis或者Mysql.最后前端使用echars通过图形的形式进行展示出来. echars是百度一个开源项目,功能很强大(项目URL:http://echarts.baidu.com)可以将数据通过各