我正在尝试使用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);
所以什么都没有,以下问题已经出现了:
我还试过多个网站,允许你手动输入一个scrape的哈希信息,都不合适。
希望有人可以帮助,欢呼。
答案 0 :(得分:0)
嗯,首先,你没有这样的GET
请求。这就是你读取输入值的方法。
其次,您正尝试通过UDP执行请求。所以你不能只是GET
它,因为浏览器或其他任何东西都会代替HTTP请求。
如本网站的评论中所述
UDP的问题是,在TCP的情况下,你有一个隧道,在里面 其中所有数据都在两个方向上进行,但是在发送UDP的情况下 UDP数据包,必须打开端口来听取答案(如果 它会回来)。如果你得到一些数据,数据包就可以了 以不同的顺序返回 - 你也必须处理这个问题。
这就是为什么正常的GET
或file_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