博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简易爬虫(爬取本地数据)
阅读量:4946 次
发布时间:2019-06-11

本文共 2203 字,大约阅读时间需要 7 分钟。

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

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

 

这个项目是基于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 包的方式,主要的配置我之前的博客里已经给出了介绍,大家可以直接查看我之前的博客。

这里给出链接:

 

 

 4、项目资源

这里的话我将项目里面的代码放在了github上,有兴趣的可以进行下载:

同时我也将项目中用到的一些 jar 包、jar 包使用文档、抓取数据的分析和代码直接放在了博客园里,有需要的可以进行下载:

 

 

 

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

 

转载于:https://www.cnblogs.com/hzauxx/p/11193458.html

你可能感兴趣的文章
关于UI资源获取资源的好的网站
查看>>
Nginx代理访问提示ERR_CONTENT_LENGTH_MISMATCH异常的解决方案
查看>>
WPF自定义搜索框代码分享
查看>>
js 基础拓展
查看>>
Windows下常用测试命令
查看>>
SpringBoot访问html访问不了的问题
查看>>
{width=200px;height=300px;overflow:hidden}
查看>>
SDK提交到CocoaPods
查看>>
C#生成随机数
查看>>
Flask-jinja2
查看>>
CSS基础学习 20.CSS媒体查询
查看>>
JavaScript全面学习(node.js)
查看>>
I/O模式总结
查看>>
2019春季第十一周作业
查看>>
洛谷P4591 [TJOI2018]碱基序列 【KMP + dp】
查看>>
iOS CoreData介绍和使用(以及一些注意事项)
查看>>
OS笔记047代理传值和block传值
查看>>
Android应用程序与SurfaceFlinger服务的连接过程分析
查看>>
coco2dx服务器简单例子
查看>>
Java回顾之多线程
查看>>