一种采集种子文件的方法、设备及系统转让专利

申请号 : CN201210084450.4

文献号 : CN102638577B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 孙昌瑞何佳诚陈奇李健松宗劼

申请人 : 北京蓝汛通信技术有限责任公司

摘要 :

本发明公开了一种采集种子文件的方法、设备及系统,用以提高采集种子文件的针对性,提高采集种子文件的实时性。该方法为:采集服务器从中央服务器获取磁力链接,所述磁力链接为所述中央服务器接收至少一个客户端发送的资源请求后生成,所述磁力链接至少包括请求资源的哈希值和所述资源请求携带的Tracker服务器地址,采集服务器根据所述磁力链接中包含的所述哈希值确定下载同一资源的对端客户端,并从所述对端客户端获取所述请求资源的分片信息,生成种子文件。

权利要求 :

1.一种采集种子文件的方法,其特征在于,包括:

采集服务器从中央服务器获取磁力链接,所述磁力链接为所述中央服务器接收至少一个客户端发送的资源请求后生成,所述磁力链接至少包括请求资源的哈希值和所述资源请求携带的Tracker服务器地址;

采集服务器基于分布式哈希表DHT网络进行网络搜索,根据所述磁力链接中包含的所述哈希值确定下载同一资源的对端客户端,并从所述对端客户端获取所述请求资源的分片信息,生成种子文件。

2.如权利要求1所述的方法,其特征在于,采集服务器从中央服务器获取磁力链接之前,包括:所述中央服务器接收至少一个客户端发送的资源请求,所述资源请求中至少包括请求资源的哈希值和相应的Tracker服务器地址;

所述中央服务器在本地记录所述请求资源的哈希值和所述Tracker服务器地址,并根据所述资源请求中包含的所述请求资源的哈希值,从本地记录中获取所述哈希值对应的每个Tracker服务器地址;

所述中央服务器基于所述哈希值和对应的所述每个Tracker服务器地址生成磁力链接。

3.如权利要求2所述的方法,其特征在于,所述采集服务器根据所述磁力链接中包含的所述哈希值确定下载同一资源的对端客户端,并从所述对端客户端获取所述请求资源的分片信息,生成种子文件,包括:采集服务器根据所述磁力链接中包含的哈希值进行网络搜索并确定下载同一资源的对端客户端,从所述对端客户端获取所述请求资源的分片信息,解析确定所述资源的分片信息的编码格式,并将所述请求资源的分片信息、所述编码格式以及所述每个Tracker服务器地址采用预定的编码方式进行编码后生成种子文件。

4.如权利要求3所述的方法,其特征在于,根据所述磁力链接中包含的哈希值进行网络搜索并确定下载同一资源的对端客户端,包括:所述采集服务器基于分布式哈希表DHT网络进行网络搜索,在确定搜索的对端客户端不包含所述哈希值相应的请求资源时,获取所述对端客户端中保存的对端客户端列表,并按照所述对端客户端列表继续搜索;

在确定搜索的对端客户端包含所述哈希值相应的请求资源时,从所述对端客户端中获取所述请求资源的分片信息。

5.如权利要求1或2所述的方法,其特征在于,所述采集服务器按照预定时间间隔从所述中央服务器获取磁力链接。

6.一种采集服务器,其特征在于,包括:

获取单元,用于从中央服务器获取磁力链接,所述磁力链接为所述中央服务器接收至少一个客户端发送的资源请求后生成,所述磁力链接至少包括请求资源的哈希值和所述资源请求携带的Tracker服务器地址;

处理单元,用于基于分布式哈希表DHT网络进行网络搜索,根据所述磁力链接中包含的所述哈希值确定下载同一资源的对端客户端,并从所述对端客户端获取所述请求资源的分片信息,生成种子文件。

7.如权利要求6所述的采集服务器,其特征在于,所述处理单元具体用于根据所述磁力链接中包含的哈希值进行网络搜索并确定下载同一资源的对端客户端,从所述对端客户端获取所述请求资源的分片信息,解析确定所述资源的分片信息的编码格式,并将所述请求资源的分片信息、所述编码格式以及与所述哈希值相应的每个Tracker服务器地址采用预定的编码方式进行编码后生成种子文件。

8.如权利要求7所述的采集服务器,其特征在于,所述处理单元具体用于基于分布式哈希表DHT网络进行网络搜索,在确定搜索的对端客户端不包含所述哈希值相应的请求资源时,获取所述对端客户端中保存的对端客户端列表,并按照所述对端客户端列表继续搜索;在确定搜索的对端客户端包含所述哈希值相应的请求资源时,从所述对端客户端中获取所述请求资源的分片信息。

9.如权利要求6所述的采集服务器,其特征在于,所述获取单元还用于按照预定时间间隔从所述中央服务器获取磁力链接。

10.一种采集种子文件的系统,其特征在于,包括:

至少一个请求客户端,用于发送资源请求,所述资源请求中至少包括请求资源的哈希值和Tracker服务器地址;

中央服务器,用于接收所述至少一个请求客户端发送的所述资源请求,并根据所述资源请求中包含的所述请求资源的哈希值以及所述Tracker服务器地址生成磁力链接,所述磁力链接中至少包括所述请求资源的哈希值和相应的Tracker服务器地址;

采集服务器,用于从所述中央服务器获取所述磁力链接,基于分布式哈希表DHT网络进行网络搜索,根据所述磁力链接中包含的所述哈希值确定下载同一资源的对端客户端,并从所述对端客户端获取所述请求资源的分片信息,生成种子文件;

至少一个对端客户端,用于为所述采集服务器提供所述资源分片信息。

说明书 :

一种采集种子文件的方法、设备及系统

技术领域

[0001] 本发明涉及网络技术领域,尤其涉及一种采集种子文件的方法、设备及装置。

背景技术

[0002] 在点对点网络(peer to peer,P2P)中,进行种子文件(BitTorrent,俗称BT)采集的方法有多种,其中最主要的两种方法为采用爬虫程序采集种子文件和采用数据包劫持的方式采集种子文件。种子文件又称元原文件(或metafile),在种子文件中保存有共享文件的信息,如共享文件的文件名称、文件大小、劫持服务器(Tracker)地址等,一般以“.torrent”为后缀。
[0003] 爬虫程序是自动提取网络的程序,一般为搜索引擎的重要组成部分,爬虫程序首先需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL(统一资源定位符)队列,然后根据一定的搜索策略从队列中选择下一步要抓取网页的URL地址,重复该过程直至达到一定的条件。由此可见,爬虫程序是通过无限访问去爬各个网站(如BT论坛等)以获取种子文件,这就需要花费大量的时间,实时性较低。
[0004] 并且,爬虫程序首先要确定爬取的网站的URL,这就使得爬虫程序不可能爬取所有产生种子文件的网站。爬虫程序采用无限访问的方式对网站的危害也较大,必须设置一定的时间间隔策略,延时抓取,这就会降低种子文件采集的速率,同时,在从网站中爬取种子文件时,一般都需要在该网站爬取3-7层才能到找到种子文件,这又进一步降低了采集速率,降低了实时性。
[0005] 数据包劫持的方式主要是通过劫持客户端发送数据包,分析数据包内容,再根据分析结果采集种子文件。该方式对服务器的要求较高,并且需要进行流量牵引。由此可见,数据包劫持的方式针对性较差,并且采集仅限于能够劫持到数据包的范围之内,采集种子文件的范围有限,采集实时性较差。

发明内容

[0006] 本发明提供一种采集种子文件的方法、设备及系统,用以提高采集种子文件的针对性,提高采集种子文件的实时性。
[0007] 本发明实施例提供的具体技术方案如下:
[0008] 一种采集种子文件的方法,包括:
[0009] 采集服务器从中央服务器获取磁力链接,所述磁力链接为所述中央服务器接收至少一个客户端发送的资源请求后生成,所述磁力链接至少包括请求资源的哈希值和所述资源请求携带的Tracker服务器地址;
[0010] 采集服务器根据所述磁力链接中包含的所述哈希值确定下载同一资源的对端客户端,并从所述对端客户端获取所述请求资源的分片信息,生成种子文件。
[0011] 一种采集服务器,包括:
[0012] 获取单元,用于从中央服务器获取磁力链接,所述磁力链接为所述中央服务器接收至少一个客户端发送的资源请求后生成,所述磁力链接至少包括请求资源的哈希值和所述资源请求携带的Tracker服务器地址;
[0013] 处理单元,用于根据所述磁力链接中包含的所述哈希值确定下载同一资源的对端客户端,并从所述对端客户端地址获取所述请求资源的分片信息,生成种子文件。
[0014] 一种采集种子文件的系统,包括:
[0015] 至少一个请求客户端,用于发送资源请求,所述资源请求中至少包括请求资源的哈希值和Tracker服务器地址;
[0016] 中央服务器,用于接收所述至少一个请求客户端发送的所述资源请求,并根据所述资源请求中包含的所述请求资源的哈希值以及所述Tracker服务器地址生成磁力链接,所述磁力链接中至少包括所述请求资源的哈希值和相应的Tracker服务器地址;
[0017] 采集服务器,用于从所述中央服务器获取所述磁力链接,根据所述磁力链接中包含的所述哈希值确定下载同一资源的对端客户端,并从所述对端客户端获取所述请求资源的分片信息,生成种子文件;
[0018] 至少一个对端客户端,用于为所述采集服务器提供所述资源分片信息。
[0019] 基于上述技术方案,本发明实施例中,中央服务器接收至少一个客户端发送的资源请求后生成磁力链接,该磁力链接中至少包括请求资源的哈希值和资源请求携带的Tracker服务器地址,采集服务器从中央服务器获取该磁力链接后,根据该磁力链接中包含的哈希值确定下载同一资源的对端客户端,并从该对端客户端获取请求资源的分片信息,生成种子文件,从而使得采集服务器能够根据实时生成的磁力链接获取资源的分片信息,并生成种子文件,提高了采集的种子文件的实时性,同时,根据哈希值确定下载同一资源的对端客户端,提高了采集的种子文件的针对性。

附图说明

[0020] 图1为本发明实施例中采集种子文件的系统架构示意图;
[0021] 图2为本发明实施例中采集服务器的结构示意图;
[0022] 图3为本发明实施例中采集种子文件的方法流程图;
[0023] 图4为本发明实施例中DHT网络搜索的过程示意图;
[0024] 图5为本发明实施例中种子文件来源示意图。

具体实施方式

[0025] 为了提高采集种子文件的针对性,以及提高采集种子文件的实时性,本发明实施例提供了一种采集种子文件的方法、设备及系统。
[0026] 下面结合附图对本发明优选的实施方式进行详细说明。
[0027] 在基于BT协议的文件分发系统中,Web服务器上保存有种子文件,下载者使用网络浏览器从Web服务器上下载种子文件,Tracker服务器中保存有当前下载的某共享文件的所有下载者的网络地址和端口号。原始文件提供者提供完整的共享文件供其他下载者下载,即原始文件提供者使用BT客户端生成原始种子文件。每个下载者通过运行BT客户端下载共享文件,该下载者之外的其它下载者称为该下载者的对端客户端。客户端下载一个共享文件的过程如下:客户端首先解析获得的种子文件,获取待下载的共享文件的信息,该信息中包括Tracker服务器的地址,客户端根据该地址连接Tracker服务器,获取当前下载的共享文件的所有下载者的网络地址和端口号,之后客户端再根据获取的网络地址和端口号连接其它的下载者(即对端客户端),进行共享文件下载,同时客户端将已下载的部分共享文件提供给对端客户端进行下载。
[0028] 如附图1所示,本发明实施例中,采集种子文件的系统主要包括至少一个请求客户端101、中央服务器102、采集服务器103和至少一个对端客户端104,其中,[0029] 至少一个请求客户端101,用于发送资源请求,该资源请求中至少包括请求资源的哈希值和Tracker服务器地址;
[0030] 中央服务器102,用于接收至少一个请求客户端101发送的资源请求,并根据该资源请求中包含的请求资源的哈希值以及Tracker服务器地址生成磁力链接,该磁力链接中至少包括请求资源的哈希值和相应的Tracker服务器地址;
[0031] 采集服务器103,用于从中央服务器102获取磁力链接,根据该磁力链接中包含的哈希值确定下载同一资源的对端客户端,并从该对端客户端获取请求资源的分片信息,生成种子文件;
[0032] 至少一个对端客户端104,用于为采集服务器103提供资源分片信息。
[0033] 其中,在P2P系统中,中央服务器(实际应用中可以是一个Tracker服务器)是一个中心节点,客户端发送的资源请求会通过流量牵引(DPI)设备牵引至中央服务器。
[0034] 其中,磁力链接是以“magnet:?”开头的字符串,主要用以识别能够通过P2P系统下载的文件。磁力链接是以文件的哈希值作为纯文件的数字指纹,根据哈希值识别文件的,而并非是通过文件的位置或者名称等识别文件。
[0035] 其中,如附图2所示,本发明实施例中,采集服务器103主要包括以下处理单元:
[0036] 获取单元201,用于从中央服务器获取磁力链接,该磁力链接为中央服务器接收至少一个客户端发送的资源请求后生成,该磁力链接至少包括请求资源的哈希值和资源请求携带的Tracker服务器地址;
[0037] 处理单元202,用于根据磁力链接中包含的哈希值确定下载同一资源的对端客户端,并从该对端客户端获取请求资源的分片信息,生成种子文件。
[0038] 具体地,处理单元202具体用于根据磁力链接中包含的哈希值进行网络搜索并确定下载同一资源的对端客户端,从相应的对端客户端获取请求资源的分片信息,解析确定该资源的分片信息的编码格式,并将请求资源的分片信息、其编码格式以及与哈希值相应的每个Tracker服务器地址采用预定的编码方式进行编码后生成种子文件。
[0039] 较佳地,处理单元202具体用于基于分布式哈希表(DHT)网络进行网络搜索,在确定搜索的对端客户端不包含哈希值相应的请求资源时,获取该对端客户端中保存的对端客户端列表,并按照该对端客户端列表继续搜索;在确定搜索的对端客户端包含哈希值相应的请求资源时,从该对端客户端中获取请求资源的分片信息。
[0040] 较佳地,获取单元201还用于按照预定时间间隔从中央服务器获取磁力链接。
[0041] 基于上述系统架构,如附图3所示,本发明实施例中,采集种子文件的详细方法流程如下:
[0042] 步骤301:采集服务器从中央服务器获取磁力链接,该磁力链接为中央服务器接收至少一个客户端发送的资源请求后生成,该磁力链接至少包括请求资源的哈希值和资源请求携带的Tracker服务器地址。
[0043] 其中,在采集服务器从中央服务器获取磁力链接之前,中央服务器接收至少一个客户端发送的资源请求,该资源请求中至少包括请求资源的哈希值和相应的Tracker服务器地址,中央服务器在本地记录该请求资源的哈希值和Tracker服务器地址,并根据资源请求中包含的请求资源的哈希值,从本地记录中获取与哈希值对应的每个Tracker服务器地址,中央服务器基于该哈希值和对应的每个Tracker服务器地址生成磁力链接。
[0044] 步骤302:采集服务器根据磁力链接中包含的哈希值确定下载同一资源的对端客户端,并从该对端客户端获取请求资源的分片信息,生成种子文件。
[0045] 具体地,采集服务器启动磁力链接,根据磁力链接中包含的哈希值进行网络搜索并确定下载同一资源的对端客户端,从该对端客户端获取请求资源的分片信息,解析确定该资源的分片信息的编码格式,并将该请求资源的分片信息、其编码格式以及每个Tracker服务器地址采用预定的编码方式进行编码后生成种子文件。
[0046] 例如,采集服务器对获取的请求资源的分片信息以及每个Tracker服务器地址进行B编码后生成种子文件。
[0047] 具体地,采集服务器基于分布式哈希表(DHT)网络进行网络搜索,在确定搜索的对端客户端不包含哈希值相应的请求资源时,获取该对端客户端中保存的对端客户端列表,并按照该对端客户端列表继续搜索;在确定搜索的对端客户端包含哈希值相应的请求资源时,从该对端客户端中获取请求资源的分片信息。实际应用中,只要能够确定一个包含与哈希值相应的请求资源的客户端,即可停止搜索对端客户端的过程,根据实际设置,也可以设置为在确定设定个数的包含与哈希值相应的请求资源的客户端时,停止搜索对端客户端的过程。其中,采集服务器根据请求资源的哈希值搜索每个对端客户端时,该对端客户端解析本地包含的各种子文件即可获取相应资源的哈希值,将请求资源的哈希值与对端客户端包含的资源的哈希值进行比较,在两者相同时确定为同一资源。
[0048] 例如,如附图4所示,采集服务器通过DHT网络搜索相邻的客户端,判断相邻的客户端中是否保存有哈希值相应的请求资源,在确定有至少一个客户端存在该请求资源时,将该至少一个客户端确定为对端客户端,停止搜索过程;而在不存在保存有哈希值相应的请求资源的客户端时,获取相邻的客户端上保存的与其下载同一资源的对端客户端列表,并按照该列表继续搜索,直至找到保存有哈希值对应的请求资源的对端客户端,停止搜索过程。
[0049] 较佳地,采集服务器按照预定时间间隔从中央服务器下载磁力链接。
[0050] 在一个具体的实现中,第一客户端发送资源请求,该资源请求中包括请求资源的哈希值和Tracker服务器地址。中央服务器接收该资源请求后,在本地日志中记录该资源请求中携带的哈希值和相应的Tracker服务器地址,并进行日志分析后,获取日志中记录的与上述资源请求中携带的请求资源的哈希值对应的所有Tracker服务器地址,并生成一条磁力链接,该磁力链接中包括资源的哈希值和相应的所有Tracker服务器地址,其中包括资源请求中携带的Tracker服务器地址。较佳地,中央服务器进行日志分析并生成相应的磁力链接后,将该磁力链接保存至一个文件中,并将该文件保存至预定存储位置,以供采集服务器从中央服务器下载该磁力链接的文件并获取该磁力链接。
[0051] 采集服务器按照预定的时间间隔从中央服务器下载磁力链接,并启动该磁力链接任务,此时采集服务器以第一客户端的身份,基于DHT网络寻找下载同一资源的对端客户端(即根据磁力链接中包含的哈希值进行搜索),并从对端客户端中获取哈希值对应的资源的文件分片信息,并将获取的文件分片信息及与磁力链接中携带的Tracker服务器地址等采用预定的编码方式进行编码,在编码后记录到以torrent结尾的种子文件中,同时分析获取的文件分片信息的编码方式,并记录在该种子文件中,至此就成功生成一个BT种子文件。生成的种子文件中包含有原始的资源分片信息和Tracker地址列表。
[0052] 本发明实施例中,如附图5所示,生成的BT种子文件的信息主要来源于中央服务器、采集服务器和对端客户端,中央服务器接收并记录资源请求后,生成包含请求资源的哈希值的磁力链接和Tracker地址列表,采集服务器根据中央服务器提供的磁力链接搜索确定下载同一资源的对端客户端,从该对端客户端获取资源的分片信息、文件名称等,最后由采集服务器对获取的资源分片信息、Tracker地址列表等进行编码生成BT种子文件。
[0053] 下面以一个具体的应用实例对采集种子文件的过程进行详细说明。
[0054] 第一客户端发送的资源请求为:
[0055] /announce?info_hash=8%A11%B6%FC%82%3Ef%C8%BA%BAO%07%1DQ%9C%F3%D3%91%A9&peer_id=-lt0C60-%AF%2Fo%5EX%F2%0A%9D%F87 %A0S&key =240f3a8d&compact =1&port =6999&uploaded =0&downloaded =
0&left=0,其中,info_hash为第一客户端请求资源的哈希值,在发送该资源请求的同时还携带有Tracker服务器地址。
[0056] 中央服务器接收该第一客户端发送的资源请求后,对该资源请求进行修改,即在该资源请求中增加对应的Tracker服务器地址,即增加该资源请求对应的racker服务器域名(from_domain)和端口号(from_port),具体表示为:
[0057] /announce?info_hash=8%A11%B6%FC%82%3Ef%C8%BA%BAO%07%1DQ%9C%F3%D3%91%A9&peer_id=-lt0C60-%AF%2Fo%5EX%F2%0A%9D%F87 %A0S&key =240f3a8d&compact =1&port =6999&uploaded =0&downloaded =
0&left=0&from_port=80&from_domain=www.example.com,其中,from_port为端口号,from_domain为域名,即请求的Tracker服务器域名为www.example.com,端口号为80。
[0058] 中央服务器将修改后的资源请求记录在本地的日志文件中,并且进行日志分析,获取与第一客户端请求资源的哈希值对应的所有Tracker服务器地址,即域名和端口号,生成磁力链接,具体表示为:
[0059] magnet:? xt= urn:btih:{info_hash}&tr= http://{from_domain}:{from_port}/annn ouce。
[0060] 实际应用中,对应同一个info_hash的请求会有多个域名和端口号,因为实际应用中,一个种子会保存有Tracker地址列表,客户端根据该种子获取资源时,以队列的形式逐个请求Tracker地址对应的服务器。同时,从各网站获得种子或种子发布者都会添加多个不同的Tracker地址,很有可能对应于同一info_hash的资源来源于两个或两个以上的种子。P2P系统中的中央服务器会接收所有请求同一资源的客户端对应的Tracker地址,这就使得中央服务器的日志中记录的Tracker地址数量会超过一个客户端请求的Tracker地址数量,此时,在同一哈希值对应多个Tracker地址时,生成的磁力链接的格式为可表示为:
[0061] magnet:?xt=urn:btih:{info_hash}&tr.0=http://{from_domain0}:{from_port0}/a nnnouce&tr.1 = http://{from_domain1}:{from_port1}/annnouce&tr.2 =http://{from_domain3}:{from_port3}/annnouce。
[0062] 例如,
[0063] magnet: ? xt = urn:btih:11041a574c9e52412a204edd027264b733b63bc1&tr.0 = http://www.example0.com/announce&tr.1 = http://www.example1.com/announce&tr.2=http://www.example2.com/announce,其中,同一哈希值对应三个Tracker地址。
[0064] 中央服务器将生成的磁力链接记录在一个文件当中,并保存至预定的存储位置,例如将磁力链接记录在文件“down.txt”中,并将该文本文件保存至一个配置好的静态目录中,以供采集服务器下载。
[0065] 采集服务器从中央服务器下载文件“down.txt”后,读取该文件并启动该文件中记录的磁力链接的任务,该任务的链接格式与磁力链接的格式相同,资源的哈希值以及Tracker地址列表均可从该链接中获取,实际应用中,采集服务器哈希值确定下载同一资源的对端客户端,从该对端客户端中获取资源的分片信息、文件名称等,并解析获取的资源的分片信息确定编码格式,根据具体应用,还可以有选择地从对端客户端中获取资源的发布者、评论等信息,并将资源分片信息、资源分片信息的编码格式、Tracker地址列表、文件名称等进行B编码后记录在BT种子文件中。
[0066] 基于上述技术方案,本发明实施例中,中央服务器接收至少一个客户端发送的资源请求后生成磁力链接,该磁力链接中至少包括请求资源的哈希值和资源请求携带的Tracker服务器地址,采集服务器从中央服务器获取该磁力链接后,根据该磁力链接中包含的哈希值确定下载同一资源的对端客户端,并从该对端客户端获取请求资源的分片信息,生成种子文件,从而使得采集服务器能够根据实时生成的磁力链接获取资源的分片信息,并生成种子文件,提高了采集种子文件的实时性,根据哈希值确定下载同一资源的对端客户端,提高了采集种子文件的针对性。
[0067] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。