您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

利用Python来获取源源不断的种子!想看啥类型的就获取啥类型的!

5b51 2022/1/14 8:24:53 python 字数 9214 阅读 702 来源 www.jb51.cc/python

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

概述

磁力链接

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

利用Python来获取源源不断的种子!想看啥类型的就获取啥类型的!

进群:548377875   即可获取数十套PDF哦!

磁力链接格式类似于 :

magnet:?xt=urn:btih:E7FC73D9E20697C6C440203F5884EF52F9E4BD28

分解一下这个链接

一般来讲,一个磁力链接只需要上面两个参数即可找到唯一对应的资源。也有其他的可选参数提供更加详细的信息。

种子/DHT

通过磁力就可以获取种子文件从而进行下载,这跟直接使用种子下载时一个道理的,只是少了从磁力到种子文件一个过程而已。

利用Python来获取源源不断的种子!想看啥类型的就获取啥类型的!

DHT 由节点组成,它存储了 peer 的位置。BitTorrent 客户端包含一个 DHT 节点,这个节点用来联系 DHT 中其他节点,从而得到 peer 的位置,进而通过 BitTorrent 协议下载。

利用Python来获取源源不断的种子!想看啥类型的就获取啥类型的!

务实的实践

项目来源

一般来讲到 Python 爬取,大家的第一印象可能就是 requests/aiohttp,或者是 scrapy/pyspider 等爬虫框架。基本上都是从指定的 HTML 页面爬取信息。我有一个项目 torrent-cli(github.com/chenjiandongx/torrent-cli) 就是一个从资源网站上爬取磁力信息的工具。

利用Python来获取源源不断的种子!想看啥类型的就获取啥类型的!

然而我想自给自足获取磁力种子,Google 了一番,发现大家基本上的代码都是从 simDHT(github.com/fanpei91/simDHT)这个项目来的,首先这个项目很棒,但是有个问题就是代码实现细节基本没有一行注释且不兼容 python3。而很多网上同类的代码基本上也是对这个照搬....

所以我知道我要开始干活了

利用Python来获取源源不断的种子!想看啥类型的就获取啥类型的!

经过一波 happy coding 之后

利用Python来获取源源不断的种子!想看啥类型的就获取啥类型的!

项目结构

核心代码

从 DHT 网络中获取磁力链接。主要是利用一些大型的服务器 tracker,冒充 DHT 节点,使用 UDP 协议加入到 DHT 网络中一波搜索以及和其他节点搞好关系,让他们也分享我点资源。磁力数据存放在了 redis,利用 redis 的集合特性来去重。使用了多线程/多进程,用于提高爬取效率。在我的本地机器(i7-7700HQ/16G 内存/8M 网速)跑了一下,效果还不错,4 小时爬了 100 万条磁力链接

$ redis
-
cli
127.0
.
0.1
:
6379
>
 scard magnets
(
integer
)

1137627

1137627

1137627

然后代码推送到我那台性能强悍 1 核/2G 内存/1M 网速阿里云服务器跑一下,哎....

利用Python来获取源源不断的种子!想看啥类型的就获取啥类型的!

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

利用Python来获取源源不断的种子!想看啥类型的就获取啥类型的!

有图有真相

利用Python来获取源源不断的种子!想看啥类型的就获取啥类型的!

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

利用Python来获取源源不断的种子!想看啥类型的就获取啥类型的!

辅助代码

如何使用

获取源码及安装依赖环境

$ 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 -h
usage
:
 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

[-
s
]

[-
m
]

[-
p
]
start manage
.
py
with
flag
.
optional arguments
:

exit

s run start_server func
.

m run magnet2torrent func

p run parse_torrent func

[-
s
]

[-
m
]

[-
p
]
start manage
.
py
with
flag
.
optional arguments
:

exit

s run start_server func
.

m run magnet2torrent func

p run parse_torrent func

深刻的感悟

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

总结

以上是编程之家为你收集整理的利用Python来获取源源不断的种子!想看啥类型的就获取啥类型的!全部内容,希望文章能够帮你解决利用Python来获取源源不断的种子!想看啥类型的就获取啥类型的!所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶