aria2b
aria2b copied to clipboard
新增功能:监视客户端进度,ban掉吸血且一直汇报无进度的客户端IP
背景
- 最近发现有许多客户端(大多是随机id)吃大量上传,但进度一直汇报为0。 本来一般吸血吧,但也有据说是PCDN为了平衡上下行比例恶意刷流量的(来源:[差评君的微博](https://weibo.com/5734325998/Oqgeha9bp ) 。
- 我发现我居然能吸到迅雷的血
所以还是不要一刀切地按名字ban啰
逻辑
初筛(也就是最长那行if)
- 名称符合config.noprogress_keywords
- 上传速度大于1KiB/s(太少就不管了吧,节约点性能,毕竟我写的应该一言难尽)
- 汇报进度为0(
aria2.getPeers的bitfield全为0)- TODO:不为0时也可以算下增幅够不够
符合的再进行下列判断
判断规则
注:使用扫描时的瞬时速度当作扫描间隔里的平均速度,统计对每个peer的上传量(因为没找到aria2c RPC怎么获取现成/精确的每个peer的上传量,transmission倒是有)
- 上传了超过5个块的量
- 进度为0(以后可以改成各种进度不对劲的都算)
- 持续超过10次扫描
就ban IP
注意事项
- 每个种子的每个peer客户端的上传量都存在全局变量里的,应该不会爆吧
- 第一次写JS && 第一次提正经PR,请勿轻易合并或盲目运行
我觉得看起来好像差不多了?至少在我这儿(Node.js LTS release: Hydrogen 18.20.4-1)跑起来挺欢快的
来点日志看看么(IP记得打码)
// 我现在不太方便很少下种子,就没办法测试了
我取消注释了app.js第120行的printpeer,所以会把通过初筛(也就是最长那行if) 的peer全部打印出来,并且PeerId后面还加了一列Ep集数。
--block-keywords="AAAAAAAAAA"是为了不让迅雷一上来就被ban
log-pr.txt
好像太早 approve 了, 今天看了下代码 好像没有关掉 「监视客户端进度」 功能的选项? 增加了的话我再测试下 然后 npm 发版
--noprogress-keywords=""也能关吧……