对的,数据包在两个不同的参数里,分别进行汇报客户端名称信息与peerid
建立连接的时候只发送peerid,建立连接成功后,才通知对方客户端名称,分别在两个数据包里,如下图所示
如果使用猜测的方式我觉得不太合理,但是可以和utorrent一样,用fake字符串特别标注出来此结果为猜测
对的,数据包在两个不同的参数里,分别进行汇报客户端名称信息与peerid
建立连接的时候只发送peerid,建立连接成功后,才通知对方客户端名称,分别在两个数据包里,如下图所示
如果使用猜测的方式我觉得不太合理,但是可以和utorrent一样,用fake字符串特别标注出来此结果为猜测
这似乎是BEP10扩展协议中的一种字段
》bep_0010.rst_post
可能并非所有客户端都支持
但像这种明确写在BEP20中的客户端名称就不能算是猜测了吧?
而且客户端名称汇报功能并不是必须的
以及彗星的n/a所代表的含义究竟是什么
biglybt 既汇报了客户端名称 peerID 也对得上
依然后面有一个 n/a 我只能认为是彗星内部有一个已知客户端名单
不在名单上的都会被加上n/a的标记
其实是对方启用了匿名模式,你可以测试一下qb打开匿名后,就显示不出客户端名称信息了
优先取这个值,如果值不存在在使用猜测,如果是猜测的结果一定要标注fake字符串用于人类可读
参考吸血事件,不是出来了好几个互联网上从没见过的bt客户端,依旧能正常显示hp、taipei等客户端名称信息,n/a一般就是没取到这个客户端名称的字符串值
有可能,我看了一下taipei后面有 n/a 的显示,难道比特彗星用的不是fake,而是 n/a 显示
这个是因为qb在隐身模式下关闭了BEP10中的这个客户端名称传递功能吧?
但这是一个扩展协议 它确实很常见 但不代表所有客户端都支持
即使这样peer ID 应该是不会变的吧? 难道qb在隐身模式下会伪造peer ID?
很遗憾 HP 似乎支持 BEP10中的客户端名称显示 所以其既显示客户端名称也有 n/a
目前分析BC的客户端显示逻辑
存在扩展消息的客户端标识时
–若扩展标识与peerid一致,则显示扩展消息中的标识
–若扩展标识与peerid不同,则显示扩展标识,并在括号中显示peerid识别的标识
–若peerid无法识别,则显示扩展标识,并在括号中显示n/a
没有扩展消息的客户端标识时
–若peerid能被识别,则显示peerid识别的标识
–若peerid无法识别,则显示n/a(无括号)
·扩展标识与peerid一致
·扩展标识与peerid不同
·无扩展消息,成功识别peerid(两个qb显示格式不同)
·有扩展消息,无法识别peerid
·无扩展消息,无法识别peerid
目前来看,显示逻辑符合直觉。
但对peerid的识别精度太低,导致出现很多没必要的n/a,引起混淆,需要改进。
可以的话,建议也更新一下帮助文档,有需要的用户可以查阅避免误解。
或者像qB这样分两列显示
注意qB这里“客户端”列的显示逻辑跟BC类似,没有扩展标识的话也是用peerid识别。
一个辨认方法是,通常扩展标识是带斜杠的。
下图中qB版本都一样,但是中间两个显示的客户端标识没有斜杠,应该是关闭了扩展消息中的项目。
最后,用户列表中的国旗也有部分无法显示,建议补全。
部分IP对应的地区发生变更,可能也没有及时更新。
目前是否提供IP库的热更新?
可以的话,能在加一个选项卡,显示对方是否TCP公网可连接吧
例如发ACK请求的时候,对方能回复,那么判断对方就是可连接的公网
比如发起状态为本地,通过TCP协议连接到对方,那么对方就是公网
但是如果自身是公网的时候,可能别人连接到自身导致变成远程,客户端来不及发请求连接对方,那么就要额外发一个ack包去给这个已连接用户来判断是否公网ip
例如新选项卡“公网ip可连接” 值:是、否、未知无法判断
或者用远程端口和监听端口是否一致,并且连接类型协议是TCP的时候,判断是公网ip显示出来也可以
这个方法二可以避免ack请求包浪费,以本地计算数值是否一致的方式来判断对方是否公网
目前已知的判断方法只有人工去观察远程端口和监听端口是否一致,一致的话,对方就是公网ip,如果不一致那么对方就是内外ip,但是这样不利于人类观察,因为要去用脑子计算一次两个数值是否相同,所以做一个新选项来显示对方是否公网吧
如果连接协议用UTP的时候,则显示未知无法判断
这个功能做了,就能很好的分辨对方是否公网ip了
就可以加一个反吸血。。。拉黑内网ip用户 因为内网往往起不到很好的分流上传效果,种源发种只想传给公网ip的用户
我倒希望 BitComet 有一个功能,
把我的 500 Mbps 上传 快速完整榨干 100 GB,
我就能提早收工.
建议扩充内置的peer ID识别库至少应该包含所有在BEP20中列出的已知客户端
... 'AG' - Ares 'A~' - Ares 'AR' - Arctic 'AV' - Avicora 'AX' - BitPump 'AZ' - Azureus 'BB' - BitBuddy 'BC' - BitComet 'BF' - Bitflu 'BG' - BTG (uses Rasterbar libtorrent) 'BR' - BitRocket 'BS' - BTSlave 'BX' - ~Bittorrent X 'CD' - Enhanced CTorrent 'CT' - CTorrent 'DE' - DelugeTorrent 'DP' - Propagate Data Client 'EB' - EBit 'ES' - electric sheep 'FT' - FoxTorrent 'FW' - FrostWire 'FX' - Freebox BitTorrent 'GS' - GSTorrent 'HL' - Halite 'HN' - Hydranode 'KG' - KGet 'KT' - KTorrent 'LH' - LH-ABC 'LP' - Lphant 'LT' - libtorrent 'lt' - libTorrent 'LW' - LimeWire 'MO' - MonoTorrent 'MP' - MooPolice 'MR' - Miro 'MT' - MoonlightTorrent 'NX' - Net Transport 'PD' - Pando 'qB' - qBittorrent 'QD' - QQDownload 'QT' - Qt 4 Torrent example 'RT' - Retriever 'S~' - Shareaza alpha/beta 'SB' - ~Swiftbit 'SS' - SwarmScope 'ST' - SymTorrent 'st' - sharktorrent 'SZ' - Shareaza 'TN' - TorrentDotNET 'TR' - Transmission 'TS' - Torrentstorm 'TT' - TuoTu 'UL' - uLeecher! 'UT' - µTorrent 'UW' - µTorrent Web 'VG' - Vagaa 'WD' - WebTorrent Desktop 'WT' - BitLet 'WW' - WebTorrent 'WY' - FireTorrent 'XL' - Xunlei 'XT' - XanTorrent 'XX' - Xtorrent 'ZT' - ZipTorrent ... 'A' - ABC 'O' - Osprey Permaseed 'Q' - BTQueue 'R' - Tribler 'S' - Shadow's client 'T' - BitTornado 'U' - UPnP NAT Bit Torrent ...
也可以参考这个项目添加更多的客户端记录
》bittorrent-peerid/index.js at master · webtorrent/bittorrent-peerid · GitHub
目前已知彗星缺少以下这些国家/地区的旗帜 只能显示代码
可参考项目:eMule 地区旗帜库 countryflag32.dll(famfamfam 版与 Flagfox 版) | eMule Fans 电骡爱好者
CY - 塞浦路斯(Cyprus)
DO - 多米尼加共和国(Dominican Republic)
MA - 摩洛哥(Morocco)
NZ - 新西兰(New Zealand)
CR - 哥斯达黎加(Costa Rica)
UY - 乌拉圭(Uruguay)
RS - 塞尔维亚(Serbia)
MU - 毛里求斯(Mauritius)
LT - 立陶宛(Lithuania)
FJ - 斐济(Fiji)
MY - 马来西亚(Malaysia)
BD - 孟加拉国(Bangladesh)
KE - 肯尼亚(Kenya)
GR - 希腊(Greece)
ZA - 南非(South Africa)
LR - 利比里亚(Liberia)
IS - 冰岛(Iceland)
EC - 厄瓜多尔(Ecuador)
AW - 阿鲁巴岛(Aruba)
BB - 巴巴多斯(Barbados)
建议在补齐旗帜后 也建议添加复制名称的功能
一些旗帜的并不方便辨识 仍然需要通过名称来识别
现在要获取名称只能将鼠标放置在旗帜上来查看悬浮提示
建议可以右键旗帜 复制 将名称复制到剪贴板上
目前在旗帜上右键复制没有任何效果
现在的ip库似乎是2020年的
可以更新一下
要是能明确数据库格式也可以让用户自行更新
这之前我建议过,
没被采纳,
意思就是 每个人都认识 全世界 的 旗.
所以这两个都是tt,该怎么算
其实彗星现在的这个显示逻辑也没什么问题
要是国家名称能显示成对应的语言就好了
现在一律是英文 也不太好认
qb就可以跟随语言变化
不冲突 一个是全大写 一个是全小写
其实彗星现在的这个显示逻辑也没什么问题
要是国家名称能显示成对应的语言就好了现在一律是英文 也不太好认
qb就可以跟随语言变化
贼困难,
之前贼多建议 都没被采纳,
现在都懒的建议了.
秀个 英文 都难,
更何况要 秀 中文.
那就用IP吧 复制IP手动去在线查询网站上去查
在线工具应该还是比较准的
通过大小写搭配还可以搞出 “Tt” 和 “tT” 还能容纳两种客户端(
qbittorrent 客户端信息
比特彗星 客户端信息
qbittorrent 开启匿名模式
两客户端同时下载相同的测试资源
观察两客户端的用户栏信息
比特彗星
qbittorrent
观察比特彗星中对端 qbittorrent 的客户端名称
qbittorrent 被正确识别
其版本号中没有斜杠 应该是通过 peer ID 来判断的
十六进制原始ID
2d7142343535302d654474704d732a4975427365
解码后的字符串:
-qB4550-eDtpMs*IuBse
peer ID 为标准的 qbittorrent ID
查看 qbittorrent 文档中对匿名模式的解释:
从文档来看在匿名模式下 qbittorrent 确实不会通过通告自己的客户端名称
不过没有对更旧版本的 qbittorrent 进行测试
但从文档来看即使在更旧的版本中 匿名模式下
客户端依然会正确传递 peer ID
而比特彗星可以在对端没有通告客户端名称的情况下
通过 peer ID 识别客户端类型 若其在已知列表中
结论:qbittorrent 在匿名模式下可以被比特彗星正确识别不会出现 n/a 的情况
能不能增加一个设置自动封禁索取超过种子文件2倍大小的其他客户端?
测试可以从以下链接自行下载数据库更新
https://download.ip2location.com/lite/IP2LOCATION-LITE-DB1.IPV6.BIN.ZIP
解压后覆盖\BitComet\ip2location\ip2location.bin
旗帜应该没办法自己加了
我倒觉的 旗帜 不重要,
谁能认识 全世界的所有旗帜,
而且有些旗帜长的贼像 常搞错,
反而 文字 更容易懂.
确实有效果 虽然不支持热重载 但也没关系
我都有些担心旗帜是写死在程序里的了
不是说旗帜不重要 软件的一致性还是要保持的
用名字来识别当然更方便
像常见的地方直接看一眼旗帜就认出来了
不常见的看一下名字就可以
这是最理想的情况
之前我建议过,
同时显示 旗帜 + 文字,
没被采纳.