Що таке Torrent / Торрент розповідати не доводиться, навіть ті, хто ніколи в житті не чув про html і думають, що сайти «ліплять» боги, качають з торрентів (не «зовсім» на легальних підставах) музику, фільми або програми.

150 мільйонів користувачів у світі — це найкращий доказ того, що система працює і неймовірно популярна. Адже знайти і завантажити що-то з торрентом набагато простіше, ніж шукати в мережі (і часто не знаходити).

Протокол BitTorrent — той самий випадок, коли хочеться сказати «все геніальне просто». І правда! Незважаючи на загальне визнання і багатомільйонну армію користувачів, в самому протоколі лежать самі що ні на є «рідні» принципи, на кшталт «Я тобі — ти мені». І в той же час, це не просто пиринговая мережу, де користувачі закачують один у одного расшаренные (відкриті для скачки) файли неодмінно стоячи в черзі в очікуванні, поки для них, нарешті, звільниться заповітний слот. Навпаки, це технологія, що дозволяє отримати файл максимально швидко — часто швидше, ніж просто скачавши його з HTTP-сервера (хоча, часто зовсім навпаки). Велику роль тут відіграють так звані торрент-трекери, які спочатку розумілися лише як координатори процесу передачі файлів між користувачами, але згодом перетворилися в інформаційні портали про розшарені файлах з шаленою популярністю. Розібравшись у внутрішній організації протоколу BitTorrent, запустити трекер можна і самому. Потім розкрутити та ефективно використовувати у своїх цілях. Отже, почнемо?

Загальні принципи роботи протоколу
Щоб не стрибати з місця в кар’єр, пропоную спочатку розібрати загальні принципи роботи технології BitTorrent. Протокол вперше представлений громадськості 2 липня 2001 року, коли програміст Bram Cohen опублікував першу реалізацію на мові Python. Зараз існує величезна кількість клієнтів, якими користуються більш ніж 150 мільйонів користувачів BitTorrent по всьому світу. Такої популярності сприяють кілька причин:

  • найвища швидкість роботи в порівнянні з іншими пиринговыми мережами;
  • відсутність черг, практично миттєвий старт закачувань;
  • можливість перегляду детальної інформації про скачуваному файлі (наприклад, для музичного альбому – це інформація про бітрейті, трекліст, лог-файл програми риппера, обкладинка), завдяки інформаційним сайтам, на яких викладаються торренти;
  • можливість закачування файлів по частинах;
  • роздача файлів відбувається безпосередньо між користувачами, сервера лише координують процес з’єднання і передачі файлів.

Для обміну файлами користувачеві необхідний так званий BitTorrent-клієнт — програма, в якій реалізований протокол BitTorrent. Щоб завантажити якийсь файл, необхідно спочатку знайти для нього так званий torrent-файл, усередині якого містяться спеціальні метадані. По-перше, це інформація про самому файлі (його хеш-сума) і, по-друге, координати так званого трекера — комп’ютера-сервера, який координує поширення файлу. Torrent-файл може зберігати інформацію не про один, а відразу безліч файлів, зберігаючи складну ієрархію папок.

Прочитавши з torrent-файлу метаданих, клієнт під’єднується до трекера і повідомляє йому свою адресу і хеш-суму запитуваного файлу. На що у відповідь отримує адреси інших бенкетів, завантажують або роздають цей же файл. Клієнт підключається до них і відразу обмінюється інформацією щодо наявних сегментах файлу. Якщо хтось з бенкетів готовий віддавати потрібні частини, починається закачування. Після того, як хоча б один сегмент викачаний, клієнт перевіряє його контрольну суму і оповіщає всіх приєднаних бенкетів про наявність у нього цього сегмента. Процес триває до повного скачування файлу.

Виходить, що клієнти з’єднуються один з одним, обмінюються без безпосередньої участі трекера, який лише регулярно оновлює інформацію про те, що підключилися до обміну бенкетах та іншу статистику. Для ефективної роботи мережі BitTorrent необхідно, щоб якомога більше клієнтів були здатні приймати вхідні з’єднання. Потрібно, щоб у них були відкриті наступні TCP-порти: 6881-6889. Втім, вони можуть бути змінені в разі необхідності, щоб, наприклад, обійти обмеження файрвола.
Що знаходиться всередині torrent-файлу?

Як вже було сказано, для поширення будь-якого файлу обов’язково створюється файл метаданих, в якому міститься наступна інформація:

  • загальна інформацію про закачуваний файлі (назва, довжина тощо);
  • контрольні суми сегментів закачуваного файлу;
  • URL трекера.

Природно, вручну нічого робити не треба. Всю роботу бере на себе спеціальна програма, включена в будь-який сучасний torrent-клієнт. Саме вона розбиває файл на частини, розміром від 64 до 4 Мб. Для кожного з шматочків обчислюється контрольна сума (використовуючи алгоритм SHA-1) і записується у torrent-файл з іншими метаданими. Треба сказати, що підрахунок контрольних сум є невід’ємною частиною протоколу: як тільки користувач викачує сегмент якогось файлу, він одразу ж звіряє реальну і заявлену контрольну суми. Таким чином, забезпечується відсутність помилок на будь-якому етапі закачування. Після створення torrent-файл викладається в публічне місце, щоб інші користувачі могли його знайти — зазвичай це вебсайти, пов’язані з трекером.
Поговоримо про трекерах

Незважаючи на те, що трекер координує обмін файлами між клієнтами, він часто навіть не знає, які файли через нього передаються. Адже бенкети, звертаючись до нього, не вказують імена або навіть опису, а передають тільки нічого не говорять хеш-суми. З іншого боку, трекери вже давно перестали бути суто технічної складової, необхідної для роботи з системою. Практично всі вони зараз мають спеціальний веб-інтерфейс з додатковими функціями. Індивідуальна для кожного користувача статистика роздач, поточне кількість сидів і бенкетів для кожного торрента, загальні обсяги переданих між клієнтами даних… – давно стали стандартними фішками будь-якого торрент-трекера. І що найголовніше, такий інтерфейс використовується як майданчик для зберігання і публікації нових torrent-файлів.

Доступ до трекера може бути відкритий або приватний. У зв’язку з появою великої кількості халявщиків або, інакше кажучи, лічерів, закачували у величезній кількості файли, але нічого при цьому не віддаючи, з’явилися так звані приватні трекери. Доступ до такого – виключно після реєстрації, яка часто можлива тільки за запрошенням вже зареєстрованого користувача. Для ідентифікації конкретного клієнта трекер використовує або IP-адресу користувача, або унікальний для кожного юзера пароль, що додається трекером в торрент-файл при його завантаженні. Особливість приватних трекерів – це спеціальна система рейтингів, що враховує кількість переданих іншим бенкетам і скачаних собі даних. Адміністратори трекера вимагають підтримки деякого мінімального співвідношення цих двох величин. Як результат, доступність і швидкість скачування торрентів на приватному трекері зазвичай вище, ніж на відкритому.
Вибираємо трекер

Існують різні реалізації торрент-трекерів, але основною мовою, на якому зараз розробляють подібний софт, є PHP! Одним з найпоширеніших, безумовно, є TBDev/TBSource та його різні модифікації, які у величезній кількості поширюються по Мережі (ще б, адже підігнати PHP-скрипт під себе нічого не коштує). Зокрема, на цьому движку «крутяться» такі популярні трекери, як what.cd і waffles.fm. Крім цього мені вдалося зіткнутися і з іншими реалізаціями PHP-трекерів: BtiTracker, xbtit, AKNova, TorrentTrader. Всі вони вимагають встановленого на сервері PHP-інтерпретатора і використовують в якості даних СКБД MySQL.

Інша частина трекерів, що з’явилася значно раніше, була написана на компилируемых мовами. До них відносяться:

  • XBTT – відомий трекер, перша версія якого з’явилася ще в далекому 2004 році, проте розробка і підтримка триває досі;
  • BNBT – портований на C++ оригінальний Брама Коена, який був розроблений на Python. Сам BNBT, а також два його форк CBTT і XBNBT, на жаль, більше не розвиваються;
  • Opentracker, який колись використовував The Pirate Bay до проблем з асоціаціями звукозаписних компаній.

Якщо вибирати не з скриптових трекерів, то вибір, очевидно, впаде на XBTT і Opentracker, однак, зв’язуватися з ними по ряду причин я не рекомендую. На перших порах краще всього використовувати саме PHP-реалізації – TBDev/TBSource або xbtit. В якості прикладу ми візьмемо модифікацію TBDEV YSE, яку можна завантажити з bit-torrent.kiev.ua або взяти з нашого диска.
Приступаємо до установки

Отже, що потрібно для установки?

  • Веб-сервер з підтримкою PHP (наприклад, Apache або LightTPD);
  • PHP версії 5.1.1 або вище;
  • Сервер бази даних MySQL версії 4.1 або вище, краще 5.0;
  • Будь-яка оболонка для роботи з СУБД MySQL (наприклад, phpMyAdmin або EMS SQL Manager 2007 Pro for mySQL).
  • Вимоги настільки мінімальні, що для розміщення торрент-трекера підійде навіть безкоштовний хостинг. Проте ймовірність того, що твій торрент скоро відмовить або взагалі буде видалений, дуже велика. Тому не скупися витратитися на платну майданчик: на перших порах цілком зійде самий звичайний хостинг, ціна на які не перевищує $10-15. Якщо справа піде і трекер буде набирати обертів, можна замислитися про VPS/VDS і, в кінцевому підсумку, виділеному сервері. Єдиний тонкий нюанс — це налаштування PHP інтерпретатора:

    • memory_limit = 16M
    • error_reporting = E_ALL ^ E_NOTICE
    • display_errors = On
    • display_startup_errors = On
    • log_errors = On
    • report_memleaks = On
    • short_open_tag = On
    • register_globals = Off
    • magic_quotes_gpc = Off
    • file_uploads = On
    • upload_max_filesize = 8M
    • allow_url_fopen = On

    Якщо все ОК, можна приступати до установки. Після розпакування архіву зі скриптами зверни увагу на папку SQL, в якій лежить один єдиний файл database.sql — з його допомогу ти зможеш створити базу даних з потрібною структурою. Чим ми зараз і займемося.

    1. Практично на будь-якому хостингу встановлений скрипт phpMyAdmin, спеціально призначений для зручного управління базами даних через браузер. Звернутися до нього можна так: http:///phpmyadmin/ або з панелі адміністратора (Plesk, cPanel, DirectAdmin або інша, залежно від хостингу — суть у всіх одна). В крайньому випадку, нічого не варто встановити його самому.

    2. Далі створюємо нову базу даних, вказуємо її ім’я (скажімо, tbdev), а в якості параметра Порівняння вибираємо кодування cp1251_general_ci. Тиснемо «Створити».

    3. Переходимо на вкладку «Імпорт». Може виявитися так, що такий вкладки не виявиться, тоді підійде вкладка з назвою SQL. Так чи інакше, тобі буде запропоновано вказати файл SQL, що містить послідовність SQL-команд.

    4. Тиснемо на кнопку «Огляд» і вказуємо шлях до нашого SQL-файлу. Не забуваючи вибрати cp1251, даємо команду на імпорт.

    5. Тепер потрібно вказати параметри бази даних і самого SQL-сервера нашим скриптам. Для цього перейдемо в каталог /include і відредагуємо наступні параметри у файлі secrets.php:

    $mysql_host = «localhost»;// 99%, що тобі не потрібно змінювати цей параметр
    $mysql_user = «user»;// ім’я користувача MySQL
    $mysql_pass = «password»;// …і пароль
    $mysql_db = «tbdev»;// ім’я бази даних
    $mysql_charset = «cp1251»;// це не чіпаємо

    Все, тепер файли трекера можна заливати на сервер. Скрипти написані таким чином, що нічого більше налаштовувати не треба. Досить набрати в адресному рядку браузера шлях до тільки що закачаним скриптам, – і перед тобою з’явиться сторінка твого власного трекера! Перший зареєстрований користувач автоматично стає адміністратором, який може керувати налаштуваннями трекера, видаляти і редагувати облікові записи, модерувати внутрішній форум і т. д. і т. п. Словом, робити все, щоб трекер служив на благо суспільства. Описувати особливості роботи було б зайвим, на увазі простоти всього процесу. Зауважу лише, що частина налаштувань, що впливають на поведінку трекера, знаходяться також у файлі secrets.php.

    Огляд торрент-трекерів

    Торренти (http://torrents.ru)

    Один з найбільших російських трекерів. Його щодня відвідують близько 160 тисяч користувачів, що дуже добре для проекту, заснованого на чистому ентузіазмі. Варто відзначити, що таким популярним він став за відносно невеликий проміжок часу — всього лише три роки. Серед основних переваг можна виділити: велика кількість різноманітного контенту (починаючи від раритетних аудіо — і відеозаписів і закінчуючи свіжими билдами програмних продуктів) і високу швидкість закачування за рахунок великої кількості бенкетів.

    Demonoid (http://Demonoid.com)

    Найбільший трекер в усьому світі, яким оголосили справжню війну асоціації звукозаписних компаній. Ще недавно, коли Демоноид пропав на кілька місяців, здавалося, вони цю війну виграли. Однак навесні сервер знову ожив і відмінно відчуває себе на українських майданчиках. Для реєстрації необхідно запрошення від одного з користувачів.

    НоваФильм (http://novafilm.tv)

    «НоваФильм» – спільнота, що спеціалізується на перекладі і озвучці популярних телешоу (переважно, серіали). Всі свої релізи вони оформляють у вигляді роздач на однойменному трекері. Особливість «НоваФильм» в ексклюзивності і гарному якості контенту. Нові епізоди популярних серіалів з’являються через день-два після їх прем’єри за бугром. Завдяки такій оперативності, novaFilm.tv став трекером номер один для всіх любителів нових і старих телесеріалів.

    Кращі серіали (http://lostfilm.ru)

    «ЛостФильм» можна сміливо назвати дзеркалом «НоваФильм». Чому? Та тому що це ще один трекер, цілком і повністю присвячений поширенню популярних серіалів. У любителів серіалів вже давно виник звичай – якщо бажаний серіал не знайшовся на novafilm, то значить, він неодмінно знайдеться на lost’e.

    HD Tracker (http://hdtracker.ru)

    Основний контент цього трекера – новинки фільмів формату HD DVD, Blu-ray і HDTV. Основні відвідали ресурсу – любителі кіно з гарною якістю зображення і широким інтернет-каналом. Простим смертним з загальмованим інетом на цьому трекері робити нічого, так як середній розмір фільму, як правило, не менше 4-х гигов, а значить, з товщиною каналу 64/128 КБит швидко стягнути нічого не вийде. Ах так, трохи не забув. Для реєстрації необхідно отримати запрошення від одного з користувачів ресурсу.

    Sharereactor (http://tracker.sharereactor.ru/)

    Досить хороший і «живий» трекер. З контента тут представлено тільки відео. Причому є як новинки, так і досить старі і раритетні фільми. Багато з релізів можна назвати ексклюзивними, адже створенням озвучення займаються постійні відвідувачі ресурсу. Тільки завдяки таким ентузіастам багато можуть подивитися фільм, який ще не був офіційно дубльований в РФ (а можливо, що і не буде…), а таких фільмів дуже-дуже багато.

    TFile (http://tfile.ru/)

    Найбільший торрент-трекер, який за кількістю користувачів та обсягом представленого контенту можна порівняти з torrents.ru (хоча до повноцінного torrents.ru йому ще далеко). Контент на трекері найрізноманітніший: нові фільми, фільми в якості HDTV, серіали, soft, мультфільми, аніме, література і т. д. З особливостей можна виділити – стабільність і душевну атмосферу, що панує на форумі. Стабільність роботи дійсно на висоті. Трекер такого масштабу рідко йде в даун і завжди радий новим гостям. Серед мінусів можна відзначити досить швидке «охолодження» роздач.

    Free Exchage (http://tracker.freeexchange.ru)

    Один з небагатьох трекерів, який дозволяє качати файли без реєстрації та без будь-яких обмежень. На перший погляд це добре, але якщо подивитися з іншого боку, поганого більше. Відсутність реєстрації породжує халявщиків, які тільки качають і абсолютно нічого не віддають. Внаслідок цього, новинки на трекері з’являються не лише оперативно, а роздачі довго не живуть.

    The Pirate Bay (http://thepiratebay.org)

    Один з найбільших трекерів у світі і по кількості користувачів, і за контенту. Контент на будь-який смак. Тут і ігри, і фільми, і все, що душі завгодно. Причому від відвідувача не потрібно реєструватися і виконувати складних рухів – можна відразу переходити до закачування. Завдяки великій кількості користувачів, швидкість закачування завжди на високому рівні, тому щасливі будуть як власники широких інет-каналів, так і зовсім вузеньких.

    Torrent Finder (http://torrent-finder.com)

    Це не торрент-трекер, а спеціалізований пошукач torrent-файлів. За допомогою цього сервісу дуже зручно шукати якісь ексклюзивні речі. Вбив запит, почекав кілька секунд і вуаля – купа посилань на торрент-файл зі схожою назвою. Torrent Finder проводить пошук за найбільшим закордонним трекерам, але, на жаль, обходить стороною вітчизняні ресурси.