当我想向追踪器发送初始请求时,所有我遇到的参考资料都说它需要进行 URL 编码。如果我将所拥有的信息密钥的 SHA-1 哈希值转换为十六进制字符串,为什么我还需要对哈希值进行 URL 编码呢?因为它只包含被允许的字符。
info_hash参数不是十六进制字符串,而是纯二进制字符串,因此您需要对其中的许多字节进行URL编码。(这往往会使最终长度比仅使用十六进制编码的字符串更长,但这就是BitTorrent协议,现在已经太晚了,无法改变!)
32
的字节应编码为%20
而不是+
,是吗? - ludinfo_hash=ABC%20...
而不是最初建议的info_hash=41424320
。 - bobince%20
和+
都能被支持,因为这种行为可以追溯到HTML2/RFC1866,那里是表单编码格式的起源。就我个人而言,我还没有调查过跟踪器实际上支持什么,但倾向于选择%20
以保险起见。 - bobince