首页 > 编程知识 正文

种子下载怎么用,磁力吧

时间:2023-05-06 19:55:50 阅读:150308 作者:1229

认真的理论磁力链接现在我们使用迅雷等工具下载资源的时候,基本上只需要一个叫做磁力链接的东西就可以了,所以非常方便。

磁力链接是一种在对等网络上搜索信息和下载文档的计算机程序。 与基于位置连接的统一资源定位符不同,磁性链接基于元数据文件的内容,并且属于统一资源名称。 这意味着磁力链接不是基于文档的IP地址或定位符,而是通过在分布式数据库中使用散列函数值进行标识和搜索来下载文档。 没有中央服务器的对等网络特别适合下载文档,因为它不依赖于正在运行的主机。

磁力链接格式是否类似于magnet: XT=urn : btih : e7fc 73 d 9e 20697 c6c 440203 f 5884 ef 52 F9 e4bd 28

请拆开这个链接

magnet :协议名称。 xt:exact topic的缩写,表示资源的定位点。 BTIH(Bittorrentinfohash )表示散列方法名称,这里也可以使用SHA1和MD5。 此值是文件的标识符,必不可少。 一般来说,磁力链接只能通过上面的两个参数找到相应的资源。 还有其他可选参数提供更详细的信息。

dn:display name的缩写,表示向用户显示的文件名。 tr:tracker的缩写。 表示tracker服务器的地址。 指定kt:关键字、更常规的搜索和搜索关键字而不是特定文件。 mt )链接到包含磁力链接的元文件(MAGMA - MAGnet MAnifest )的文件列表。 在这里可以阅读psdzh的BT下载的未来。 我很喜欢他文章的最后一句话。

当网上所有的机器都自动交换信息的时候,谎言和舒服的猫会持续到什么时候呢?

种子/DHT可以通过磁力获得和下载种子文件,这与直接使用种子下载相同,只是磁力到种子文件的过程少。

BitTorrent协议种子文件可以存储一组文件的元数据。 这种格式的文件是在BitTorrent协议中定义的。 扩展名一般为“. torrent”。 BitTorrent使用分布式哈希表(DHT )来存储没有tracker的种子的种子之间的联系信息。 现在所有的peer都是跟踪者。 该协议基于Kademila网络,并在UDP中实现。

DHT由节点组成,存储peer的位置。 BitTorrent客户端包含一个DHT节点。 该节点与DHT中的其他节点进行联系,获取peer的位置,并通过BitTorrent协议下载。

peer:是通过实现BitTorrent协议的TCP端口进行通信的客户端/服务器。 在节点:的UDP端口上接收的客户端/服务器。 正在实现DHT (分布式哈希表)协议。 如果你对DHT协议感兴趣,请一定要看看DHT协议的具体内容。 这里有中文翻译版。 (如果想彻底阅读项目,请务必理解其协议。 代码都是根据那个协议实现的)

实践项目的来源一般是Python攀登,大家给人的第一印象可能是requests/aiohttp,或者是scrapy/pyspider等爬行动物的框架。 基本上是从指定的HTML页面获取信息。 我的项目torrent-cli是从资源网站获取磁力信息的工具。

但我觉得

为了自给自足获得磁力的种子,我勾选了谷歌,发现大家的基本代码都来自一个叫simDHT的项目。 首先,这个项目很棒,但是它的问题是代码实现细节很少注释,与Python3不兼容。 很多网络上的同类代码也基本上适用于此.

所以我知道要开始工作了

经过happy coding的波浪。

项目结构核心代码crawler.py

从DHT网络取得磁力链接。 主要利用几个大型服务器tracker,冒充DHT节点,使用UDP协议与DHT网络中的一波搜索和其他节点友好相处,也让他们共享我的资源。 磁力数据保存在redis中,利用redis的集合特性变重。 使用多线程/多进程提高了爬网效率。 在我的本地机器(i7-7700HQ/16G内存/8M网速)上跑了一下,效果很好。 4小时内爬了100万条磁力链接。

复制$ redis-CLI 127.0.0.1:6379 scard magnets (integer ) 1137627代码,获得高性能1核/2G内存/1M网络速度Alibaba clibaba 啊.

magnet_to_torrent_aria2c.py

利用aria2将磁力链接转换为种子文件。 我试着用其他方法将磁力转换成种子,但效果似乎不太理想。 我用过libtor

rent 的 Python 版本,不知道是我打开方式不对还是它本来效率就不高,反正愣是一个种子都没有转换成功。

最后兜兜转转用到了 aria2 发现效率还可以。这里利用多线程跑一个命令。所以要先把 aria2 安装到你的 PATH 中,具体参考官网介绍。

parse_torrent.py

解析种子文件内容,同样也是利用了 bencoder 进行解码。有了种子我们当然要看看到底是些什么资源了啦。你说世界就是这么小,在我解析出来的几百个种子文件中,居然有几个都是一个社区的,那个以 1024 为标志的社区。

有图有真相

不过我还是希望大家铭记下面这 24 字箴言

辅助代码 database.py:封装了关于 redis 的数据操作,主要是利用其集合数据结构。utils.py:一些工具函数 如何使用

获取源码及安装依赖环境

$ git clone https://github.com/chenjiandongx/magnet-dht.git$ cd magnet-dht$ pip install -r requirements.txt# 确保已经安装好 redis,redis 的具体配置可以在 database.py 里面修改。复制代码

运行项目

# 至于进程数量可以在 crawler.py 进行调整$ python manage.py -husage: manage.py [-h] [-s] [-m] [-p]start manage.py with flag.optional arguments: -h, --help show this help message and exit -s run start_server func. -m run magnet2torrent func -p run parse_torrent func复制代码 深刻的感悟

自我学编程以来,我一直都是属于兴趣驱动的,对某种技术感兴趣的话就会花时间去研究去尝试。想成为一个有趣的人,去做一些有趣的事,真心觉得能把脑海里的想法转变为代码实现是件很棒的事,即使可能这件事在别人看来并没有什么了不起。技术发展变化总是那么快,不紧跟着可能不小心就掉队了。所以希望每个真心热爱编程的人都能不忘初心,永远保持对新技术的热情,永远能从编码中找到乐趣。

项目地址

https://github.com/chenjiandongx/magnet-dht

转载于:https://juejin.im/post/5b3f77796fb9a04fb900b1af

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。