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


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

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

    这个项目是基于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

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

  • 相关阅读:
    IDEA中设置自动build-改动代码,不用重启工程,刷新页面即可
    前端上传大文件并支持中途取消上传
    网页上传大文件并支持中途取消上传
    HTTP上传大文件并支持中途取消上传
    B/S上传大文件并支持中途取消上传
    如何将word公式粘贴到CKEditor里面
    如何将word公式粘贴到HTML编辑器里面
    如何将word图片粘贴到HTML编辑器里面
    如何将word图片粘贴到Web编辑器里面
    如何将word公式粘贴到Web编辑器里面
  • 原文地址:https://www.cnblogs.com/hzauxx/p/11193458.html
Copyright © 2020-2023  润新知