6

トレント サイトを作成しようとしていますが、次の点で行き詰っています。シーダーとリーチャーを取得するためにトレントスクレイプリクエストを送信する方法は?

アナウンス リストを提供する 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によってエンコードされたデータに基づいています。このように、連続するすべてのアナウンス URL のシードピアを表示するにはどうすればよいですか?

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 トラッカーを扱うのはかなり簡単なはずです。

アナウンス URL を取得し、「announce」という単語を検索して「scrape」に置き換え、?infohash=<url-encoded-binary-20-byte-long-infohash>パラメーターとして追加します (infohash=アンパサンドで割った数をクエリに追加できます。その結果の URL に対して HTTP 呼び出しを行い、ベンコードされた回答を読み取ります。要求されたすべての情報ハッシュと、それぞれのダウンロード、シーダー (トラッカーの語彙では「完全」) およびリーチャー (「不完全」) が含まれます.HTTP スクレイプは非常によく文書化されています.

このバイナリ形式の通信は、はるかに低いレベルで行われるため、UDP トラッカーの処理はやや複雑です。UDP トラッカー プロトコルの完全な説明を確認してください。

于 2011-03-06T19:47:54.540 に答える