PHP 中的 Torrent 抓取
Posted
技术标签:
【中文标题】PHP 中的 Torrent 抓取【英文标题】:Torrent Scrape in PHP 【发布时间】:2015-05-08 16:16:13 【问题描述】:我正在尝试使用 php 为播种机和 leechers 抓取种子跟踪器。
这是 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);
所以一无所获,出现了以下问题:
-
torchache 提供的哈希值是否正确?
真的只需要一个简单的获取请求就可以获取信息吗?
这就是您在 codeigniter 中执行获取请求的方式吗?
torrent 文件本身有问题吗?
我还尝试了多个允许您手动输入哈希信息以进行抓取的网站,但均未成功。
希望有人能帮忙,干杯。
【问题讨论】:
How to convert torrent info hash for scrape?的可能重复 除了这个问题之外,该种子哈希不会出现在线任何地方。你确定它是正确的吗? @duskwuff 通过制作哈希的磁力链接表明它确实是一个有效的洪流。magnet:?xt=urn:btih:7026AB638744F2BD2444033A8730DA146E15A886
【参考方案1】:
重复我对这个问题的回答:UDP Tracker Scraping 1 script working other Not
问题是您正在向 UDP 跟踪器发送 http-scrape
。
UDP-trackers 使用完全不同的协议:BEP15 - UDP Tracker Protocol for BitTorrent
【讨论】:
【参考方案2】:嗯,首先,你不要像这样的GET
请求。这就是您读取输入值的方式。
其次,您正在尝试通过 UDP 执行请求。所以你不能只 GET
它,因为浏览器或其他任何东西都会做一个 HTTP 请求。
如本站评论中所述
UDP 的问题在于,在 TCP 的情况下,你有一个隧道,在里面 其中所有数据都是双向的,但在 UDP 的情况下,您发送 UDP 数据包,并且必须打开端口以侦听答案(如果 它会回来)。如果你得到一些数据,数据包可以 以不同的顺序返回 - 你也必须处理这个问题。
这就是为什么普通的GET
或file_get_contents()
对你没有多大好处。
您可以使用stream_wrapper_register() 来实现UDP 请求的包装器。
此外,您应该使用$infoHash = urlencode(pack("H*", $orig))
来获取提供给跟踪器所需的字符串。
【讨论】:
以上是关于PHP 中的 Torrent 抓取的主要内容,如果未能解决你的问题,请参考以下文章
Rest API 根据 torrent Hash 获取 Torrent 信息