【问题标题】:How to convert torrent info hash for scrape?如何将种子信息哈希转换为刮擦?
【发布时间】:2010-07-17 15:44:21
【问题描述】:

我有一个来自磁力链接的种子哈希。例如:fda164e7af470f83ea699a529845a9353cc26576 当我尝试获取有关 leechers 和同伴的信息时,我应该请求:http://tracker.publicbt.com/scrape?info_hash=??? 我应该如何为此请求转换信息哈希?是url编码还是becoding?如何?在 PHP 中。

【问题讨论】:

    标签: php hash bittorrent tracker


    【解决方案1】:

    这是一个原始的十六进制表示。使用pack()H 进行转换。然后对其进行 URL 编码。

    【讨论】:

      【解决方案2】:

      从同事那里得到了这个 python sn-p,

      r = ''
      s = 'fda164e7af470f83ea699a529845a9353cc26576'
      for n in range(0, len(s), 2):
          r += '%%%s' % s[n:n+2].upper()
      print r
      

      输出:%FD%A1%64%E7%AF%47%0F%83%EA%69%9A%52%98%45%A9%35%3C%C2%65%76

      像魅力一样工作。

      编辑:就像让跟踪器返回状态 200(好的)的魅力,但仍然无法检索种子详细信息...

      【讨论】:

        【解决方案3】:

        万一有人遇到问题并在将来遇到此线程:整个问题的诀窍是使用 PHP: sha1 函数的 bool $raw_output 参数,将其设置为“true”。

        可以在HERE 找到 BDecode/DEncode 类。这个名为 Trackon 的项目还包括许多其他有用的类,用于与 torrent 跟踪器和文件进行交互。

        因此,在 PHP 中,类似这样的方法可以获取 正确 信息散列,以获取跟踪器的详细信息:

        include('./path/to/BDecode.php');
        include('./path/to/BEncode.php');
        
        function getHash($torFile){
            $tfile = BDecode(file_get_contents($torFile));
            $infohash = sha1(BEncode($tfile["info"]), TRUE);
        
            return urlencode($infohash);
        }
        

        那就这样称呼吧:

        $hash = getHash('./path/to/.torrent');
        

        希望这对那里的人有所帮助。在阅读了许多有关如何获取正确信息哈希的帖子后,我仍然摸不着头脑。我明白为什么现在没有提到这个,这个参数是在 PHP 5 中添加的。如果你没有运行 PHP 5,你必须在计算后将 sha1 哈希转换为原始二进制。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-11-20
          • 2012-11-11
          • 2013-11-13
          • 2015-11-26
          • 2019-10-27
          • 2019-05-23
          • 1970-01-01
          • 2010-12-16
          相关资源
          最近更新 更多