【原理篇】qBittorrent下载+转种Transmission快校版+IYUUPlus辅种教程⼀、前⾔
之前写了篇教程,,主要讲述了使⽤Docker部署常⽤⼯具及反向代理上https,之前预告过还写⼀篇辅种教程合集的,故有了此篇教程,但是发现内容实在太多,这是第⼀篇原理篇,还有⼀份操作篇另起⼀⽂。
⼆、服务种类
之前⼀直使⽤qBittorrent下载、保种,因为数量不多,除了内存占⽤较⼤没发现什么问题,只是后来使⽤IYUU Plus辅种后,⼤⽂件重新校验实在等待太漫长,所以换成了Transmission快校版,也就是快速校验版本,和跳过检查相⽐,原理就是抽检,所以速度快了不少。
本次教程⾥⾯主要包含下⾯⼏个服务:
qBittorrent
Transmission快校版
IYUU Plus
三、原理解释
独孤曼陀结局刚把IYUU Plus的源码clone下来看了⼀下,下⾯是我理解的IYUU Plus转种+辅种流程。
因为我不是写Web的,也不会PHP语⾔,所以理解的不⼀定对,如果理解错了,欢迎指正。
1. 辅种
⾸先,我们⽤qb去A站点去下载我们想看的电影,A站点会⽣成⼀个有我们passkey的种⼦⽂件,我们的qb就可以使⽤这个种⼦去下载电影了,但是去哪⾥下载呢,这就是tracker的作⽤,A站的tracker实时的告诉我们当前有哪些⼈在下这个⽂件和下载了多少,这个时候qb就可以⽤这些信息直接去连接正在下载的这些⼈的电脑,所以这是为什么需要公⽹IP的原因,因为你有公⽹IP这样其他想下载相同⽂件的⼈才能更快地连上你。
当我们下载完成后,只有A站点知道你下载了这个⽂件,⽽且正在做种,也就是将这个⽂件提供上传给其他正在下载相同⽂件的⽤户,但是实际上B站点和C站点,他们也有⼀个和你这个⼀模⼀样的资源,你也想为B站点和C站点的⽤户提供上传,并且让B站点和C站点知道(因为这样才能计算魔⼒是不是),这个时候我们⽤A站点下载的⽂件,也为B站点和C站的⽤户做种,这个过程就叫辅种。
但是怎么让B站点C站点知道你有这个⽂件呢,是不是只要我们去B站点和C站点下载相同⽂件的种⼦,然后跳过下载这个过程(因为这个⽂件你已经从A站点下载完成了),直接告诉B站点和C站点的服务器,这个⽂件我已经下完啦,现在可以做种了!
这个时候B站点和C站点下载这个⽂件的⽤户是不是也可以连上你,然后从你这边下载⽂件了。
因上⾯有告诉B站点和C站点你已经有这个⽂件了的过程了,所以这时候B站点和C站点tracker和A站点⼀样,也会告诉你现在有哪些⼈在下这个⽂件和下载了多少,也可以为你计算上传量和魔⼒了是不是。
从服务器的⾓度来看,B站点和C站点看你和A站点⼀模⼀样,都是你有这么⼀个⽂件,你可以为其他⼈做种,唯⼀的区别的就是辅种的站点省去了下载这个过程,所以,B站点和C站点不会计算你的下载量。
2. 检验
看完上⾯,我们是不是有⼀个疑问,怎么保证我从A站点和B站点和C站点的种⼦下载的是同⼀个⽂件呢,所以当我们下载完上B站点和C站的种⼦时,你想跳过下载这个过程,证明你已经有这个⽂件的过程,就是校验过程。
种⼦⽂件会记录你这个⽂件有多少块,已经每⼀块对应的hash,检验⽂件就是把你本地的⽂件读⼀遍,每⼀块都算⼀遍,看看是否与种⼦记录的信息⼀致。
⼀个种⼦⾥包含的信息⽰列:
但是当你⽂件很⼤的时候,你要辅种的站很多的时候,是不是每个站都要校验⼀遍,⾮常耗时?所以这也是我选择Transmission快校版的原因,就是告诉tr,差不检查检查就⾏了,开头,中间,结尾(简单化描述)都抽检⼀下,都对的话,我们就认为⽂件⼀致,这样的话是不是会快很多。
3. 转种
其实上⾯的辅种操作,我们完全可以在⼀个下载器⾥⾯完成,⽐如qb下载,qb辅种,但是正因为我觉得太慢,换成了tr快校版。
将qb⾥⾯的的种⼦,转移到tr⾥⾯,这个过程就叫做转种(当然,不局限这2个)。
四、IYUU
1.辅种运球基本功
传统纹饰那辅种的难点在哪⾥呢,是不是就是我怎么知道A站点的种⼦对应着B站点和C站点的哪⼀个种⼦呢?所以IYUU解决的第⼀个痛点就是他的服务器数据库记录着相同⽂件,在不同的站点分别对应着哪⼀个种⼦,运⾏辅种任务的时候,将种⼦的信息发给服务器,服务器返回给我们其他站的种⼦信息,然后再将其他站的种⼦直接发送给我们⽤来保种的下载器不就⾏了。
这⾥多说两句,实际上我们查询时,我们的IYUU客户端IYUU服务端发起查询请求,请求参数包含我们扫码⽣成的Token和种⼦⽂件
的info_hash:
IYUU服务器返回查询结果,查询成功的json⽂件⽰列如下:
{
"ret":200,
"data":[
演员赵立新事件{
"sid":3,
"torrent_id":377467,
"info_hash":"a444850638e7a6f6220e2efdde94099c53358159"
文综是哪几科},
{
"sid":7,
化装品品牌"torrent_id":35538,
"info_hash":"cf7d88fd656d10fe5130d13567aec27068b96676"
}
],
"msg":"",
"version":"1.0.0"
}
返回信息中的sid对应着是哪⼀个站点,torrent_id对应着这个种⼦在这个站点的id,info_hash你可以理解为这个种⼦的⾝份号。
我们本地的IYUU客户端,就根据返回的信息,以及我们设置的是否需要https,我们设置的passkey,id就是返回信息中的torrent_id,拼接我们的种⼦下载信息,最终拼接如下:
/download.php?https=1&id=377467&passkey=your_passkey
普通站点使⽤这个连接就可以直接下载种⼦了,所以我们直接将这个链接发给tr,tr使⽤链接添加种⼦。
但是有的站点毕竟严格,这样是⽆法直接下载的,必须要⽤验证cookie,所以这是有的站点需要配置cookie的原因,⽽这个时候我们模拟浏览器将这个种⼦⽂件给下载下下来,将这个种⼦⽂件直接推给tr就⾏了,这也是上图中B站点和C站点的区别。
第⼆个痛点就是批量操作,就算你知道其他站的种⼦是哪个,当你的种⼦和站点数量上去的时候,是不是就要操作m*n次?IYUU就是帮我们把下载种⼦,推送这个操作给⾃动完成了。
2. 转种
当我们使⽤qb下载的时候,是不是qb管理着这个种⼦⽂件着这个种⼦对应的电影的⽂件夹,但是我们想把这个种⼦让tr来做种的时候,tr是不是也需要知道这个信息。
IYUU做的就算要把这个种⼦和个种⼦对应的电影的⽂件夹传给tr,然后让tr去连接站点的tracker,告诉服务器,这个种⼦和他对应的⽂件我有呢,可以连接我进⾏下载!这个时候,我们的转种操作是不是就已经完成了,种⼦和他所存放的这个⽂件就是接⼒棒,qb将这个接⼒棒递给了tr。
这⾥多说⼀句,是不是选项⾥⾯有⼀个是否删除原种⼦,因为和接⼒的区别是这根接⼒棒是可以复制
的,等于不删除的话,qb和tr⼿⾥是不是都有⼀根棒⼦,这个时候任⼀客户端都是可以做种的,但因为⼲的是同⼀件事,我们的电脑资源是有限的,这个事情让⼀个⼈⼲就⾏了,所以转种成功后,可以在qb⾥删除原种⼦。
但是不建议⾃动删除,因为万⼀你设置有误,tr没有成功,qb⾥的种⼦也删除了,是不是所有的种⼦都没有了。⽽且切记不要勾上删除硬盘上的⽂件,因为我们只是想让qb不要管理这些种⼦了,但是这些种⼦对应的⽂件还是需要的,因为⼀旦删除⽂件,tr那边就会发现⽂件没有了,然后报错。