磁力搜索是python写的吗 利用Python爬取磁力种子链接

磁钢棒现在我们用迅雷等工具下载资源的时候,基本上只需要一个叫磁链接的东西,非常方便。Magnetic link是一个用于对等网络中信息检索和文件下载的计算机程序。与基于“位置”连接的统一资源定位符不同,磁链接基于元数据文件内容,属于统一资源名称。也就是说,磁链接不是基...

磁钢棒

现在我们用迅雷等工具下载资源的时候,基本上只需要一个叫磁链接的东西,非常方便。

Magnetic link是一个用于对等网络中信息检索和文件下载的计算机程序。与基于“位置”连接的统一资源定位符不同,磁链接基于元数据文件内容,属于统一资源名称。也就是说,磁链接不是基于文档的IP地址或定位符,而是在分布式数据库中,通过哈希函数值对文档进行识别和搜索来下载。因为它不依赖于启动主机来下载文档,所以它特别适合于没有中心服务器的对等网络。

磁性链接格式类似于:

磁铁:?XT = urn:btih:e7fc 73 d9 e 20697 c6c 440203 f 5884 ef 52 f 9 E4 BD 28

分解这个链接。

***gnet:协议名。xt:exact topic 的缩写,表示资源定位点。BTIH(BitTorrent Info Hash)表示哈希方法名,这里还可以使用 SHA1 和 MD5。这个值是文件的标识符,是不可缺少的。

一般来说,一个磁链只需要以上两个参数就可以找到唯一对应的资源。还有其他可选参数提供更详细的信息。

dn:display name 的缩写,表示向用户显示的文件名。tr:tracker 的缩写,表示 tracker 服务器的地址。kt: 关键字,更笼统的搜索,指定搜索关键字而不是特定文件。mt:文件列表,链接到一个包含磁力链接的元文件 (MAGMA - MAGnet MAnifest)。

种子/DHT

可以通过磁力获取种子文件并下载,和直接使用种子下载是一样的,只是省略了一个从磁力到种子文件的过程。

BitTorrent协议的种子文件可以保存一组文件的元数据。该格式文件由BitTorrent协议定义。分机一般是”。洪流”。BitTorrent使用分布式哈希表(DHT)来存储tracker torrents对等点之间的联系信息。所以每个同伴都变成了定位者。该协议基于Kademila网络,在UDP上实现。

DHT由节点组成,节点存储对等体的位置。BitTorrent客户端包含一个DHT节点,用来联系DHT中的其他节点获取peer的位置,然后通过BitTorrent协议下载。

peer: 一个 TCP 端口上**的客户端/服务器,它实现了 BitTorrent 协议。节点: 一个 UDP 端口上**的客户端/服务器,它实现了 DHT(分布式哈希表) 协议。 如果对 DHT 协议感兴趣的话一定要看下 DHT 协议 的具体内容,这里有 中文翻译版本。(想要彻底读懂项目的话一定要先了解该协议,代码都是基于该协议实现的)

实用实践

项目源

一般来说,提到Python爬行,你的第一印象可能是requests/aiohttp,或者scrapy/pyspider之类的爬虫框架。基本上都是从指定的HTML页面抓取信息。我有一个项目叫torrent-CLI(github . com/chenjian dongx/torrent-CLI),是一个从资源网站抓取磁性信息的工具。

不过,我想自给自足获得磁种。我谷歌了一下,发现每个人的基本代码都来自SIMD ht(github.com/fanpei91/simDHT)项目。首先这个项目很棒,但是有一个问题就是代码实现细节基本没有注释,和Python3不兼容。而很多类似的网上代码基本都是抄袭这个的。....

所以我知道我必须开始工作。

经过一波快乐的编码

项目结构

核心代码

crawler.py

从DHT网络获取磁性链接。主要是利用一些大型服务器tracker,伪装成DHT节点,使用UDP协议加入DHT网络的一波搜索,和其他节点搞好关系,让他们也可以共享我的资源。磁力存储在redis中,利用redis的收集特性去重。采用多线程/多进程提高抓取效率。我在本地机(i7-7700HQ/16G内存/8M网速)上运行过,效果还不错。我在4小时内爬了100万个磁环。

$ redis-cli127.0.0.1:6379> scard ***gnets(integer) 1137627

然后代码推送到我强大的1核/2G内存/1M网速阿里云服务器上运行,哎!....

***gnettotorrent_aria2c.py 利用 aria2 将磁力链接转换为种子文件。尝试了一些其他的方式将磁力转换为种子,但效果好像都不怎么理想。使用过 libtorrent 的 Python 版本,不知道是我打开方式不对还是它本来效率就不高,反正愣是一个种子都没有转换成功。

最后用aria2走了一圈,发现效率还可以。这里,使用多线程来运行命令。所以先把aria2安装到你的PATH中,请参考官网的介绍。

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

有图有真相。

但是我还是希望你记住下面的24条谚语。

辅助代码

database.py:封装了关于 redis 的数据操作,主要是利用其***数据结构。utils.py:一些工具函数

如何使用

获取源代码并安装相关环境

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

运行项目

# 至于进程数量可以在 crawler.py 进行调整$ python ***nage.py -husage: ***nage.py [-h] [-s] [-m] [-p]start ***nage.py with flag.optional arguments: -h, --help show this help message and exit -s run start_server func. -m run ***gnet2torrent func -p run parse_torrent func

本文来自Total.不想长大投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/618773.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 07-04
下一篇 07-04

相关推荐

  • 磁力搜索是什么软件

    品牌型号:联想小新Pro13/系统版本:windows10 磁力搜索就是能搜索磁力链接的搜索工具,有APP、有搜索引擎等。我们可以通过磁力搜索找到音乐、电影、影视资源、学习资料、电子书,科学论文等。常见的磁力链接下载软件是迅雷。迅雷是迅雷公司开发的一款基于多资源超线程技术的

    2023-07-18 14:41:01
    627 0
  • 磁力搜索是爬虫吗

    品牌型号:联想小新Pro13/系统版本:windows10 磁力搜索不是爬虫磁力搜索是专门用来搜索磁力链接的,也就是我们常说的BT种子磁力搜索。它是基于 P2P 技术的 ED2K 资源搜索工具。磁力链接是一种特殊链接,与传统链接不同,它只是通过不同文件内容的Hash结果生成一个纯文本的&l

    2023-07-12 18:11:01
    1034 0
  • 种子搜索神器哪个好 torrentkitty磁力搜索引擎使用方法

    哪个资源强?热门电影,小说,种子资源,百科全书,总之你想要的都在这里。这里列出了高效查找资源所必需的五个在线搜索工具。超级福利来了。相信你会喜欢职场老司机使用的五大神器工具。一、龙轩导航强大到让你刮墙,各种高强度电影,网址导航,网盘搜索。软件,APP,资源爆

    2023-07-07 22:31:01
    555 0
  • 磁力搜索是python写的吗 利用Python爬取磁力种子链接

    磁钢棒现在我们用迅雷等工具下载资源的时候,基本上只需要一个叫磁链接的东西,非常方便。Magnetic link是一个用于对等网络中信息检索和文件下载的计算机程序。与基于“位置”连接的统一资源定位符不同,磁链接基于元数据文件内容,属于统一资源名称。也就是说,磁链接不是基

    2023-07-04 00:10:01
    334 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信