Отправка запроса очистки для получения семян и сверстников

Я пытаюсь создать сайт torrent, но я застрял в следующем. Как отправить запрос на сканирование торрента, чтобы получить его сеялку и 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 . Как показать Seeds and Peers каждого последовательного анонса объявлений?

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

Я не могу помочь вам с кодом, из-за моего ограниченного опыта работы с PHP, но работа с HTTP-трекерами должна быть довольно простой.

Получите URL объявления, найдите и замените слово «объявить» словом «scrape» и добавьте параметр « ?infohash=<url-encoded-binary-20-byte-long-infohash> (вы можете добавить столько запросов infohash= к вашему запросу , деленный на амперсанд. Сделайте HTTP-вызов этого результирующего URL-адреса и прочитайте ваш ответ с помощью bencoded. Он будет содержать все запрошенные хэши-данные с их соответствующими загрузками, сеялки («полный» в словаре трекера) и ликеров («неполный»). Протокол HTTP очень хорошо документирован .

Работа с трекерами UDP несколько сложнее, потому что эта двоичная форма общения происходит на гораздо более низком уровне. Проверьте полное описание протокола отслеживания UDP .