pt吧 关注:212,947贴子:11,206,538

【230607】聊聊昨晚遇到的辅种怪事以及解决过程

只看楼主收藏回复

前言
大家辅种应该都用iyuu,可我一直用惯了cross-seed,再加上可以统一把索引只设置到一处(jackett/prowlarr)的管理一致性优点,我没有改变cross-seed和jackett这个组合的想法。最近pt的瓜太多,又是吵又是挂人,还有满天飞的求药。
我不求药不发药,不做教程不安利工具,仅仅分享下昨晚遇到的辅种怪事吧,大伙当故事会听就行,不必较真。
一、起因
昨晚偶然发现,我新入不久的某一站点的做种数不对劲,只有个位数,我疑惑我怎么忘了给这个站辅种了呢,随即另开了一个辅种的临时容器,单独给此站开扫,运行结束后看着日志的“Found 66 cross seeds from 445 original torrents”我心满意足地离开案发现场。
可奇怪的事情来了,辅种的qb只有数个新增的校验,等待了十来分钟校验结束后,站点的网页显示做种确实只增加了新增的那几个种子。说好的66个cross seeds呢?应该有50多个新增校验种子才对。
二、辅种流程
我的辅种流程是这样的,一个qb下载一个qb-cross辅种,qb下载完通知cross-seed去辅种,cross-seed只做种子比较,索引是jackett做的,最终把种子添加到qb-cross开始种子校验,这一套流程伴随着我接近一年的p龄,一直没出现过太大的问题。

我手动向【辅种器】触发了几次对此站点的辅种,问题依旧,于是我开始对一个个环节进行排查。
三、开始排查【下载器-辅种】
首先我需要确认种子是否添加进了【下载器-辅种】。我随机拿几个【辅种器】日志中显示了辅种辅上、但网站没显示做种的种子去【下载器-辅种】搜索,发现这个种子的确在【下载器-辅种】里面,完成了校验进度100%并正在上传,但tracker的状态居然是出错的:“Invalid authkey”(此时的authkey假设是‘12345|6789|AAAAA’),它告诉我秘钥错了?可是我明明没有重置过任何东西。在这个环节我至少确定了【下载器-辅种】从【辅种器】那里拿到了种子,也成功校验了种子。

四、【辅种器】和【索引器】
下一步我去检查【辅种器】对【索引器】的请求,和【索引器】对【辅种器】返回了什么搜索结果,根据双方的日志,【辅种器】调用的api确定是每一部电影正确的请求,【索引器】也返回了所有这个电影的种子作为结果给到【辅种器】去匹配,最后【辅种器】也从这个电影的所有种子中匹配到了相同的种子。

五、错误的authkey
我想,问题当然是落到了站点身上,难道我的秘钥真的不对吗?我从站点的种子页面直接下载了种子文件,添加到【下载器-辅种】,完成校验后开始上传,tracker竟然正常工作!这样看来站点毫无问题,我的秘钥是有效的。我当即检查此tracker,发现authkey是‘12345|6789|BBBBB’,而上文中同一个种子,无法工作的种子,其tracker的authkey是‘12345|6789|AAAAA’。天了噜,【索引器】和【辅种器】挑出来的种子是authkey是AAAAA,而直接从站点页面下的种子的authkey是BBBBB,而AAAAA在tracker汇报中是错误的authkey,正确的是BBBBB!为什么【索引器】和【辅种器】这两玩意会从站点得到一个带着错误authkey的种子!

六、【索引器】是不是内鬼
【索引器】获得的种子是否正确?我清理了【索引器】的缓存之后手动触发一遍流程,打开了【索引器】的缓存种子列表,列表的电影确实是新的,刚从网页拿的,那种子的下载链接肯定也是新的,为了印证,我从【索引器】直接下载这个电影的种子,手动去【下载器-辅种】添加上,不等校验直接查看authkey,果然是BBBBB。这样看来【索引器】也没有问题。

七、一定是【辅种器】搞的鬼
经过一个多小时折磨,我完全确定了【辅种器】从【索引器】得到的是BBBBB,但发给【下载器-辅种】的却是AAAAA,种子的哈希相同,种子名也相同,就是同一个种子。
但authkey就是不同,authkey不同意味着不可能是同一个torrent文件或是同一个磁链,否则authkey必然相同。接着我只需要找出为什么【辅种器】没有发送【索引器】的种子文件给【下载器-辅种】即可,以及搞清楚AAAAA的错误authkey的种子文件是怎么来的。
我去逛了一下cross-seed的issue,搜了几个关键词,没有太大的收获,open的不太多只有三十多个,看完了都跟我的情况关系不大。
后来我去看了一遍它的官方教程,有了意外收获

好家伙,我曾经只要修改配置我都会翻出这个官方教程看配置文件怎么改,唯独没有看过相关里面的命令交互。这玩意居然有缓存!!!
想想也是,多个站辅单个电影,或是多个电影辅单个站,不管是什么逻辑,难道都要把种子一遍遍下载嘛?当然会有缓存。哈希对上了直接用缓存即可!
错误的AAAAA种子在缓存中!【索引器】发BBBBB的种子信息和种子链接给【辅种器】,后者对了一遍哈希直接用了缓存中的AAAAA种子——【辅种器】当然不会请求种子链接徒增负担,因为他们哈希相同!
既然存在缓存,我不需要管命令如何清除它,它肯定存在docker bind的文件夹里。果然,找到一个缓存文件夹,全是缓存种子,以“种子的哈希.cahe.torrent”命名

全删了之后,再次手动去触发一次辅种流程,【下载器-辅种】得到了authkey为BBBBB的正确种子!
八、水落石出
为什么这个站点我会有两个authkey?我把【辅种器】的日志调出来看,筛选出这个站点所有成功辅上的种,终于真相大白,水落石出。
所有authkey错误为AAAAA的种子第一次下载的时间都靠前,所有authkey正确为BBBBB的种子第一次下载的时候都靠后!【辅种器】在第一次下载得到种子的时候就给它缓存了,以后不管多少次向【索引器】请求这部电影,得到的种子链接都不会去用,而是直接用第一次下载的缓存。
我客观上确实换过了秘钥!但主观上没有,我不可能梦游起床开电脑吧。

我翻看时间,猜出了为什么我的秘钥会更改——站点在我注册没几天就因意外进行了数据回退,而回退的时间在我注册之前!严格意义上来说我第一个号已经没了,我从来没有注册过,这是一个“新”号,虽然它们同id同邮箱。账号在回退之后再一次生成,秘钥当然会不同。

后记
事情就这样结束了,我把全盘的资源都在这个站成功辅上了,查原因的过程中还因为需求造了一些轮子,筛选种子tracker、删除种子的测试脚本之类的,也算是以后改改也能用吧。
其实我在弄清楚这件事情的过程中发现了额外的东西,关于中文开头接英文再接年份的种子命名(这个电影命名很规范很常规),在jackett和cross-seed之间会存在中文urldecode的问题,这个问题导致我少辅了一些种子,要不是这件事我还发现不了。今天又测试了一下,问题确实存在,也不是没有urldecode,确信已经decode,这应该是个不大不小的bug(有可能)。


IP属地:广西1楼2023-06-07 22:16回复
    看不懂,但是觉得很厉害


    IP属地:江苏来自Android客户端3楼2023-06-07 22:36
    回复
      分析能力不错缓存增加了效率,但是数据一致性方面增加了复杂度。


      IP属地:辽宁来自Android客户端4楼2023-06-07 22:51
      回复
        大佬nb,最近正在逐步玩jackett+crossseed,有机会可以多交流


        IP属地:广东来自iPhone客户端5楼2023-06-07 22:55
        回复
          dd


          IP属地:北京6楼2023-06-07 23:00
          回复
            虽然没用过jeckett和cross-seed,但是算是大致看明白了。
            站点数据回退导致authkey改变,但是索引器里的缓存还是原来的,所以导致很多种辅不上。
            站点回退可能是和上个月因为np漏洞被黑客入侵有关吧,另外最近好几个站把tracker所用的authkey替换成passkey了,可能也有关系。
            我能理解楼主为什么写这么一篇长文来分享经历了,发现问题->通过思考、搜索、排查锁定问题源头->最终豁然开朗,成功解决问题,这一整套流程沉浸进去非常爽,心理学上称为心流,俗称折腾的乐趣,我也有过相似的经历。


            IP属地:浙江来自Android客户端8楼2023-06-07 23:10
            收起回复
              思维很缜密,逻辑很清晰,楼主牛,换我直接放弃


              IP属地:湖南来自Android客户端9楼2023-06-07 23:17
              回复
                名侦探啊是,能排查到站点回退了是真厉害


                IP属地:安徽来自手机贴吧10楼2023-06-07 23:22
                回复
                  绑定大佬


                  IP属地:江西来自Android客户端11楼2023-06-07 23:27
                  回复
                    厉害 话说如果用passkey而不是authkey是不是就不会有这个问题。
                    另外请问jackett和prowlarr哪个好


                    IP属地:北京来自iPhone客户端12楼2023-06-07 23:30
                    收起回复
                      我都iyuu佛系,有輔到就輔,沒有就算了,已經不想折騰了


                      IP属地:中国台湾来自iPhone客户端13楼2023-06-07 23:32
                      回复
                        写的很好啊 绑定大佬


                        IP属地:山东来自Android客户端14楼2023-06-08 00:03
                        回复
                          太牛神人超棒!


                          IP属地:天津来自iPhone客户端16楼2023-06-08 00:40
                          回复
                            呵呵,也是看了个热闹,没弄懂门道


                            IP属地:天津来自iPhone客户端17楼2023-06-08 00:41
                            回复
                              绑定


                              IP属地:新疆来自iPhone客户端18楼2023-06-08 00:52
                              回复