磁力搜索引擎-RunBt

一直从事linux服务器分布式文件系统的开发,由于经常在btdigg和torrentkitty等磁力搜索网站找资源,于是就有了自己动手写一个类似网站的冲动,经过了大半年的努力,磁力链接搜索引擎RunBt终于完成开发,正式上线了,开发的过程很艰辛,不再详述,直接说原理:


  • 通过DHT协议爬取种子文件的hash值

   DHT(Distributed Hash Table,分布式哈希表)类似Tracker的根据种子特征码返回种子信息的网络。DHT全称叫分布式哈希表(Distributed Hash Table),是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。新版BitComet允许同行连接DHT网络和Tracker,也就是说在完全不连上Tracker服务器的情况下,也可以很好的下载,因为它可以在DHT网络中寻找下载同一文件的其他用户。

  通过加入DHT网络,可以轻松的每天获取百万的hash值,每个hash值都是由一个BT种子文件产生的。


  • 下载BT种子文件

  实际上,通过hash就能知道磁力链接了,但只有这些是没有任何意义的,因为你不知道这个链接包含的文件名是什么,象迅雷,旋风等下载下载工具通过磁力下载这些种子的时候,下载工具会到内部服务器的种子库里去查找,通过hash值,可以搜索出位于该服务器上的BT种子位置,然后下载这个种子。也就是说,用某一个下载工具通过磁力链magnet下载torrent文件,并不是每次都一定能下载成功。通过dht也能下载种子,但速度极慢,几乎不可接受,国外有几个种子缓存网站象zoink.it和torrage.com等,可以为下种提供大大的方便。


  • 分析BT种子文件。

  提取BT种子文件名,文件大小,创建日期等摘要信息,并通过BT种子文件计算得到hash值(嘿嘿,有了这个,就有了传说中的磁力链接)。这部分的工作相对容易,只需要对种子文件格式有详细的了解即可,网上的相关的文档一大堆。


  • 把BT种子文件摘要信息存入数据库

  数据库最基本的字段包括文件名,文件列表,文件大小,创建时间,索引时间,hash值等,但由于文件数量众多,设计数据库时需要考虑性能问题。


  • 建立数据库的搜索索引

  这个可以使用任何的开源搜索引擎(如lucence,sphinx等),使用的过程并不复杂,但需要对搜索引擎的工作机制有一个基础的了解。


  • 建立网站。

  我使用的php做前端页面,目前网站已经收录了2千多万条资源,几乎包括所有的电影(最新电影都会第一时间收录),也有大量的音乐,软件等资源,网站截图如下:

  磁力搜索引擎-RunBt_第1张图片


你可能感兴趣的:(搜索引擎,bt,sphinx,索引)