6

我一直在尝试创建一个 torrent 网站,但我遇到了以下问题。如何发送 torrent scrape 请求以获取其播种机和 leechers?

我有一个 PHP 类函数,它为我提供了公告列表。

public function getTrackers() {
    // Load tracker list
    $trackerlist = array();

    if ( $this->torrent->get_value('announce-list') )
    {
        $trackers = $this->torrent->get_value('announce-list')->get_plain();
        while ( list( $key, $value ) = each( $trackers ) )
        {
            if ( is_array( $value->get_plain() ) ) {
                while ( list( $key, $value2 ) = each( $value ) )
                {
                    while ( list( $key, $value3 ) = each( $value2 ) )
                    {
                        array_push( $trackerlist, $value3->get_plain() );
                    }
                }
            } else {
                array_push( $trackerlist, $value->get_plain() );
            }
        }
    }
    else if ( $this->torrent->get_value('announce') )
    {
        array_push( $trackerlist, $this->torrent->get_value('announce')->get_plain() );
    }

    return $trackerlist;
}

此代码基于bencode.php编码的数据。如何像这样显示每个连续公告网址的种子同行?

Annouce Url | Seeds : No. | Peers: No.     
Annouce Url | Seeds : No. | Peers: No.     
Annouce Url | Seeds : No. | Peers: No. 
and so on.....
4

1 回答 1

5

由于我在 PHP 方面的经验有限,我无法帮助您编写代码,但处理 HTTP 跟踪器应该相当容易。

获取announce URL,搜索并用“scrape”替换单词“announce”并添加?infohash=<url-encoded-binary-20-byte-long-infohash>为参数(您可以在查询中添加尽可能多的内容infohash=,除以&符号。对该生成的URL进行HTTP调用并阅读您的编码答案。它将包含所有请求的信息散列及其各自的下载、播种机(跟踪器词汇表中的“完整”)和 leechers(“不完整”)。HTTP 抓取非常有据可查

处理 UDP 跟踪器稍微复杂一些,因为这种二进制形式的通信发生在低得多的级别。检查UDP 跟踪器协议的完整描述

于 2011-03-06T19:47:54.540 回答