1、 本 科 毕 业 论 文 Web 嗅探器 的设计与实现 -信息源 嗅探 模块 Design and Implementation of Web Sniffer -Source Sniffer Module 姓 名: 学 院:软件学院 系: 软件工程 专 业:软件工程 年 级: 学 号: 指 导教师: 年 月 摘 要 Internet 的迅速发展给社会和人们的生活带来了重大的影响,它改变了人们获取信息的方法。 而在线视频无疑成为了最受欢迎的信息传播方式 , ,大量的视频网站除了给网友们获取信息提供了极大的便利外,也给网友们提供了一个很好的休闲和娱乐平台。 但 大部分在线视频 网站 为了减轻服务器
2、的负担和防盗链, 都不提供可下载的链接地址,有时候碰到好的视频,想要收藏就不得不费脑筋了。本文的目的就是设计 并实现 一个 Web 嗅探器 ,可以嗅探出 FLV 视频的信息源 ,让用户轻松地下载所需视频 。 在查阅了相关的 文献研究基础上, 本文 首先介绍了 WEB 信息传输所依赖的一组标准协议 TCP/IP 协议和应用层 的 HTTP 协议 ,重点论述了 HTTP 消息 的 交互过程, 然后深入分析了网络数据包的捕获和分析原理,最终 设计 并实现了 一个 基于JPcap 类库的 Web 嗅探程序,该程序可以成功的捕获到大量网站的 FLV 视频 的链接地址。 关键词: FLV 视频 ;嗅探器;
3、 JPcap。 Abstract The rapid development of Internet has brought about a significant impact on the society and peoples lives; it changed the way people access information. The online video is no doubt becomes the most popular means of the information dissemination. A large number of video websites not
4、 only provide a great convenience for users to access information, but also provide an excellent platform for the leisure and entertainment. However, most of these sites do not provide the link to download, sometimes run into a good video and want to favorites it; users have to manage to find ways t
5、o find its URL. The purpose of this thesis is to design a sniffer, which is able to find out the source of online video. Based on the relevant researches and academic thesis, the author introduces a group of standard protocol- TCP / IP protocol, the HTTP protocols of the application layer first, foc
6、uses on the interaction process HTTP messages. Then gives the depth analysis of the principle of capturing the network packets, and finally design of a Web sniffer, it can capture a large number of FLV video. Key words: flv video; sniffer; JPcap. 目录 第一章 绪论 . 1 1.1 研究背景及意义 . 1 1.2 主要 研究内容 . 2 1.3 论文组
7、织结构 . 2 第二章 Web 嗅探器的应用技术背景 . 3 2.1 信息源 获取方法 . 3 2.2 TCP/IP 协议 . 7 2.3 HTTP 协议 . 12 2.4 Winpcap 驱动介绍 . 18 2.5 JPcap 类库介绍 . 20 2.6 本章小结 . 22 第三章 Web 嗅探器的需求分析及总体设计 . 23 3.1 系统开发的需求 . 23 3.2 系统总体设计思想 . 23 3.3 系统程序结构 . 24 3.4 本章小结 . 26 第四章 Web 嗅探器的详细设计 及 实现 . 27 4.1 网络数据包的捕获 . 27 4.2 数据包的分析 . 32 4.3 链接地址
8、的形成 . 33 4.4 本章小结 . 34 第五章 Web 嗅探器的实现效 果 . 35 5.1 嗅探界面 . 35 5.2 嗅探记录界面 . 37 5.3 文件下载界面 . 39 5.4 已完成任务界面 . 40 5.5 使用帮助界面 . 41 5.6 系统应用测试 . 41 5.7 本章小结 . 43 第六章 总结与展望 . 44 参考文献 . 45 致谢 . 46 Contents Chapter 1 Introduction . 1 1.1 Background and Objectives. 1 1.2 Contents of Thesis. 2 1.3 Structure of
9、Thesis . 2 Chapter 2 The Technical Background of Web Sniffer . 3 2.1 The Method of Obtain Information Source. 3 2.2 TCP/IP Protocol . 7 2.3 HTTP Protocol. 12 2.4 Introduction of Winpcap Driver . 18 2.5 Introduction of JPcap . 20 2.6 Summary of This Chapter. 22 Chapter 3 The Requirements Analysis and
10、 Overall Design . 23 3.1 Requirements Analysis . 23 3.2 Overall Design . 23 3.3 Program Structure . 24 3.4 Summary of This Chapter. 26 Chapter 4 The Detail Design and Implementation of System. 27 4.1 Capture of Network Packets . 27 4.2 Analysis of Packet . 32 4.3 Formation of Url . 33 4.4 Summary of
11、 This Chapter. 34 Chapter 5 The Achieved Effect of Web Sniffer . 35 5.1 Sniffer UI . 35 5.2 Sniffer Records UI . 37 5.3 Download UI . 39 5.4 The Completed Task UI . 40 5.5 Helps UI . 41 5.6 System Test . 41 5.7 Summary of This Chapter. 43 Chapter 6 Conclusions and Future Work . 44 References . 45 Ac
12、knowledgements . 46 第一章 绪论 1 第一章 绪论 1.1 研究背景 及意义 在线视频网站的迅速发展,让人们能够以更直观的方式获取信息,了解社会。这些网站也成为了人们休闲和娱乐的主要平台。但这些网站为了防盗链, 大都 采用 Flv 格式 视频,不提供可下载的链接地址。所以无法直接下载,只能采取其它方法。 目前最要的 Flv 视频链接地址的获取方法有三种 1-3: 第一种:从本地缓存找,该方法比较麻烦。首先正常观看视频,不要关闭浏览器,其次等视频加载完毕,进入 C:Documents and Settings你的用户名Local SettingsTemporary Inter
13、net Files 这个文件夹,然后查找扩展名为flv 的文件即可。 第二种:专门的 flv 视频地址解析网站,如 。只要输入视频所在页面的地址 (浏览器地址栏 )就可以。但该方法可能是采取 HTML 页面源码分析方法来获取链接地址,具有一定的局限性。 第三种:通过网络嗅探器的方法,捕获数据包,并对其进行分析,最终形成地址,该方法能够获取大部分网站的视频地址,具有通用性。该方法 的代表产品有 Project URL Snooper、影音神探和遨游浏览器自带的嗅探器等。 上面三种方法中,第一种方法显得麻烦又笨拙,第二种方法不具通用性,速度又慢。第三种方法通过对网卡抓包的方法,其准确率高,而且具有
14、通用性,让隐藏的很好的视频、音频等多媒体的链接地址无所遁形,相信是未来多媒体链接地址获取的主要方法。 因此本文的目的就在于开发一个 Web 嗅探器,该嗅探器可以嗅探到以 Flv 为主的多种网络媒体的下载地址。 该论文研究的意义在于通过深入分析网络数据包捕获的原理,加深了对以太网结构、 TCP/TP 标准协议和 HTTP 消息交互原理的了解,对未来进一步学习网络知识有极大的意义。 Web 嗅探器的设计与实现 -信息源嗅探模块 2 1.2 主要 研究内容 本文是使用 JPcap类库间接调用 Winpcap驱动进行网络数据包捕获和分析的研究。本文深入的分析了以太网网络数据包的捕获原理、 HTTP 协
15、议原理和 HTTP消息的交互过程。并对论文涉及到的技术背景知识如 TCP/IP 标准协议、 Winpcap驱动和 JPcap 做了详细的介绍。整个系统使用 Java 语言编写,具有良好的界面,便于操作。 1.3 论文组织结构 以下是论文的具体组织结构: 第一章 绪论:介绍论文研究背景、目的和内容。 第二章 Web 嗅 探器的应用技术背景 : 作为核心内容的铺垫,详细的介绍论文的理论基础。 首先 论述当前主流在线视频网站的地址获取方法和原理。 然后介绍了目前以太网使用最为广泛的 TCP/IP 协议簇,重点介绍了 HTTP 协议、 HTTP 消息和交互过程。最后再介绍了网络数据包捕获需要用到的 W
16、inpcap 驱动 和 JPcap类库。 第三章 Web 嗅探器 的需求分析及总体架构: 介绍了系统开发的需求和系统的总体设计架构。 第 四 章 Web 嗅探器的详细设计 : 是论文的核心部分 。首先 详细的分析和讨论了网络数据包的捕获原理、设计步骤和具体实现方法,数据包能否被正确 的捕获是系统能否继续进行的关键。然后论述了如何分析数据包和形成链接地址,而 链接地址的形成则是系统的最终目的 第 五 章 Web 嗅探器的 实现结果:说明了系统最终的实现效果与测试结果 。 第 六 章 结束语: 对论文的研究进行总结,说明不足之处和未来展望。 第二章 Web 嗅探器的应用技术背景 3 第二章 Web
17、 嗅探器 的 应用技术背景 本章首先介绍 了 目前在线视频 的 信息源的获取方法,并分析 比较 每 种 方法的优缺点。然后重点介绍和研究开发 Web 嗅探器所涉及的相关技术背景。 2.1 信息源 获取方法 由于目前国内外的主流在线视频网站,如 YouTube、优酷网、土豆网和新 浪播客等都是使用 flv 格式,所以本文主要介绍 flv 视频的地址获取方法,其它格式只做简单介绍。 其实,诸如 wmv、 rm 和 rmvb 格式的视频地址获取的方法还是比较简单的。如果是 wmv 视频,由于它是使用 Windows Media Player 播放器进行播放,只要右击视频 (播放器 ),查看属性,即可
18、看到其真实地址。如果是 Real 视频,右击视频,用 real player 播放,然后在本地打开的那个 RealPlayer 中,依次选择文件 -剪辑信息 -编辑剪辑属性,即可看到真实地址了。 而 Flv 视频的播放器不支持右键查看下载 ,而且目前大部分的 flv 视频网站都采取了一定的措施来防止盗链和下载,如优酷网防止用户下载就有以下几个措施 3: 1. 动态创建 Flv 播放器,防止用查看源代码的方式分析其播放器。 2. Flv 文件分割, 将一个较长的文件分割成每段大约为 7分钟的几段,其地址不同,甚至有可能在不同的服务器上。 3. 动态生成 flv 文件地址,并且地址有时间限制,过时
19、失效。 所以 Flv 视频链接地址的获取还是比较麻烦一些的,但只要它能播放我们就有办法获取到它的地址,目前主要方法有三种: 1. 利用本地临时文件。 2. 网页解析。 3. 软件工具,即嗅探器。 Web 嗅探器的设计与实现 -信息源嗅探模块 4 2.1.1 利 用本地临时文件 这种方法对大部分网站都可用,但比较麻烦,显得笨拙。主要步骤是: 首先,正常观看视频,不要关闭浏览器, 其次,等视频加载完毕,进入 C:Documents and Settings你的用户名 Local SettingsTemporary Internet Files 这个文件夹(有可能要用到文件夹选项中的 “ 显示全部文
20、件 ” 才可看见) 。 然后,查找扩展名为 flv 的文件即可,很容易找到。可以按时间排序,也可以按大小,视频文件一般都比较大,排在顶部。 2.1.2 网页解析 该 方 是根据 flv 视频的播 放原理,对视频所在的网页的 HTML 源代码进行解析,并按照该网站的视频地址格式 生成地址。 视频网站通用的播放原理比较简单:打开页面首先 load 一个播放器,然后播放器根据一定得条件向 WEB 服务器请求 flv 文件并播放。如优酷网的播放原理就是 3: 1. 输入地址。 2. 根据地址生成页面, load 播放器,并获取播放文件 id。 3. 将 id 传给播放器,播放器根据视频 id 获取视频
21、地址。 下面本文就针对目前国内比较受关注的在线视频网站 优酷网来论述如何通过网页解析来获取其 Flv 视频地址。 1. 输入地址,获取加密前的 videoid。 典型的优 酷网播放地址格式是这样的:http:/ id_XOTQxNDc3MzY=这一段应该是与这个视频的 id 相关的,也就是说,优酷应该对每个视频有一个唯一的 id,可以通过这个 id来找到对应的视频。不过地址中的 id 是加密的,在页面源文件中搜索:id_XOTQxNDc3MzY=可以找到 Java script 代码: 第二章 Web 嗅探器的应用技术背景 5 这两个就是加密前后的 videoid。 2. 根据加密前的 id
22、获取 JSON 对象 。 Flv 播放器 load 完成后,会向后台请求该 id 的播放列表 (有时一个大的视频可能分解成多个视频 ),请求地址如下: 该请求会得到 WEB 服务器的一个 Response,该 Response 是一 个JSON(JavaScript Object Notation)对象, 该对象 指明了播放列表的相关信息 ,包括视频解密方法。 JSON 对象中有关视频解密的关键参数有: 3. 根据服务器返回的 JSON 对象解密视频,得到地址。一般一个视频网站的所有地址都会是一样的格式,如优酷网视频的地址格式如下: 其中蓝色的部分是根据不同的视频以及请求时间而变化的,而红色的
23、部分表示视频文件的序号 (16 进制 ),如果一个视频文件被分为 11部分,那只要把红色改为从 00到 0A 就可以了。 地址中 sid 后面的一串数字 ( _ 之前 )就是 sid, fileid 后的一串数字var videoId = 23536934; var videoId2= XOTQxNDc3MzY=; http:/ “seed“:6799,“ “fileid“:“17*41*17*17*6*10*17*41*17*17*10*12*40*20*66*40*12*33*6*33*1*10*17*17*61*20*67*48*6*33*18*8*48*11*18*33*10*1*53*61*41*6*6*53*10*40*8*41*53*40*40*61*18*53*66*40*6*66*12*1*17*1*41*33*12*17*“ “key1“:“a4156afd“, “key2“:“a7605e2016ea1597“ http:/