1

我的问题是关于当 infohash 包含 '00' 时的抓取 http 回复,使用 %00 抓取请求,因此 http 回复中会有一个 '\0'。我在 infohash 中发现了一些零字节的种子,我想知道跟踪器应该如何回复对这些种子的抓取请求。我的意思是 '\0' 通常可以工作吗?我用 torrentspy 测试了这个种子,它总是说:

“在 Tracker 上未找到 Torrent;可能已损坏”

我写了一个基本的跟踪器来测试它并验证完整的抓取回复已写入套接字,但 torrentspy 仍然具有相同的输出。当我在网络浏览器中查看该抓取回复时,它以 '\0' 结尾

有没有人能把光带入黑暗?

4

1 回答 1

2

目前尚不完全清楚您的问题是什么,但我会尝试填写一些内容。

'\0' 与任何其他不可打印字符没有什么不同。在对 HTTP 跟踪器的 GET 请求中,所有非 URL 安全字符始终必须转义为 %xx。一些跟踪器有错误,例如他们假设不需要转义的字符没有被转义(即他们可能将转义版本的 info-hash 存储为它们的内部表示)。一些 Web 服务器甚至可能假设 `(单引号)总是被转义(允许 SQL 注入攻击)。所有特殊字符都必须转义,尤其是&%(显然)。

响应要简单得多。由于来自跟踪器的响应是经过编码的,所有信息哈希都以二进制形式发送。即根本没有编码。当您对其进行解码时,您可能希望对信息哈希进行十六进制编码,因为这是一种更加用户友好的表示形式,也是打印它们的传统方式(在网站、磁力链接、应用程序上)。

所以,对于你的问题。当您说“在 infohash 中具有零字节的种子”时,我假设您的意思是它们的 info-hash 还有一个字节,即 0。这是完全正常的,并且并不少见。它会正常工作吗?是的,您只需要确保将其转义为 %00,就像您必须使用 %01 一样。

您的洪流可能已经死了,即跟踪器停止跟踪它。这就是该错误消息的含义。它可能与信息哈希中的零字节无关。

于 2011-03-31T02:34:19.910 回答