我的问题在infohash包含'00'时刮取http回复,使用%00刮取请求,因此在http回复中会有'\ 0'。 我在infohash中找到了一些零字节的种子,我想知道跟踪器应该如何回复对该种子的scrape请求。我的意思是'\ 0'通常会起作用吗?我用torrentspy测试了这个种子,它总是说:
“在追踪器上找不到Torrent;可能会腐烂”
我写了一个基本的跟踪器来测试它,并验证完整的scrape回复是写入socket的,但是torrentspy仍然具有相同的输出。当我在webbrowser中查看该scrape回复时,它会在'\ 0'
结束有人能把光线带入黑暗中吗?
答案 0 :(得分:2)
目前还不完全清楚你的问题是什么,但我会尝试填写一些内容。
'\ 0'与任何其他不可打印的字符没有什么不同。所有非URL安全字符始终必须作为%xx在GET请求中转义为HTTP跟踪器。一些跟踪器存在错误,例如他们假设不需要转义的字符不被转义(即,它们可以存储转义版本的信息哈希作为其内部表示)。一些Web服务器甚至可能认为`(单引号)总是被转义(允许SQL注入攻击)。必须转义所有特殊字符,尤其是&
和%
(显然)。
响应更简单。由于来自跟踪器的响应是bencoded,所有信息哈希都以二进制形式发送。即根本没有编码。当你解码它时,你可能想要对信息哈希进行十六进制编码,因为这是一种更加用户友好的表示形式,也是传统的打印方式(在网站,磁力链接,应用程序上)。
那么,对你的问题。当你说“在infohash中有零字节的种子”时,我假设你的意思是他们的信息哈希有一个更多的字节,这是0.这是完全正常的,并不罕见。它通常会起作用吗?是的,你只需要确保将其作为%00转义,就像你必须使用%01一样。
你的洪流可能已经死了,即跟踪器停止跟踪它。这就是错误信息的含义。它可能与在info-hash中使用零字节没有任何关系。