Sending scrape request for getting torrent's seeds and peers

依然范特西╮ 提交于 2019-12-03 14:27:56

问题


I have been trying to create a torrent site but I'm stuck with the following. How to send torrent scrape request to get its seeder and leechers?

I have a PHP class function that provides me announce list.

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;
}

This code is based on the data encoded by the bencode.php. How to show Seeds and Peers of every consecutive announce url like this?

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

回答1:


I can't help you with code, due to my limited experience with PHP, but dealing with HTTP trackers should be fairly easy.

Get the announce URL, search and replace the word "announce" with "scrape" and add ?infohash=<url-encoded-binary-20-byte-long-infohash> as parameter (you may add as many infohash= to your query, divided by ampersand. Make a HTTP call to that resulting URL and read your bencoded answer. It will contain all the requested info-hashes with their respective downloads, seeders ('complete' in tracker's vocabulary) and leechers ('incomplete'). HTTP scrape is very well documented.

Dealing with UDP trackers is somewhat more complicated, because this binary form of communication happens at much lower level. Check the full description of UDP tracker protocol.



来源:https://stackoverflow.com/questions/5140300/sending-scrape-request-for-getting-torrents-seeds-and-peers

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!