PHP中的Torrent Scrape

时间:2015-05-08 16:16:13

标签: php codeigniter-2 tracker torrent

我正在尝试使用PHP为浏览器和leechers扫描一个torrent跟踪器。 这是torcahche返回的哈希值:7026AB638744F2BD2444033A8730DA146E15A886 追踪者跟随洪流:

udp://tracker.openbittorrent.com:80/announce
udp://tracker.publicbt.com:80/announce
udp://tracker.ccc.de:80/announce

这些是我试图获取所需信息的方法:

            $orig="7026AB638744F2BD2444033A8730DA146E15A886";
            $infoHash=$orig;
            $nfo='udp://tracker.openbittorrent.com:80/scrape?hash_id='.$infoHash;
            echo '<br>'.$nfo;
            $gitsl=$this->input->get($nfo);
            print_r($gitsl);

            $infoHash=pack('H',$orig);
            $nfo='udp://tracker.openbittorrent.com:80/scrape?hash_id='.$infoHash;
            echo '<br>'.$nfo;
            $gitsl=$this->input->get($nfo);
            print_r($gitsl);

            $infoHash=hex2bin($orig);
            $nfo='udp://tracker.openbittorrent.com:80/scrape?hash_id='.$infoHash;
            echo '<br>'.$nfo;
            $gitsl=$this->input->get($nfo);
            print_r($gitsl);

            $infoHash='%70%26%AB%63%87%44%F2%BD%24%44%03%3A%87%30%DA%14%6E%15%A8%86% ';
            $nfo='udp://tracker.openbittorrent.com:80/scrape?hash_id='.$infoHash;
            echo '<br>'.$nfo;
            $gitsl=$this->input->get($nfo);
            print_r($gitsl);

所以什么都没有,以下问题已经出现了:

  1. torchache提供的哈希是否正确?
  2. 是否真的只需要一个简单的获取请求来获取信息?
  3. 甚至你在codeigniter中如何处理get请求?
  4. torrent文件本身有问题吗?
  5. 我还试过多个网站,允许你手动输入一个scrape的哈希信息,都不合适。

    希望有人可以帮助,欢呼。

2 个答案:

答案 0 :(得分:0)

嗯,首先,你没有这样的GET请求。这就是你读取输入值的方法。

其次,您正尝试通过UDP执行请求。所以你不能只是GET它,因为浏览器或其他任何东西都会代替HTTP请求。

如本网站的评论中所述

  

UDP的问题是,在TCP的情况下,你有一个隧道,在里面   其中所有数据都在两个方向上进行,但是在发送UDP的情况下   UDP数据包,必须打开端口来听取答案(如果   它会回来)。如果你得到一些数据,数据包就可以了   以不同的顺序返回 - 你也必须处理这个问题。

这就是为什么正常的GETfile_get_contents()对你有好处的原因。

您可以使用stream_wrapper_register()来实现UDP请求的包装器。

此外,您应该使用$infoHash = urlencode(pack("H*", $orig))来获取提供给跟踪器所需的字符串。

答案 1 :(得分:0)

从这个问题重复我的回答:CMake's doc

问题是您正在向UDP跟踪器发送http - scrape UDP跟踪器使用完全不同的协议:UDP Tracker Scraping 1 script working other Not