简易爬虫(爬取本地数据)

简易爬虫(爬取本地数据)

这段时间空闲下来了,想来总结一下这次综合实训自己做的一个项目,还是第一次自己单独实现一个项目,毕竟是个菜鸟,只是简单实现了一下基本功能。

这个项目是基于Java编写的,爬取本地网络流量并根据头部进行简要的分析,同时编写了图形界面,在图形界面上进行展示,当然这里有些代码是参考的网上别人编写的好的代码,这里感谢大家的分享,下面正式介绍这个项目。

1、项目要求

                              网络流量在线分析系统的设计与实现

简介:设计并实现一个网络流量的分析系统。该系统具有以下功能:

(1)实时抓取网络数据。

(2)网络协议分析与显示。

(3)将网络数据包聚合成数据流,以源IP、目的IP、源端口、目的端口及协议等五元组的形式存储。

(4)计算并显示固定时间间隔内网络连接(双向流)的统计量(如上行与下行的数据包数目,上行与下行的数据量大小等)。在这些统计数据的基础上分析不同网络应用的流量特征。

实训主要包括:

(1)能够实时抓取网络中的数据包。并实时显示在程序界面上。用户可自定义过滤条件以抓取所需要的数据包。

(2)分析各个网络协议格式,能够显示各协议字段的实际意义。例如,能够通过该程序反映TCP三次握手的实现过程。

(3)采用Hash链表的形式将网络数据以连接(双向流)的形式存储。

(4)计算并显示固定时间间隔内网络连接(双向流)的统计量(如上行与下行的数据包数目,上行与下行的数据量大小等)。例如,抓取一段时间(如30分钟)的网络流量,将该段时间以固定时长(如1分钟)为单位分成若干个时间片,计算网络连接在每一个时间片内的相关统计量。并在上述统计数据的基础上分析不同应用如WEB、DNS、在线视频等服务的流量特征。注意,可根据实际的流量分析需要自己定义相关的统计量。

2、项目完成结果

这里这个项目完成了上面的大部分内容,但是TCP三次握手的分析,简单来说就是判断TCP中 seq 、ack、ACK 字段的值,这里并没有完成,在调试的过程中只能捕捉到第一次握手,第二次握手和第三次握手并没有捕捉到,我也不明白为什么,以后有时间会重新修改这个项目并上传。

这里放一下程序的一些截图:

程序界面:

捕捉以太网MAC帧:

 简要分析MAC帧里面的字段含义:

number:序号
timestamp:时间戳
wire length:帧长
captured length:捕获长度
----------------------------------------Frame----------------------------------------

Frame:
Frame: number:序号
Frame: timestamp:序号
Frame: wire length:帧长
Frame: captured length:捕获长度
Frame:
Eth: ******* Ethernet - "Ethernet" - offset:偏移量 (0x0) length:长度 protocol suite:协议族(LAN、WAN、WLAN、VLAN、VPN)
Eth:
Eth: destination:目的MAC
Eth: .... ..0. .... .... = [0] LG bit:或称UL位,0为供应商分配,当以管理方式将设备的MAC地址更改为其他地址时将此位设置为1
Eth: .... ...0 .... .... = [0] IG bit:0为单播MAC地址,1为多播或广播地址
Eth: source = 来源MAC
Eth: .... ..0. .... .... = [0] LG bit
Eth: .... ...0 .... .... = [0] IG bit
Eth: type :以太网帧类型(IPv4、ARP、IPv6、PPP)
Eth:

程序中还获取了ARP、HTTP、ICMP、IP(主要是IPv4)、RTP、TCP、UDP,当然只是利用是否含有帧中含有该头部来进行判断。

至于对不同流量的特征流量的,则是根据 DNS 是基于 UDP 和 TCP 53 号端口来进行分析获取,网页流量获取则是 HTTP ,当然现在大部分网页都采用了 https 密文的方式来进行网络传输,大家需要抓取 http 的时候可以打开含有多图片的页面,网页上的图片传输还是利用的 http。

还有项目中的 RTP 实时传输协议,主要是传输视频流量的,但是只有在 Micosoft Store 里面下载的视频应用是基于这个协议,这点需要注意,单独的国内很多视频应用都不是基于这个应用。

 3、项目配置

本项目基于Java编写,所以就是正常的 JDK 和 eclipse 。用到的其他资源包的话这里没有使用 Maven 这些构造工具,而是采用了添加 jar 包的方式,主要的配置我之前的博客里已经给出了介绍,大家可以直接查看我之前的博客。

这里给出链接:JnetPcap简述

 4、项目资源

这里的话我将项目里面的代码放在了github上,有兴趣的可以进行下载:https://github.com/czc-V/Spider/tree/master

同时我也将项目中用到的一些 jar 包、jar 包使用文档、抓取数据的分析和代码直接放在了博客园里,有需要的可以进行下载: https://files.cnblogs.com/files/hzauxx/%E7%AE%80%E6%98%93%E7%88%AC%E8%99%AB.zip

吾生也有涯,而知也无涯。

原文地址:https://www.cnblogs.com/hzauxx/p/11193458.html