BitTorrent protocol & DHT PHP

5 000 руб. за проект
20 октября 2019, 16:58 • 7 откликов • 59 просмотров
Сделать на php, на других языках я и сам сделал
Дано:
На вход подаётся:
1)ИнфоХеш,
2)IP:PORT - пиру у которого 100% загружен торрент

Выход:
1)Имя торрента
2)Массив со списком всех файлов торрента.
или
Ответ по протоколу(нет торрента/клиент не доступен/не поддерживает метаданные)

Проверка:
Вы включите демонстрацию экрана и показываете, что код работает(дам пару хешей и ip на проверку),
Возможности и настройки хостинга как у hostinger.ru (Премиум Хостинг)
Пример ИП:порт , Статус 1 = 100% загружен
https://ssl.corpscorp.online/api/v3/track.peers.get.php

Описание кратко:
Требуется написать минимальное количество запросов, для получения части метаданных торрент файла(Название торрента, имена файлов). Примерная реализация описана здесь http://www.bittorrent.org/beps/bep_0009.html

Описание полно:
Мне известно, что для получения метаданных нужно отправить DHT запрос get_peers(удачно получаю).
Если узнали у какого узла есть 100% содержание файлов, значит этот узел может дать информацию о торренте.
Для этого надо сделать запрос рукопожатия по BitTorrent protocol-у (с этим проблема).
Затем отправить запрос на получение первой части метаданных с расширенным сообщением "d8:msg_typei0e5:piecei0ee"
Готово! Цель достигнут. Мы получили название торрента и список файлов.

Вот ПРИМЕР кода (это НЕ значит что его надо ОБЯЗАТЕЛЬНО использовать)https://github.com/cuijun123/phpDhtSpider/blob/69a4677e178ccae97badf06d7a4132c1a66e07ca/dht_client_v2(task)/inc/Metadata.class.php
Предупреждаю сразу у многих проблема с получение рукопожатия(check_handshake)
В классе реализовано, почти всё что мне надо, запросы рукопожатия и получения метаданных торрента зная только ИнфоХеш, минусом(работа не будет принята) является зависимость от swoole 1.9.18 , нужно переписать (если брать код за основу) на любой стандартные функционал udp/tcp (socket_create/stream_socket/fsockopen/curl).

Если возникнут вопросы , пишите мне.
Отговорки о невозможности реализовать, не принимаются и задание считается не выполненым..

9-ая ..... итерация заказа

F.A.Q.
1)Обязательно php ?, давай питон или другие языки...
О: ДА обязательно php
2)Бюджет поднимите?
О:Прикинем в месяце 4 недели = 20 дней работы
я на c# за 3 дня сделал(первый раз взялся) 20/3*5к= 33к (зп/месяц)
на java 1 день = 100к зп
питон тоже 1 день(если считать что в день 8 часов то я его даже не полностью отработал) = 100к зп
Я считаю получить такую денежку за пару часов работы это норм, сам был студентом и среднее 50к зп. считаю нормальным для начала. + задача обрезана.
+ люди выставляют свои ценники 800-1700 в час
это 6-3 часов работы за 5к думаю за это время можно справится а если не успевают так я подожду(по 2 недели жду и они пропадают)
по задаче надо 2 запроса отправить и 2 раза получить ответ + рукопожатие и согласие...вроде.
короче не вижу смысла подымать.
3) Актуально?
О:да буду 2-3 дня выбирать исполнителя
4)IP:PORT это бутстрап-ноды DHT?
О:нет, это ип:порт пира у которого есть торрент 100% загрузка
5)Надо на php какой версии?
О:Доступны версии PHP 7.1PHP 7.2PHP 7.3, любая
6)tcp или udp?
О:tcp или udp - как получится, задача - должно работать получение имени торрента и список файлов.
7)Насколько фанатично нужно обрабатывать ошибки?
О:НЕ фанатично, но чтобы было понятно если что-то пойдёт не так.
8)зачем тогда get_peers из DHT делать, если заранее известен пир, у которого можно спросить метаданные?
О:Не помню, там вроде требование перед рукопожатием get_peers делать, если требуемые данные по заданию можно получить без него , ок значит без него.
9)Какие торрент-клиенты точно поддерживают отдачу метадаты?
О:qbittorrent цtorrent и трансмисион
10)Реализация нужна в виде консольного скрипта или в виде модуля для интеграции в бэк?
О:Скрипт.
11) Почему сам не сделал?
О: Не смог)) решал этот вопрос 2-3 года назад, на php не смог((



Отзывы
R50 b85ebf4665b7bc84006b0b81bbf45808
Заказчик
Победитель 9-ой итерации заказа (8 исполнителей перед ним провалилось), заказ весел 2а года.
Не побоялся и справился.
Он Юрий, так держать) спасибо)
20 дней назад
R50 f64c76990806de37bfbf2551b22f58ef
Фрилансер
Интересная задача, адекватная сложности оплата. Было приятно помочь человеку, которого долго динамили.
20 дней назад