使用效果图
在腾讯云最低配服务器上跑了两天的效果,可以看出速度还是很快的,一天上万种子。
快速安装
linux使用:在python3的虚拟环境下(小白可以参看云服务器简单配置)
pip3 install magneticod就安装好了种子爬虫,在虚拟环境下命令行执行magneticod就可以运行了,等待一会儿,可以看到如下的日志输出,表明爬虫正在运行,并且收集到种子了。(也可以使用
magneticod -d运行显示更详细的信息,-d参数表示输出debug信息。)
网页显示与查询功能安装,同样在虚拟环境下pip install magneticow就好了,然后命令行magneticow --port 8080 --user 用户名 密码就可以运行在8080端口了。使用localhost:8080访问,输入自己更改的用户名和密码即可。windows使用:windows下直接使用pip安装暂时有点问题(可以先尝试像上面那样pip安装),需要到github上下载源码包 - download zip,如下图:
然后解压进入magneticod文件夹,在当前目录打开命令行,python setup.py install安装,再进入magneticow文件夹同样命令安装。还需要做一件事,就是找到你的python动态链接库中的sqlite3.dll(我的在Anaconda3\DLLs路径下),在SQLite Download Page找到适合你版本的sqlite-dll替换掉它,我用的是sqlite-dll-win64-x64-3200000.zip。(参考stackoverflow)这样就可以成功运行了。
windows的使用效果不如linux(暂时认为是windows的bug,udp也会报错——[WinError 10054] 远程主机强迫关闭了一个现有的连接),限制速度之后就会好。windows不限速
种子与磁力链接
说实话,作为一个从不开车、偶尔上车的良好公民 :),我对这些东西的了解十分有限。
我一直习惯使用的是基于ipv6的非公开BT站点,类似北邮人BT、6维空间这样需要注册的BT站点。想要资源时,在站点上下载相应的种子(torrent)文件,使用utorrent客户端下载即可,至于其中的原理不求甚解,大概知道的就是下载完成该资源且开启ut客户端的用户越多我的下载速度越快,同时下载的人越多速度越快,因为下载的同时会互相上传文件的不同部分给对方,下载完成后要尽保种的义务,尽量开启ut客户端,方便其他用户下载该资源,增加我的上传量。分享文件做种时,要生成一个种子文件,并提交到站点服务器。
为了有更清楚的认知,打开ut客户端研究一下,顺便下载下权力的游戏最新集。用ut客户端打开种子进行下载,在下载时观察下面的状态栏,第二栏就是Trackers,看来是非常关键的一个东西。
基本概念 - Tracker:收集下载者信息的服务器,并将此信息提供给其他下载者,使下载者们相互连接起来,传输数据。
原来,该BT站点提供了一个Tracker服务器(倒数一二行),记录了所有下载者的信息或者文件分享者的信息,当我下载文件时,这个服务器会告诉我其他人的下载状态(谁拥有资源,谁下载完成了,谁正在下载),也告诉其他人我的下载状态,让我们互通有无,互相传递资源,增加下载速度,而tracker服务器充当了信息交换中心的角色。可以看到,第一行的DHT被禁用了,是为了不走外网流量,DHT非常重要,下文会讲到,暂时不管。
在peers一栏我们可以看到其他下载者的详细信息,大家互相帮助上传与下载。
在pieces一栏可以发现文件被分割成为很多份,每小份为1M大小,而我当前下载的视频为4个多G。在files栏里可以看到所有区块的下载状况。
在对资源下载过程有了初步认识后,我们来详细地看下种子文件到底是什么。原来种子文件本质上是一种B编码后的文本文件,它包含了资源的详细信息,要打开它看里面的内容需要先解码,我们可以使用BEncode Editor这个软件。随便打开一个外网站点上下载的种子。
在BEncode Editor中显示如下,这个73KB的种子包含了丰富的信息,在它的tracker服务器列表中可以看到名为海盗党的希腊域名,这个种子文件也才创建不久。
而最关键的信息全在
info字典中,它是种子文件元信息。点开查看详细内容。可以看到下载文件的分块机制和我们之前在ut客户端看到的一致。在种子文件的元信息中包含了所有内容信息,以及所有分块的哈希验证码(数字指纹),来确保文件的真实性。在下载时我们会向种子文件中记录的tracker服务器发出请求,得到其他有该资源的用户的地址,一小块一小块的下载,每小块下载完成后都与种子文件中的该小块的哈希值进行比对,看是否被篡改。每个种子文件也具有一个唯一标识码,称为种子文件的info_hash,是种子中所有info信息B编码后的SHA-1哈希值:20个字节,即40个16进制码。根据这串码就能找到对应的种子文件。
除了种子,我们还会遇到磁力链接,如下图,磁力链接又是什么呢?
下图是一个磁力链接的分解,来自阮一峰老师的BT下载的未来,详细见wiki百科-磁力链接
作者:treelake
链接:https://www.jianshu.com/p/f1659aba5aed
共同学习,写下你的评论
评论加载中...
作者其他优质文章













