适用于 BitComet 的 BTN 外挂脚本,实时动态反吸血

请先从以下链接创建 BTN 账户
https://btn-prod.ghostchu-services.top/

需启用 BitComet 的远程下载,地址可填写局域网 IP
脚本可通过本地访问,不要求开通公网端口
如有需要,可开启强制 HTTPS(局域网内访问一般不需要)

图片

按下 Win + X 键,Windows 11 选择 “终端管理员”,Windows 10 选择 “Windows PowerShell(管理员)
执行以下命令并按提示选择 BT 应用程序,填写必要信息即可完成配置

iex (irm btn-bc.pages.dev)

欢迎试用并反馈问题


2.09 以前的版本无法提取 Peer ID

如分析任务耗时太长或超时,请使用 2.10 版或更新的 BitComt,并开启以下高级设置选项


其他详细请查看项目地址


如不想提交数据到 BTN 服务器,可以单独使用 IP 黑名单
更新间隔为 8 小时

3個讚


image

我按照提示配置完成了,但依旧会连接到这些吸血鬼,在防火墙里已经看到相应的规则,C盘里也看到USERINFO文件了,难道是脚本没启动还是我配置有问题?目前为止我在 Windows PowerShell里输入iex (irm btn-bc.pages.dev)之后跳出一些消息随后窗口自动关闭,应该是已经配置完成了

2個讚

感谢反馈,窗口自动关闭的情况是不正常的,可能是有我没预料到的情况

脚本的预期行为是
运行 iex (irm btn-bc.pages.dev) 后窗口会保持运行(因此后续会考虑隐藏到托盘)
运行效果如下

当获取到 BTN 封禁列表时,BTN_BC 文件夹下会保存当前 IP 列表为 IPLIST.txt

如果窗口自动关闭,应该是遇到了意外的错误,请问能否捕获到错误消息呢?


更新

已找到一处错误并修复,请重新尝试

原因是整理脚本代码块的时候,把携带鉴权信息的请求头放在了变量定义之前,导致发送空白的鉴权信息

我尝试已经没问题了,虽然窗口不会关闭了,但好像没有反吸血的效果
image

观察了一段时间有出现这种错误提示

以及想询问一下就是这个脚本要保持使用的话是不是必须得让 Windows PowerShell保持开启才可以?

1個讚

截图中看到动态关键字添加成功,封禁功能是正常的

感谢提供反馈
这是在计算 PeerID 时发生错误,脚本使用的计算方式可能不适合部分版本的 PowerShell,回头改一下计算方法
这个问题会影响提取 Peers 快照的功能,因此上图日志显示 11 个活动任务,但只提取了 0 个活动 Peers
这个不会影响封禁规则的更新,但不会像 BTN 提供分析数据

计算 PeerID 部分没有问题,应该是分析网页时提取了错误的信息

脚本已更新,会打印出提取失败的原始数据
麻烦重新运行一次,如继续报错请发一下内容

是的,脚本在初始化完成后会进入一个死循环,执行以下操作

  1. 提交 Peers 快照
  2. 获取 IP 黑名单并更新动态关键字
  3. 获取 BTN 服务器配置更新

每个任务都由 BTN 服务器配置规定间隔,等待过程中无任何操作,任务也不会并行,因此占用的系统资源可以忽略
最繁重的任务是获取 Peers 快照的部分,因为需要访问 BC WebUI 的页面并提取信息
先访问任务列表,然后分析每个运行中的任务的总览和 Peers 列表,因此访问次数是
活动任务 * 2 + 1
11 个活动任务就需要访问 23 次

窗口可以最小化,但是会在任务栏残留,目前在寻找隐藏到托盘,需要时点开查看日志的方案

请问有没有手动执行提交Peers的指令之类的?观察是否有报错需要等待提交1500秒,确实太久了
github库和BTN Sparkle网站也没找到帮助文档之类的

我也查看了下我获取的ip封禁列表,发现很多吸血ip都没被记录进去
比如
61.160.196.135
61.160.196.136
218.92.139.131
218.92.139.135
218.92.139.136
都未被记录进去

新报错

2個讚

没有考虑IPV6吧?

1個讚

可以把对应内容粘贴到其他 PS 窗口内执行,但是这部分有点长而且设计前面的函数,所以不是很推荐

因为 BTN 服务器前几天刚刚进行了大更新,在重新收集数据
你发的这几个 IP 的相邻 IP 已经被记录进去,达到一定阈值就会封禁整段
最新的封禁 IP 列表可以在 %USERPROFILE%/BTN_BC/IPLIST.txt 中查看

感谢,截取到了前边的 IP 地址,我再仔细看看是怎么回事

IPv6 是有考虑到的,不过有很多场景我自己的测试环境没办法发现

改进了 Peer ID 的识别方法,请重新运行一次


我意识到了一个最根本的问题,BitComet 2.09 前的版本本来就不显示 Peer ID
也就是 2.09 能正常显示后,才萌生了 BTN 脚本的念头

不过就算不提取 Peer ID 也符合 BTN 规范,脚本里判断一下提交空字符就可以

未经处理的异常: System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
在 System.Management.Automation.AmsiUtils.AmsiNativeMethods.AmsiScanBuffer(IntPtr amsiContext, IntPtr buffer, UInt32 length, String contentName, IntPtr amsiSession, AMSI_RESULT& result)
在 System.Management.Automation.AmsiUtils.ScanContent(String content, String sourceMetadata)
在 System.Management.Automation.CompiledScriptBlockData.PerformSecurityChecks()
在 System.Management.Automation.CompiledScriptBlockData.ReallyCompile(Boolean optimize)
在 System.Management.Automation.CompiledScriptBlockData.CompileUnoptimized()
在 System.Management.Automation.CompiledScriptBlockData.Compile(Boolean optimized)
在 System.Management.Automation.ScriptBlock.GetCodeToInvoke(Boolean& optimized, ScriptBlockClauseToInvoke clauseToInvoke)
在 System.Management.Automation.ScriptBlock.InvokeWithPipeImpl(ScriptBlockClauseToInvoke clauseToInvoke, Boolean createLocalScope, Dictionary2 functionsToDefine, List1 variablesToDefine, ErrorHandlingBehavior errorHandlingBehavior, Object dollarUnder, Object input, Object scriptThis, Pipe outputPipe, InvocationInfo invocationInfo, Object args)
在 System.Management.Automation.ScriptBlock.<>c__DisplayClass57_0.b__0()
在 System.Management.Automation.Runspaces.RunspaceBase.RunActionIfNoRunningPipelinesWithThreadCheck(Action action)
在 System.Management.Automation.ScriptBlock.InvokeWithPipe(Boolean useLocalScope, ErrorHandlingBehavior errorHandlingBehavior, Object dollarUnder, Object input, Object scriptThis, Pipe outputPipe, InvocationInfo invocationInfo, Boolean propagateAllExceptionsToTop, List1 variablesToDefine, Dictionary2 functionsToDefine, Object args)
在 System.Management.Automation.ScriptBlock.InvokeUsingCmdlet(Cmdlet contextCmdlet, Boolean useLocalScope, ErrorHandlingBehavior errorHandlingBehavior, Object dollarUnder, Object input, Object scriptThis, Object args)
在 Microsoft.PowerShell.Commands.InvokeExpressionCommand.ProcessRecord()
在 System.Management.Automation.CommandProcessor.ProcessRecord()
在 System.Management.Automation.CommandProcessorBase.DoExecute()
在 System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input)
在 System.Management.Automation.PipelineOps.InvokePipeline(Object input, Boolean ignoreInput, CommandParameterInternal pipeElements, CommandBaseAst pipeElementAsts, CommandRedirection commandRedirections, FunctionContext funcContext)
在 (Closure , FunctionContext )
在 System.Management.Automation.ScriptBlock.InvokeWithPipeImpl(ScriptBlockClauseToInvoke clauseToInvoke, Boolean createLocalScope, Dictionary2 functionsToDefine, List1 variablesToDefine, ErrorHandlingBehavior errorHandlingBehavior, Object dollarUnder, Object input, Object scriptThis, Pipe outputPipe, InvocationInfo invocationInfo, Object args)
在 System.Management.Automation.ScriptBlock.<>c__DisplayClass57_0.b__0()
在 System.Management.Automation.Runspaces.RunspaceBase.RunActionIfNoRunningPipelinesWithThreadCheck(Action action)
在 System.Management.Automation.ScriptBlock.InvokeWithPipe(Boolean useLocalScope, ErrorHandlingBehavior errorHandlingBehavior, Object dollarUnder, Object input, Object scriptThis, Pipe outputPipe, InvocationInfo invocationInfo, Boolean propagateAllExceptionsToTop, List1 variablesToDefine, Dictionary2 functionsToDefine, Object args)
在 System.Management.Automation.ScriptBlock.InvokeUsingCmdlet(Cmdlet contextCmdlet, Boolean useLocalScope, ErrorHandlingBehavior errorHandlingBehavior, Object dollarUnder, Object input, Object scriptThis, Object args)
在 Microsoft.PowerShell.Commands.ForEachObjectCommand.ProcessRecord()
在 System.Management.Automation.CommandProcessor.ProcessRecord()
在 System.Management.Automation.CommandProcessorBase.DoExecute()
在 System.Management.Automation.Internal.Pipe.AddToPipe(Object obj)
在 System.Security.SecurityContext.Run(SecurityContext securityContext, ContextCallback callback, Object state)
在 System.Management.Automation.MshCommandRuntime.WriteObject(Object sendToPipeline)
在 System.Management.Automation.Cmdlet.WriteObject(Object sendToPipeline)
在 Microsoft.PowerShell.Commands.SelectStringCommand.FlushTrackerQueue(ContextTracker contextTracker)
在 Microsoft.PowerShell.Commands.SelectStringCommand.ProcessRecord()
在 System.Management.Automation.CommandProcessor.ProcessRecord()
在 System.Management.Automation.CommandProcessorBase.DoExecute()
在 System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input)
在 System.Management.Automation.PipelineOps.InvokePipeline(Object input, Boolean ignoreInput, CommandParameterInternal pipeElements, CommandBaseAst pipeElementAsts, CommandRedirection commandRedirections, FunctionContext funcContext)
在 Get-TaskPeers(Closure , FunctionContext )
在 System.Management.Automation.DlrScriptCommandProcessor.RunClause(Action1 clause, Object dollarUnderbar, Object inputToProcess) 在 System.Management.Automation.DlrScriptCommandProcessor.Complete() 在 System.Management.Automation.CommandProcessorBase.DoComplete() 在 System.Management.Automation.Internal.PipelineProcessor.DoCompleteCore(CommandProcessorBase commandRequestingUpstreamCommandsToStop) 在 System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input) 在 System.Management.Automation.PipelineOps.InvokePipeline(Object input, Boolean ignoreInput, CommandParameterInternal[][] pipeElements, CommandBaseAst[] pipeElementAsts, CommandRedirection[][] commandRedirections, FunctionContext funcContext) 在 <ScriptBlock>(Closure , FunctionContext ) 在 System.Management.Automation.ScriptBlock.InvokeWithPipeImpl(ScriptBlockClauseToInvoke clauseToInvoke, Boolean createLocalScope, Dictionary2 functionsToDefine, List1 variablesToDefine, ErrorHandlingBehavior errorHandlingBehavior, Object dollarUnder, Object input, Object scriptThis, Pipe outputPipe, InvocationInfo invocationInfo, Object[] args) 在 System.Management.Automation.ScriptBlock.<>c__DisplayClass57_0.<InvokeWithPipe>b__0() 在 System.Management.Automation.Runspaces.RunspaceBase.RunActionIfNoRunningPipelinesWithThreadCheck(Action action) 在 System.Management.Automation.ScriptBlock.InvokeWithPipe(Boolean useLocalScope, ErrorHandlingBehavior errorHandlingBehavior, Object dollarUnder, Object input, Object scriptThis, Pipe outputPipe, InvocationInfo invocationInfo, Boolean propagateAllExceptionsToTop, List1 variablesToDefine, Dictionary2 functionsToDefine, Object[] args) 在 System.Management.Automation.ScriptBlock.InvokeUsingCmdlet(Cmdlet contextCmdlet, Boolean useLocalScope, ErrorHandlingBehavior errorHandlingBehavior, Object dollarUnder, Object input, Object scriptThis, Object[] args) 在 Microsoft.PowerShell.Commands.ForEachObjectCommand.ProcessRecord() 在 System.Management.Automation.CommandProcessor.ProcessRecord() 在 System.Management.Automation.CommandProcessorBase.DoExecute() 在 System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input) 在 System.Management.Automation.PipelineOps.InvokePipeline(Object input, Boolean ignoreInput, CommandParameterInternal[][] pipeElements, CommandBaseAst[] pipeElementAsts, CommandRedirection[][] commandRedirections, FunctionContext funcContext) 在 System.Management.Automation.Interpreter.ActionCallInstruction6.Run(InterpretedFrame frame)
在 System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
在 System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
在 System.Management.Automation.Interpreter.Interpreter.Run(InterpretedFrame frame)
在 System.Management.Automation.Interpreter.LightLambda.RunVoid1[T0](T0 arg0)
在 System.Management.Automation.DlrScriptCommandProcessor.RunClause(Action1 clause, Object dollarUnderbar, Object inputToProcess) 在 System.Management.Automation.DlrScriptCommandProcessor.Complete() 在 System.Management.Automation.CommandProcessorBase.DoComplete() 在 System.Management.Automation.Internal.PipelineProcessor.DoCompleteCore(CommandProcessorBase commandRequestingUpstreamCommandsToStop) 在 System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input) 在 System.Management.Automation.PipelineOps.InvokePipeline(Object input, Boolean ignoreInput, CommandParameterInternal[][] pipeElements, CommandBaseAst[] pipeElementAsts, CommandRedirection[][] commandRedirections, FunctionContext funcContext) 在 System.Management.Automation.Interpreter.ActionCallInstruction6.Run(InterpretedFrame frame)
在 System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
在 System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
在 System.Management.Automation.Interpreter.Interpreter.Run(InterpretedFrame frame)
在 System.Management.Automation.Interpreter.LightLambda.RunVoid1[T0](T0 arg0)
在 System.Management.Automation.ScriptBlock.InvokeWithPipeImpl(ScriptBlockClauseToInvoke clauseToInvoke, Boolean createLocalScope, Dictionary2 functionsToDefine, List1 variablesToDefine, ErrorHandlingBehavior errorHandlingBehavior, Object dollarUnder, Object input, Object scriptThis, Pipe outputPipe, InvocationInfo invocationInfo, Object args)
在 System.Management.Automation.ScriptBlock.<>c__DisplayClass57_0.b__0()
在 System.Management.Automation.Runspaces.RunspaceBase.RunActionIfNoRunningPipelinesWithThreadCheck(Action action)
在 System.Management.Automation.ScriptBlock.InvokeWithPipe(Boolean useLocalScope, ErrorHandlingBehavior errorHandlingBehavior, Object dollarUnder, Object input, Object scriptThis, Pipe outputPipe, InvocationInfo invocationInfo, Boolean propagateAllExceptionsToTop, List1 variablesToDefine, Dictionary2 functionsToDefine, Object args)
在 System.Management.Automation.ScriptBlock.InvokeUsingCmdlet(Cmdlet contextCmdlet, Boolean useLocalScope, ErrorHandlingBehavior errorHandlingBehavior, Object dollarUnder, Object input, Object scriptThis, Object args)
在 Microsoft.PowerShell.Commands.InvokeExpressionCommand.ProcessRecord()
在 System.Management.Automation.CommandProcessor.ProcessRecord()
在 System.Management.Automation.CommandProcessorBase.DoExecute()
在 System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input)
在 System.Management.Automation.PipelineOps.InvokePipeline(Object input, Boolean ignoreInput, CommandParameterInternal pipeElements, CommandBaseAst pipeElementAsts, CommandRedirection commandRedirections, FunctionContext funcContext)
在 System.Management.Automation.Interpreter.ActionCallInstruction6.Run(InterpretedFrame frame) 在 System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 在 System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 在 System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 在 System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 在 System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame) 在 System.Management.Automation.Interpreter.Interpreter.Run(InterpretedFrame frame) 在 System.Management.Automation.Interpreter.LightLambda.RunVoid1[T0](T0 arg0) 在 System.Management.Automation.ScriptBlock.InvokeWithPipeImpl(ScriptBlockClauseToInvoke clauseToInvoke, Boolean createLocalScope, Dictionary2 functionsToDefine, List1 variablesToDefine, ErrorHandlingBehavior errorHandlingBehavior, Object dollarUnder, Object input, Object scriptThis, Pipe outputPipe, InvocationInfo invocationInfo, Object[] args) 在 System.Management.Automation.ScriptBlock.<>c__DisplayClass57_0.<InvokeWithPipe>b__0() 在 System.Management.Automation.Runspaces.RunspaceBase.RunActionIfNoRunningPipelinesWithThreadCheck(Action action) 在 System.Management.Automation.ScriptBlock.InvokeWithPipe(Boolean useLocalScope, ErrorHandlingBehavior errorHandlingBehavior, Object dollarUnder, Object input, Object scriptThis, Pipe outputPipe, InvocationInfo invocationInfo, Boolean propagateAllExceptionsToTop, List1 variablesToDefine, Dictionary2 functionsToDefine, Object[] args) 在 System.Management.Automation.ScriptBlock.InvokeUsingCmdlet(Cmdlet contextCmdlet, Boolean useLocalScope, ErrorHandlingBehavior errorHandlingBehavior, Object dollarUnder, Object input, Object scriptThis, Object[] args) 在 Microsoft.PowerShell.Commands.InvokeExpressionCommand.ProcessRecord() 在 System.Management.Automation.CommandProcessor.ProcessRecord() 在 System.Management.Automation.CommandProcessorBase.DoExecute() 在 System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input) 在 System.Management.Automation.PipelineOps.InvokePipeline(Object input, Boolean ignoreInput, CommandParameterInternal[][] pipeElements, CommandBaseAst[] pipeElementAsts, CommandRedirection[][] commandRedirections, FunctionContext funcContext) 在 System.Management.Automation.Interpreter.ActionCallInstruction6.Run(InterpretedFrame frame)
在 System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
在 System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
在 System.Management.Automation.Interpreter.Interpreter.Run(InterpretedFrame frame)
在 System.Management.Automation.Interpreter.LightLambda.RunVoid1[T0](T0 arg0)
在 System.Management.Automation.DlrScriptCommandProcessor.RunClause(Action`1 clause, Object dollarUnderbar, Object inputToProcess)
在 System.Management.Automation.DlrScriptCommandProcessor.Complete()
在 System.Management.Automation.CommandProcessorBase.DoComplete()
在 System.Management.Automation.Internal.PipelineProcessor.DoCompleteCore(CommandProcessorBase commandRequestingUpstreamCommandsToStop)
在 System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input)
在 System.Management.Automation.Runspaces.LocalPipeline.InvokeHelper()
在 System.Management.Automation.Runspaces.LocalPipeline.InvokeThreadProc()
在 System.Management.Automation.Runspaces.PipelineThread.WorkerProc()
在 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
在 System.Threading.ThreadHelper.ThreadStart()

[已退出进程,代码为 3221225477 (0xc0000005)]

1個讚

错误代码 0xc0000005 一般是程序被意外中断
可能性从高到低大概可以分为以下 3 种

  1. 安全保护限制
  2. 系统文件损坏
  3. 内存访问故障

安全保护限制是比较常见的情况
由于 PowerShell 里面执行在线脚本会被认为是高风险行为,所以很容易被某些安全防护软件阻挡而导致中断报错
可尝试把脚本下载至本地执行,如有需要请自行审查代码内容
安全软件的设置需要用户自己衡量,这里不作建议

系统文件损坏的可能性较低
脚本会载入操作系统的动态链接库 ntdll.dll 用作计算 CRC32,若文件被篡改或其他原因不工作也可能会导致中断
这种情况可以尝试执行以下通用命令修复系统文件

# 依次执行
sfc /SCANNOW
Dism /Online /Cleanup-Image /ScanHealth
Dism /Online /Cleanup-Image /CheckHealth
DISM /Online /Cleanup-image /RestoreHealth
# 重启后再执行
sfc /SCANNOW

该操作一般不会改变任何系统配置,除非是有不规范的软件篡改了系统文件
除此以外也不建议尝试其他方法

内存访问故障是低概率事件,设备没有其他异常情况的话,基本上可以排除这个可能性

好几个设备,在不同环境下都会产生这个错误,甚至还有这样的错误:

目前我个人使用脚本已经不会报任何的错误,之所以会觉得没有反吸血效果是因为脚本的ip规则暂不完善,实际反吸血是没有问题的,我的反馈应该就到此为止了
目前是Windows 10 22H2专业版下运行,使用WIndows Terminal隐藏到托盘,一切正常没有问题

吸血IP
218.90.210.5
218.90.210.6
不汇报任何进度纯吸血
望能加进IP封禁列表中
很多年前的死种也进行吸血


被吸了10G依旧显示0%进度

1個讚

感谢反馈,这个提示表示没有提取到正确的 IP 地址
能否提供一下以下的文件?
C:\Users\%USERNAME%\BTN_BC\PEERS.json

这是提取到的 Peers 快照的原始数据,通过 Gzip 打包后提交给 BTN 服务器
或者能从里面查出报错的原因
我猜可能是截取到了非 BT 任务的信息

至于 0xc0000005,脚本方面应该没办法回避,只能用户侧排查
脚本所使用的是 Windows PoweShell 基础组件(大概最低要求 3.0 以上,未详细确认)与内核基础动态链接库 ntdll.dll,动态关键字依赖 Windows Firewall 服务(大概最低要求 WIndows 10 21H2 左右)

根据最近的观察,这些吸血客户端似乎有种“追猎”机制
如果连上一个速度可观的 Peer,会通过 iknowwhatyoudownload.com 等网站或者其他爬虫手段(甚至不排除窃取 BC 的种子市场交换信息)来尝试获取对方下载的种子
一些基本上国内都不会有人下的国外老资源也会看到他们的影子,可能就是这个原因

{
“populate_time”: 1724508335651,
“peers”: [
{
“client_name”: “BitComet 2.08”,
“peer_port”: 0,
“torrent_size”: 1015126426,
“ip_address”: null,
“peer_progress”: 0.0000,
“torrent_identifier”: “dbe4a6c31b6a153ec2d8cf256b6bba955fb33b810e0730e246115067d93f827c”,
“downloader_progress”: 0.0000,
“rt_upload_speed”: 0,
“downloaded”: 0,
“uploaded”: 0,
“peer_id”: “”,
“rt_download_speed”: 0,
“peer_flag”: “”
},
{
“client_name”: “BitComet 2.08”,
“peer_port”: 0,
“torrent_size”: 1363652116,
“ip_address”: null,
“peer_progress”: 0.0000,
“torrent_identifier”: “bbdeb2aee59df66d11dba1ab679892aaea59d23205d75181ef152651f1a73668”,
“downloader_progress”: 0.0000,
“rt_upload_speed”: 0,
“downloaded”: 0,
“uploaded”: 0,
“peer_id”: “”,
“rt_download_speed”: 0,
“peer_flag”: “”
},
{
“client_name”: “BitComet 2.08”,
“peer_port”: 22223,
“torrent_size”: 2952790016,
“ip_address”: “123.121.119.151”,
“peer_progress”: 0.5570,
“torrent_identifier”: “b2087ef988f7db18e67b0d6646c4848c4c1ad4692b44c3a833b065931623b8e2”,
“downloader_progress”: 0.5570,
“rt_upload_speed”: 0,
“downloaded”: 0,
“uploaded”: 0,
“peer_id”: “”,
“rt_download_speed”: 0,
“peer_flag”: “”
},
{
“client_name”: “qBittorrent 5.0.0”,
“peer_port”: 8357,
“torrent_size”: 56371445760,
“ip_address”: “83.22.160.39”,
“peer_progress”: 0.7900,
“torrent_identifier”: “1f6f61ddda8928b6bca5aa2ddfe89804168e435ea851c2b0f63c9d6dc7422e27”,
“downloader_progress”: 1,
“rt_upload_speed”: 0,
“downloaded”: 0,
“uploaded”: 131072,
“peer_id”: “”,
“rt_download_speed”: 0,
“peer_flag”: “U K”
},
{
“client_name”: “”,
“peer_port”: 44521,
“torrent_size”: 56371445760,
“ip_address”: “176.65.50.223”,
“peer_progress”: 0.9660,
“torrent_identifier”: “1f6f61ddda8928b6bca5aa2ddfe89804168e435ea851c2b0f63c9d6dc7422e27”,
“downloader_progress”: 1,
“rt_upload_speed”: 54272,
“downloaded”: 0,
“uploaded”: 196886528,
“peer_id”: “”,
“rt_download_speed”: 5347738,
“peer_flag”: “U”
},
{
“client_name”: “BitTorrent 7.11 (mainline BitTorrent 7.b.0 (47125))”,
“peer_port”: 12489,
“torrent_size”: 194776766874,
“ip_address”: “218.144.6.157”,
“peer_progress”: 0.9720,
“torrent_identifier”: “3f01f09f0667474ee6d7947f8be42cff767da61f5a949317fb03c2cb5d855e72”,
“downloader_progress”: 1,
“rt_upload_speed”: 193536,
“downloaded”: 0,
“uploaded”: 2429173760,
“peer_id”: “”,
“rt_download_speed”: 5242880,
“peer_flag”: “U”
},
{
“client_name”: “qBittorrent/4.2.5”,
“peer_port”: 61842,
“torrent_size”: 194776766874,
“ip_address”: “174.138.199.91”,
“peer_progress”: 0.3160,
“torrent_identifier”: “3f01f09f0667474ee6d7947f8be42cff767da61f5a949317fb03c2cb5d855e72”,
“downloader_progress”: 1,
“rt_upload_speed”: 568320,
“downloaded”: 0,
“uploaded”: 4856250368,
“peer_id”: “”,
“rt_download_speed”: 279552,
“peer_flag”: “U K”
},
{
“client_name”: “Transmission 2.94”,
“peer_port”: 51413,
“torrent_size”: 951550004429,
“ip_address”: “39.108.99.197”,
“peer_progress”: 0.0000,
“torrent_identifier”: “863a9807826de1fca3c4ce21e8cce1bcf2ef969e6d841e73a2dae8992178e968”,
“downloader_progress”: 1,
“rt_upload_speed”: 286720,
“downloaded”: 0,
“uploaded”: 114252800,
“peer_id”: “”,
“rt_download_speed”: 1572864,
“peer_flag”: “U”
},
{
“client_name”: “BitComet 2.08”,
“peer_port”: 22223,
“torrent_size”: 951550004429,
“ip_address”: “123.121.119.151”,
“peer_progress”: 0.9990,
“torrent_identifier”: “863a9807826de1fca3c4ce21e8cce1bcf2ef969e6d841e73a2dae8992178e968”,
“downloader_progress”: 1,
“rt_upload_speed”: 0,
“downloaded”: 0,
“uploaded”: 0,
“peer_id”: “”,
“rt_download_speed”: 0,
“peer_flag”: “”
},
{
“client_name”: “BitComet 2.03”,
“peer_port”: 9159,
“torrent_size”: 951550004429,
“ip_address”: “112.105.72.173”,
“peer_progress”: 0.2130,
“torrent_identifier”: “863a9807826de1fca3c4ce21e8cce1bcf2ef969e6d841e73a2dae8992178e968”,
“downloader_progress”: 1,
“rt_upload_speed”: 95232,
“downloaded”: 0,
“uploaded”: 230965248,
“peer_id”: “”,
“rt_download_speed”: 0,
“peer_flag”: “U”
},
{
“client_name”: “Transmission 2.93”,
“peer_port”: 16886,
“torrent_size”: 7161857966,
“ip_address”: “223.11.155.199”,
“peer_progress”: 0.0000,
“torrent_identifier”: “042d0322cb0390ac08fd7333ccd556d9956109a8aefc53f06b11dfc488dcb10e”,
“downloader_progress”: 1,
“rt_upload_speed”: 0,
“downloaded”: 0,
“uploaded”: 0,
“peer_id”: “”,
“rt_download_speed”: 0,
“peer_flag”: “U”
},
{
“client_name”: “Transmission 2.94”,
“peer_port”: 51413,
“torrent_size”: 7161857966,
“ip_address”: “183.133.36.67”,
“peer_progress”: 0.0000,
“torrent_identifier”: “042d0322cb0390ac08fd7333ccd556d9956109a8aefc53f06b11dfc488dcb10e”,
“downloader_progress”: 1,
“rt_upload_speed”: 0,
“downloaded”: 0,
“uploaded”: 0,
“peer_id”: “”,
“rt_download_speed”: 0,
“peer_flag”: “U”
}
]
}

1個讚

这就验证了我的猜想了,虽然我的上传仅30Mbps,但v4 v6双公网连接性较好,估计就爬到我下载的老种了

翻了一下脚本日志,发现这个报错,反馈一下


主要还是在 2024/8/24 18:27:56、2024/8/24 18:53:41 这两个时间的报错
image
之后几个小时直至现在没任何此类报错

1個讚

一个是:
PSVersion:5.1.22621.3958
ntdll.dll:10.0.22621.3733
系统版本:win11 23H2 22631.4037
另一个是:
PSVersion:5.1.19041.4648
ntdll.dll:10.0.19041.4522
系统版本:win10 22H2 19045.4651
两个都是前几次汇报可以成功,然后再下次汇报就会报错

1個讚

感谢提供信息
截取到的是正确的 BT 任务,但无 IP 信息,请问您的 BitComet 版本是?

已改进 IP 地址识别错误时的处理方法,会保存至 ‘UNKNOWN.json’
后续会跟进
请重新执行 iex (irm btn-bc.pages.dev)

感谢反馈
这里是捕获 BTN 服务器返回的错误响应,而服务器并不是所有错误都由响应消息,因此会有空值
已屏蔽不必要的错误信息,请重新执行 iex (irm btn-bc.pages.dev)

好的,这个问题比较难定位,我先尝试重现

BitComet 2.8.5.30 正式版

1個讚


出错的时机大致是这样的

1個讚