Torrent磁力链接研究

《Torrent磁力链接研究》

磁力链接格式

magnet:? xl = [字节大小] & dn = [文件名(已编码URL)] & xt = urn: tree: tiger: [ TTH hash(Base32) ] 
参数
dn(显示名称)- 文件名
xl(绝对长度)- 文件字节数
xt(eXact Topic)- 包含文件散列函数值的 URN
as(可接受来源) - 在线文件的网络链接
xs(绝对资源)- P2P链接
kt(关键字)- 用于搜索的关键字
mt(文件列表)- 链接到一个包含磁力连结的元文件 (MAGMA - MAGnet MAnifest)
tr(Tracker 地址)- BT下载的Tracker URL
magnet:?xt=urn:btih:716cf8607f0cdd2b7bab810d714662e85b7da186&dn=%5B%E9%98%B3%E5%85%89%E7%94%B5%E5%BD%B1-www.ygdy8.com%5D%E6%98%8E%E6%98%9F%E7%BB%8F%E7%BA%AA%E4%BA%BA%E7%94%9F%E5%AD%98%E8%AE%B0-01.mp4&xl=798004075&tr=udp://exodus.desync.com:6969/announce&tr=udp://tracker.opentrackr.org:1337/announce

php用Torrent解释类

https://github.com/adriengibrat/torrent-rw

qBitTorrent

dnf install epel-release
//安装QT环境
yum install qt5-qtquickcontrols qt5-qtdeclarative-devel -y
dnf install qbittorrent-nox

//编译安装
https://github.com/qbittorrent/qBittorrent/wiki/Compilation:-CentOS-8.x


//开机启动
systemctl enable qbittorrent-nox@root.service
systemctl restart qbittorrent-nox@root.service

//查看运行状态
systemctl status qbittorrent-nox@root.service

//后台 
http://192.168.0.80:8080/
账号:admin
密码:adminadmin

qBitTorrent相关命令操作

//查看版本信息
# qbittorrent-nox -v
qBittorrent v4.2.5

//下载
qbittorrent-nox 


使用:
    /usr/bin/qbittorrent-nox-bin [options] [(<filename> | <url>)...]
设定:
    -v | --version             显示程序版本并退出
    -h | --help                显示帮助信息并退出
    --webui-port=<端口>          修改 Web UI 端口
    -d | --daemon              运行在守护进程模式(后台运行)
    --profile=<路径>             保存配置文件于 <dir>
    --configuration=<名称>       保存配置文件于 qBittorrent_<name> 文件夹
    --relative-fastresume      将修改 libtorrent 的快速恢复文件并使文件路径相对于设置文件夹
    文件或 URL                    下载用户传入的 torrent

添加新的 torrent 时的选项:
    --save-path=<路径>           Torrent 保存路径
    --add-paused=<true|false>  添加 torrent 时的状态为开始或暂停
    --skip-hash-check          跳过哈希校验
    --category=<名称>            指定 torrent 的分类。如果分类不存在,则会创建它。
    --sequential               按顺序下载文件
    --first-and-last           先下载首尾文件块
    --skip-dialog=<true|false> 指定在添加 torrent 时是否开启“新建 Torrent”窗口

选项的值可以通过环境变量设置。例如选项的名称为 'parameter-name',那么它的环境变量名为 
'QBT_PARAMETER_NAME'(字符大写,使用 '_' 替换 '-')。若要指定标记的值,将值设置为 '1' 或
'TRUE'。例如,若要禁用启动画面:
QBT_NO_SPLASH=1 /usr/bin/qbittorrent-nox-bin


//Torrent 完成时运行外部程序
支持的参数(区分大小写):
%N:Torrent 名称
%L:分类
%G:标签(以逗号分隔)
%F:内容路径(与多文件 torrent 的根目录相同)
%R:根目录(第一个 torrent 的子目录路径)
%D:保存路径
%C:文件数
%Z:Torrent 大小(字节)
%T:当前 tracker
%I:哈希值

//完成时运行外部程序
/root/check_torrent_finish.sh "%F" "%N" "%D" "%T" "%I" "%G" "%L" "%C"
chmod /root/check_torrent_finish.sh 0755
php /root/artisan catch:comic --action=bt_ok --msg="%F※@%N※@%D※@%T※@%I※@%G※@%L※@%C※@%R※@%Z"
//api教程详细用法:
https://github.com/qbittorrent/qBittorrent/wiki/WebUI-API-(qBittorrent-4.1)

$ curl -i --header 'Referer: http://localhost:8080' --data 'username=admin&password=adminadmin' http://localhost:8080/api/v2/auth/login
HTTP/1.1 200 OK
Content-Encoding:
Content-Length: 3
Content-Type: text/plain; charset=UTF-8
Set-Cookie: SID=hBc7TxF76ERhvIw0jQQ4LZ7Z1jQUV0tQ; path=/
$ curl http://localhost:8080/api/v2/torrents/info --cookie "SID=hBc7TxF76ERhvIw0jQQ4LZ7Z1jQUV0tQ"


/api/v2/app/preferences

aria2c

//下载
https://github.com/aria2/aria2/releases/
https://github.com/aria2/aria2/tags

安装(略)
wget https://github.com/aria2/aria2/archive/refs/tags/release-1.36.0.tar.gz

1、安装 epel 源
yum install epel-release
2、安装aria2
yum -y install aria2

mkdir /etc/aria2/   #创建目录

//从会话文件中读取下载任务
touch /etc/aria2/aria2.session
chmod 0777 /etc/aria2/aria2.session

//创建配置文件
vi /etc/aria2/aria2.conf   
-------------------------------------
#最大同时下载数(任务数), 路由建议值: 3
max-concurrent-downloads=3
#断点续传
continue=true
#同服务器连接数
max-connection-per-server=5
#最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要
min-split-size=10M
#单文件最大线程数, 路由建议值: 5
split=5
#下载速度限制
max-overall-download-limit=0
#单文件速度限制
max-download-limit=0
#上传速度限制
max-overall-upload-limit=0
#单文件速度限制
max-upload-limit=0
#断开速度过慢的连接
#lowest-speed-limit=0
#验证用,需要1.16.1之后的release版本
#referer=*
#文件保存路径, 默认为当前启动位置
dir=/tmp/torrent
#文件缓存, 使用内置的文件缓存, 如果你不相信Linux内核文件缓存和磁盘内置缓存时使用
#disk-cache=0
#另一种Linux文件缓存方式
#enable-mmap=true
#文件预分配, 能有效降低文件碎片, 提高磁盘性能. 缺点是预分配时间较长
file-allocation=prealloc
# 禁用IPv6, 默认:false
disable-ipv6=false
 
## 进度保存相关 ##
# 从会话文件中读取下载任务
input-file=/etc/aria2/aria2.session
# 在Aria2退出时保存`错误/未完成`的下载任务到会话文件
save-session=/etc/aria2/aria2.session
# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
save-session-interval=60
 
## RPC相关设置 ##
# 启用RPC, 默认:false
enable-rpc=true
# 允许所有来源, 默认:false
rpc-allow-origin-all=true
# 允许非外部访问, 默认:false
rpc-listen-all=true
# 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同
#event-poll=select
# RPC监听端口, 端口被占用时可以修改, 默认:6800
rpc-listen-port=6800
# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
rpc-secret=<TOKEN>
# 设置的RPC访问用户名, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-user=<USER>
# 设置的RPC访问密码, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-passwd=<PASSWD>
# 是否启用 RPC 服务的 SSL/TLS 加密,
# 启用加密后 RPC 服务需要使用 https 或者 wss 协议连接
#rpc-secure=true
# 在 RPC 服务中启用 SSL/TLS 加密时的证书文件,
# 使用 PEM 格式时,您必须通过 --rpc-private-key 指定私钥
#rpc-certificate=/path/to/certificate.pem
# 在 RPC 服务中启用 SSL/TLS 加密时的私钥文件
#rpc-private-key=/path/to/certificate.key
 
## BT/PT下载相关 ##
# 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true
#follow-torrent=true
# BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999
listen-port=51413
# 单个种子最大连接数, 默认:55
#bt-max-peers=55
# 打开DHT功能, PT需要禁用, 默认:true
enable-dht=false
# 打开IPv6 DHT功能, PT需要禁用
#enable-dht6=false
# DHT网络监听端口, 默认:6881-6999
#dht-listen-port=6881-6999
# 本地节点查找, PT需要禁用, 默认:false
#bt-enable-lpd=false
# 种子交换, PT需要禁用, 默认:true
enable-peer-exchange=false
# 每个种子限速, 对少种的PT很有用, 默认:50K
#bt-request-peer-speed-limit=50K
# 客户端伪装, PT需要
peer-id-prefix=-TR2770-
user-agent=Transmission/2.77
peer-agent=Transmission/2.77
# 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0
seed-ratio=1
# 强制保存会话, 即使任务已经完成, 默认:false
#force-save=false
# BT校验相关, 默认:true
#bt-hash-check-seed=true
# 继续之前的BT任务时, 无需再次校验, 默认:false
bt-seed-unverified=true
# 保存磁力链接元数据为种子文件(.torrent文件), 默认:false
bt-save-metadata=true

启动服务

4 测试启动
aria2c --conf-path=/etc/aria2/aria2.conf
5 后台启动
aria2c --conf-path=/etc/aria2/aria2.conf -D


//作为系统服务
vi /usr/lib/systemd/system/aria2.service 
[Unit]
Description=Aria2
[Service]
ExecStart=/usr/bin/aria2c --conf-path=/etc/aria2/aria2.conf --enable-rpc
PrivateTmp=false
[Install]
WantedBy=multi-user.target

----------------------------
systemctl daemon-reload

systemctl enable aria2 
systemctl restart aria2
systemctl status aria2

使用

使用aria2的分段和多线程下载功能可以加快文件的下载速度,对于下载大文件时特别有用。-x 分段下载,-s 多线程下载,如
aria2c -s 2 -x 2 http://xx.com/xx
aria2c '磁力链接'

aria2c -S bit.torrent 看种子中文件

参数说明

用法:aria2c [OPTIONS] [URI | MAGNET | TORRENTFILEILE | METALINK_FILE]...
正列出附有标签“#basic”的选项。
参见“aria2c -h#help”以获知所有可用标签。
选项:
 -v, --version                打印版本号并退出。

                              标签: #basic

 -h, --help[=#标签|关键字]    显示用法并退出。
                              帮助信息按照以“#”开头的标签分类。
                              例如,输入“--help=#http”会得到带“#http”
                              标签的各选项的用法。
                              如果指定了非标签的词,那么打印名字含这个词
                              的各选项的用法。

                              可能的取值: #basic, #advanced, #http, #https, #ftp, #metalink, #bittorrent, #cookie, #hook, #file, #rpc, #checksum, #experimental, #deprecated, #help, #all
                              默认: #basic
                              标签: #basic, #help

 -l, --log=日志               日志文件名称。如果指定“-”,
                              日志将被写到标准输出。

                              可能的取值: /path/to/file, -
                              标签: #basic

 -d, --dir=目录               用于存储已下载文件的目录。

                              可能的取值: /path/to/directory
                              默认: /usr/local/aria2-release-1.36.0
                              标签: #basic, #file

 -o, --out=FILE   文件保存名字。此文件将以此名字永久保存在 -d 
                              参数所指定的相对路径下。当 -Z 参数被启用时, 
                              此选项报废。

                              可能的取值: /path/to/file
                              标签: #basic, #http, #ftp, #file

 -s, --split=N                使用 N 个连接下载文件。如 N 小于需要下载的 URI 数量,
                              那么将使用所有连接,剩余的 URL 将作为候补。
                              如 N 大于需要下载的 URI 数量,多余的 URL 将用于并行下载。
                              到主机的连接数量受 --max-connection-per-server 选项限制。
                              参见 --min-split-size 选项。

                              可能的取值: 1-*
                              默认: 5
                              标签: #basic, #http, #ftp

 --file-allocation=方式       指定文件分配方式。
                              “none”选项表示不预分配空间。
                              “prealloc”选项表示在下载开始前预先分配空间。
                              根据文件的大小,这可能会花费一些时间。
                              如果您正在使用新型文件系统如 ext4(启用扩展属性支持),
                              btrfs,xfs 或 NTFS(仅限 MinGW 环境构建),
                              “falloc”是您最好的选择。
                              它几乎能在一瞬间完成很大(几个 GiB)文件的预分配。
                              但注意在比较旧的文件系统如 ext3 和 FAT32 上不要使用“falloc”
                              因为在这些文件系统上该选项花费的时间和“prealloc”
                              不相上下,并且在分配完成前 aria2 进程会被完全阻塞。
                              如果您的系统中 posix_fallocate() 函数不可用,
                              “falloc”选项将不适用。
                              “trunc”将调用 ftruncate() 系统指令或平台的相应功能
                              来裁剪获得指定大小的文件。

                              可能的取值: none, prealloc, trunc, falloc
                              默认: prealloc
                              标签: #basic, #file

 -V, --check-integrity[=true|false]  通过校验文件块或整文件哈希检查文件的完整性。
                              该选项仅对 BitTorrent、带校验和的 Metalink 和(启用
                              --checksum 选项时)HTTP(S)/FTP 下载有效。
                              如提供的是文件块的校验和,在下载时就可自动校验并重试
                              损坏的部分;换成整文件,就必须等到下载完成才能校验。
                              (哪种校验值可用?)这取决于文件长度。
                              如果校验失败,文件将被重新下载。如果同时提供了按块的
                              校验值和全文件校验值,那么只会使用块哈希。

                              可能的取值: true, false
                              默认: false
                              标签: #basic, #metalink, #bittorrent, #file, #checksum

 -c, --continue[=true|false] 继续下载一个仅部分完成的文件。
                              使用这个选项来继续下载一个由浏览器或其他程序从开头单线程下载的文件。
                              目前这个选项仅能用于 http(s)/ftp 下载。

                              可能的取值: true, false
                              默认: false
                              标签: #basic, #http, #ftp

 -i, --input-file=文件        下载 <文件> 中列出的地址。
                              可以一次使用多个地址,在同一行里使用制表符分隔多个地址。使用“-”时从标准输入读取。
                              另外,在每一行地址后可以指定选项。包含选项的行必须以至少一个空格开始,并且每行一个选项。
                              在 man 手册中查看 INPUT FILE 章节。另见 --deferred-input 选项。

                              可能的取值: /path/to/file, -
                              标签: #basic

 -j, --max-concurrent-downloads=N 设置每个静态(HTTP/FTP)URL、种子和 metalink 的最大并行
                              下载速度。
                              参见 --split 和 --optimize-concurrent-downloads 选项。

                              可能的取值: 1-*
                              默认: 5
                              标签: #basic

 -Z, --force-sequential[=true|false] 从命令行顺序获取链接,
                                     并以单独的会话下载每个链接,
                                     如同其他常见的命令行下载工具。

                              可能的取值: true, false
                              默认: false
                              标签: #basic

 -x, --max-connection-per-server=N   每个下载中对单个服务器的最大连接数。

                              可能的取值: 1-16
                              默认: 1
                              标签: #basic, #http, #ftp

 -k, --min-split-size=SIZE aria2 不分割小于 2 * SIZE 字节范围的文件。例如,让我们考虑下载 20MiB 的文件,如果 SIZE 为10M,aria2 可以将文件拆分为2个[0-10MiB]和[10MiB-20MiB]的文件,并使用 2 个源(如果 --split>=2)下载它。如果 SIZE 为 15M,由于 2 * 15M>20MiB,aria2 不会拆分文件并使用 1 个源下载。你可以追加 K 或 M(1K = 1024,1M = 1024K)。

                              可能的取值: 1048576-1073741824
                              默认: 20M
                              标签: #basic, #http, #ftp

 --ftp-user=用户              设置 FTP 用户。此设置对所有 URL 有效。

                              标签: #basic, #ftp

 --ftp-passwd=密码            设置 FTP 密码。此设置对所有 URL 有效。

                              标签: #basic, #ftp

 --http-user=用户             设置 HTTP 用户。此设置对所有 URL 有效。

                              标签: #basic, #http

 --http-passwd=密码           设置 HTTP 密码。此设置对所有 URL 有效。

                              标签: #basic, #http

 --load-cookies=文件          从文件载入 Cookies,使用 Firefox3
                              及 Mozilla/Firefox(1.x/2.x)/Netscape 格式。

                              可能的取值: /path/to/file
                              标签: #basic, #http, #cookie

 -S, --show-files[=true|false]  打印 .torrent,.meta4 和 .metalink 这类
                         文件内含的文件列表,然后退出。
                         如果是 torrent 文件,会给出更详细信息。

                              可能的取值: true, false
                              默认: false
                              标签: #basic, #metalink, #bittorrent

 --max-overall-upload-limit=SPEED 设置全局最大上传速度为 SPEED bytes/sec.
                              0 意味着不限制。使用 K 或 M (1K = 1024, 1M = 1024K) 也是可
                             以的。您也可以使用 --max-upload-limit 可以为单个 torrent 文件限速。

                              可能的取值: 0-*
                              默认: 0
                              标签: #basic, #bittorrent

 -u, --max-upload-limit=速度  设置每个 torrent 的最大上传速度 (Bytes/s)。
                              0 意味着不限制。
                              可附加 K 或 M(1K=1024,1M=1024K)。
                              要限制总体上传速度,请使用 --max-overall-upload-limit 选项。

                              可能的取值: 0-*
                              默认: 0
                              标签: #basic, #bittorrent

 -T, --torrent-file=种子文件      指定 .torrent 文件的路径。

                              可能的取值: /path/to/file
                              标签: #basic, #bittorrent

 --listen-port=端口...        设置 BitTorrent 下载使用的 TCP 端口。
                              使用“,”可以指定多个端口,例如:
                              “6881,6885”。您也可以使用“-”指定一个范围:
                              “6881-6999”。“,”和“-”可以一起使用。

                              可能的取值: 1024-65535
                              默认: 6881-6999
                              标签: #basic, #bittorrent

 --enable-dht[=true|false]    启用 IPv4 DHT 功能。
                              同时也启用 UDP Tracker 服务器支持。
                              如果种子中设置了“私有 (private)”旗标,无论此项真假,
                              aria2 都不会使用 DHT。

                              可能的取值: true, false
                              默认: true
                              标签: #basic, #bittorrent

 --dht-listen-port=端口...    设置 DHT(IPv4, v6) 和 UDP Tracker 的 UDP 监听端口。
                              可以使用 "," 指定多个端口(如:"6881,6885"),也可用
                              "-" 指定范围(如:"6881-6999")。"," 和 "-" 可共用。

                              可能的取值: 1024-65535
                              默认: 6881-6999
                              标签: #basic, #bittorrent

 --enable-dht6[=true|false]   启用 IPv6 DHT 功能。
                              使用 --dht-listen-port 选项指定要监听的端口。
                              参见 --dht-listen-addr6 选项。

                              可能的取值: true, false
                              默认: false
                              标签: #basic, #bittorrent

 --dht-listen-addr6=ADDR 指定要绑定的IPv6 DHT套接字地址。
                             它应该是一个全球单播IPv6地址的主机。

                              标签: #basic, #bittorrent

 -M, --metalink-file=METALINK_文件 .meta4 和 .metalink 的路径。
                              如果指定了“-”,从标准输入读取。

                              可能的取值: /path/to/file, -
                              标签: #basic, #metalink

URI, MAGNET, TORRENT_FILE, METALINK_FILE:
 您可以指定多个 HTTP(S)/FTP URI。除非您设置了 -Z 选项,所有 URI 必须指向
 同一文件,否则下载会失败。
 您也可以指定任意数量的 BitTorrent Magnet URI 或储存在本地的 torrent/
 metalink 文件。请注意,它们总是作为单独的下载处理。
aria2c ‘magnet:?xt=urn:btih:248D0A1CD08284299DE78D5C1ED359BB46717D8C’

报错 [ERROR] IPv6 BitTorrent: failed to bind TCP port 6923

vi /etc/sysctl.conf
------------------------
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
---------------------------
sysctl -p 重新加载配置。
点赞

发表评论

邮箱地址不会被公开。 必填项已用*标注