Magnet-ссылка
URI-схема magnet: — открытый, находящийся в стадии рабочего черновика стандарт, определяющий
Поскольку такие ссылки позволяют найти файл на основе его содержания и метаинформации, а не его фактического расположения, их можно считать разновидностью URN, а не более общего URI. Хотя magnet-ссылки могут использоваться в других сферах, они наиболее востребованы в пиринговых сетях, поскольку в таких сетях ссылка на некий ресурс не означает, что он должен быть постоянно доступен.
Стандарт был создан в 2002 году, отчасти как обобщение, независимое от конкретных производителей программного обеспечения и проектов, URI-схем ed2k:
и freenet:
, использующихся сетями
Применение
- Используются в DC++ Каталогах, где они публикуются вместе с подробным описанием файла.
- В BitTorrent каталогах, где публикуются как альтернативный способ загрузки вместе с подробным описанием раздачи.
- Для загрузки файла с сохранением его под именем, отличным от указанного в url[1].
Поскольку не все
Также magnet-ссылки могут распространяться в виде файлов с расширением *.magnet.
Использование хеш-кодов
Наиболее распространённое использование magnet-ссылок — указание на конкретный файл при помощи его уникального идентификатора, подобного
Поскольку любое хеширование является сужающим преобразованием, теоретически возможны ситуации, в которых два разных файла будут обладать одинаковыми хеш-кодами, однако на практике они возникают исключительно редко.
Одним из преимуществ magnet-ссылок является их открытость и независимость от платформы: они могут быть использованы для загрузки файла при помощи разнообразных приложений на практически всех операционных системах. Благодаря тому, что magnet-ссылка представляет собой короткую строку текста, она может быть легко скопирована через
Техническое описание
Magnet-ссылка может содержать один или несколько параметров, разделённых между собой знаком '&'. Порядок следования параметров не документирован. Для некоторых значений важно положение параметра для правильного синтаксического анализа клиентом магнет-ссылки.
- Пример
magnet:?xl=Размер_в_байтах&dn=Имя_файла&xt=urn:tree:tiger:
TTH-хеш_файла
- Параметры
- dn (Display Name) — имя файла.
- xl (eXact Length) — размер файла в байтах.
- dl (Display Length) — отображаемый размер в байтах.
- xt (eXact Topic) — URN, содержащий хеш файла.
- as (Acceptable Source) — веб-ссылка на файл в Интернете.
- P2Pссылка.
- kt (Keyword Topic) — ключевые слова для поиска.
- mt (Manifest Topic) — ссылка на метафайл, который содержит список магнетов (MAGMA).
- BitTorrentклиентов.
URN, содержащий хеш (xt)
Данная часть магнет-ссылки является самой главной. Именно по указанному в ней хешу производится поиск источников и проверка файла.
TTH (Tiger Tree Hash)
Хеш используется в сетях Direct Connect и Gnutella
xt=urn:tree:tiger:[Base32) ]
SHA-1 (Secure Hash Algorithm 1)
Хеш используется в сетях Gnutella, Gnutella2 а также для создания микро-торрента из магнет-ссылки.
xt=urn:sha1:[Base32) ]
BitPrint[2]
Это последовательная запись хеша
xt=urn:bitprint:[Base32) ]
ED2K (EDonkey2000) Hash
Хеш
xt=urn:ed2k:[ed2k хеш файла (Hex) ]
Неофициальный URN для магнет. eDonkey2000 клиентами пока не читается. Хеш используется в eDonkey2000 для восстановления целостности файла.
xt=urn:aich:[Base32) ]
Магнет-ссылки с AICH создаёт, к примеру, Rhash (rhash—aich—magnet filename).
Kazaa Hash
Хеш используется в FastTrack
xt=urn:kzhash:[ Kazaa хеш (Hex) ]
BTIH (BitTorrent Info Hash)
Хеш используется в сетях
xt=urn:btih:[BTIH (Hex) ]
MD5 (Message Digest 5)
Хеш используется в Gnutella2
xt=urn:md5:[ MD5 хеш (Hex) ]
CRC-32 (Cyclic Redundancy Check)
Неофициальный URN для магнет. В
xt=urn:crc32:[CRC-32 (Base10) ]
Веб-ссылки на файл
Существует 3 вида ссылок, которые можно вставить в magnet-ссылку.
Обычная (as)
Эта ссылка указывает адрес файла на обычном веб-сервере. Клиент обращается по ней не сразу, а только по прошествии некоторого времени; таким образом, эта ссылка используется только в том случае, если файл не удалось обнаружить в P2P-сетях, что позволяет избежать излишней нагрузки на сервер.
as=[веб-ссылка на файл (URL encoded)]
BitTorrent Web Seed (ws)
Это прямая ссылка на файл или каталог для загрузки. GetRight поддерживает загрузку по протоколам HTTP, HTTPS, FTP и FTPS. Возможно использование и других протоколов, например, RTSP или MMS, если их поддержка реализована в клиенте.
ws=[веб-ссылка на файл/каталог (URL encoded)]
P2P (xs)
Эта ссылка — обычно адрес файла не на сервере, а на P2P-клиенте или адрес хаба (в случае DC++). По этой ссылке клиент пытается сразу соединиться и запросить файл или его источники. Данное поле обычно используется P2P-клиентами для хранения источника. Ссылка может содержать хеш файла.
Содержимо-адресующаяся веб ссылка
Данный вид ссылки в основном используется только клиентом Shareaza.
xs=http://[Адрес клиента]:[Порт клиента]/uri-res/N2R?[ URN содержащий хеш файла ]
Ссылка на DirectConnect хаб с источниками файла
По этой ссылке клиент DirectConnect сразу же соединяется с указанным хабом. Правильно работает только в не URI кодированном виде в конце магнет-ссылки. Позволяет собраться качающим один и тот же файл по этой магнет-ссылке на одном хабе.
xs=dchub://[Адрес хаба]:[Порт хаба]
Для вставки в магнет-ссылку желательно использовать адрес крупного публично доступного Direct Connect хаба на котором нет ограничений по размеру шары (доступных для скачивания с клиента файлов).
Ссылка на кеш источников файла для Gnutella2
В данном случае ссылка указывает не на клиент, а на кеш источников. Кеш не имеет у себя файла, но записывает и выдаёт адреса тех, у кого открыт порт на раздачу и он обратился по этому адресу. Тем самым, те, кто обращался за этим файлом по этому адресу, возможно, уже получили файл и теперь могут передать его следующему запросившему. Эта система работает аналогично BitTorrent-трекеру.
xs=http://cache.freebase.be/ Архивная копия от 3 октября 2009 наsha1хеш файла ]
Ссылка на ED2K источник
xs=ed2kftp://[Адрес клиента]:[Порт клиента]/[ed2k hash]/[file size]/
Отображаемый размер (dl)
Магнитные ссылки ссылаются только на один файл. В некоторых DC++-клиентах есть работающая реализация ссылок на каталоги. Такие ссылки
Манифест (mt)
Это ссылка на список ссылок (файл лист). Может быть как веб-ссылкой,
mt=http://weblog.foo/all-my-favorites.rss
так и URN
mt=urn:sha1:3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ
Совместно с остальными может использоваться для получения дополнительной информации по файлу.
Пример:
magnet:?xl=10826029&dn=mediawiki-1.15.1.tar.gz &xt=urn:tree:tiger:7N5OAMRNGMSSEUE3ORHOKWN4WWIQ5X4EBOOTLJY &mt=urn:btih:QHQXPYWMACKDWKP47RRVIV7VOURXFE5Q
Данный магнет содержит данные одного файла, а часть mt содержит BTIH .torrent файла который содержит дополнительную информацию по файлу.
Ключевые слова (kt)
Это поле задаёт строку для поиска в P2P сетях.
kt=martin+luther+king+mp3
Адрес трекера (tr)
tr=http://example.com/announce
Битрейт (br)
Скорость загрузки(битрейт) при которой части файла можно запрашивать последовательно. Загрузка последовательно происходит только в части файла от начала и до точки воспроизведения[5]. Если пир не имеет доступных частей для последовательной загрузки запрашивается случайная из другой части файла[6].
br=192000
Расчёт:
br=[размер файла в байтах]*8 / [продолжительность аудио или видео в секундах]
Алгоритм использования в p2p клиенте:
1 Если (скорость загрузки файла меньше заданного битрейта) то файл загружается случайным порядком; 2 Иначе Если (скорость загрузки непрерывного участка от начала файла меньше или равна битрейту) то файл загружается последовательно; Иначе файл загружается случайно;
Дополнение формата (x.)
Для самостоятельного дополнения формата неофициальными параметрами для них предусмотрен префикс 'x.'
x.[название нового параметра]=[данные нового параметра (URL encoded)]
Группы параметров
Названиям параметров одной группы добавляется суффикс '.' (точка) и индекс группы.
magnet:?xt.1=[ URN первого файла ]&xt.2=[ URN второго файла ]
Замечание
Некоторые программы, создающие magnet-ссылку, не кодируют специальные и национальные символы в URI представление (%20) и тем самым эти ссылки на веб-странице могут вызвать ошибки. Особенно это важно, когда ссылка, вставляемая в magnet-ссылку, содержит знаки «&»; они должны быть заменены на «%26».
URI Кодирование
Вставляемые ссылки в предназначенные для этого поля (as, xs, tr) перед этим должны быть URI-кодированы[7].
URL трекера
http://tracker.example.org/announce.php?uk=1111111111&
в magnet-ссылке должен выглядеть так
magnet:?tr=http%3A%2F%2Ftracker.example.org%2Fannounce.php%3Fuk%3D1111111111%26
" | #[8] | % | &[8] | ' | * | ,[8] | :[8] | ;[8] | < | > | ?[8] | [ | ^ | ` | { | | | } | <пробел> |
%22 | %23 | %25 | %26 | %27 | %2a | %2c | %3a | %3b | %3c | %3e | %3f | %5b | %5e | %60 | %7b | %7c | %7d | %20[9] |
Вставка в HTML
Перед вставкой в HTML-код в ссылке необходимо заменить все знаки «&» на «&».
Исходный магнет
magnet:?dn=file.ext&tr=http%3A%2F%2Ftracker.example.org%2Fannounce.php%3Fuk%3D1111111111%26
при вставке в HTML-код должен выглядеть так
<a href="magnet:?dn=file.ext&tr=http%3A%2F%2Ftracker.example.org%2Fannounce.php%3Fuk%3D1111111111%26">file.ext</a>
Это можно сделать, воспользовавшись программой Notepad++ v5.4.5+, при помощи пункта меню TextFX -> TextFX Convert -> Encode HTML (&<>")
Разбиение на строки
При необходимости разбить ссылку на строки[10], переход на новую строку лучше ставить перед знаком «&» (амперсанд). В таком случае, встретив его в начале строки, можно легко понять, что это продолжение magnet-ссылки.
magnet:?xl=10826029&dn=mediawiki-1.15.1.tar.gz &xt=urn:tree:tiger:7N5OAMRNGMSSEUE3ORHOKWN4WWIQ5X4EBOOTLJY &xt=urn:btih:QHQXPYWMACKDWKP47RRVIV7VOURXFE5Q
Публикация
В некоторых форумах делают специальный BBCode тег [magnet], но, если его нет, можно попробовать воспользоваться тегом [url].
При вставке магнета в тег [url]
Пример:
https://ivan386.github.io/#magnet:?xl=10826029&dn=mediawiki-1.15.1.tar.gz&xt=urn:tree:tiger:7N5OAMRNGMSSEUE3ORHOKWN4WWIQ5X4EBOOTLJY Архивная копия от 15 января 2015 на Wayback Machine
Кликнув по такой ссылке, пользователь попадёт на страницу, которая перенаправит его на исходную magnet-ссылку. Сама magnet-ссылка при этом не отправляется в GET-запросе серверу, что делает её невидимой для провайдера и сервера. Но в социальных сетях при публикации такая ссылка может обрезаться из-за символов «#» и «:» до символа «?». В таком случае, удалив их, можно обойти это ограничение, но при этом данные magnet-ссылки уже будут передаваться в GET-запросе серверу.
Пример:
https://ivan386.github.io/magnet?xl=10826029&dn=mediawiki-1.15.1.tar.gz&xt=urn:tree:tiger:7N5OAMRNGMSSEUE3ORHOKWN4WWIQ5X4EBOOTLJY
Пример «универсальной» magnet-ссылки
Magnet-ссылка на файл mediawiki-1.15.1.tar.gz (для удобства восприятия ссылка разбита на строки):
magnet:?xt=urn:ed2k:354B15E68FB8F36D7CD88FF94116CDC1 &xl=10826029 &dn=mediawiki-1.15.1.tar.gz &xt=urn:tree:tiger:7N5OAMRNGMSSEUE3ORHOKWN4WWIQ5X4EBOOTLJY &xt=urn:sha1:XRX2PEFXOOEJFRVUCX6HMZMKS5TWG4K5 &xt=urn:aich:7ZDRR3ZQW4JMHUQZUMJGQN2VNGLV3CVN &xt=urn:btih:QHQXPYWMACKDWKP47RRVIV7VOURXFE5Q &tr=http%3A%2F%2Ftracker.example.org%2Fannounce.php%3Fuk%3D1111111111%26 &tr=wss%3A%2F%2Ftracker.webtorrent.io &as=http%3A%2F%2Fdownload.wikimedia.org%2Fmediawiki%2F1.15%2Fmediawiki-1.15.1.tar.gz &ws=http%3A%2F%2Fdownload.wikimedia.org%2Fmediawiki%2F1.15%2Fmediawiki-1.15.1.tar.gz &xs=http%3A%2F%2Fcache.example.org%2FXRX2PEFXOOEJFRVUCX6HMZMKS5TWG4K5 &xs=dchub://example.org Архивная копия от 28 декабря 2021 на Wayback Machine[12]
Данная ссылка может быть закодирована в виде QR-кода.
Также данная ссылка может быть сокращена с помощью некоторых служб сокращения ссылок, поддерживающих URI-схему magnet:
, например, TinyURL или mgnet.me (схема (протокол) http:
опущен):
tinyurl.com/lr85y2g
Это может быть полезно в ряде случаев, например, при публикации magnet-ссылки в
Данная ссылка содержит необходимую информацию для возможности скачивания по ней в пяти
. Это позволяет программам-клиентам, поддерживающим несколько P2P-сетей, осуществлять межсетевую загрузку и раздачу файлов.Большинство программ-клиентов не могут корректно обработать (разобрать) универсальную ссылку и/или не поддерживают некоторые протоколы и не умеют игнорировать неподдерживаемые параметры, либо чувствительны к взаимному расположению параметров в magnet-ссылках. В таких случаях ссылку необходимо предварительно подготовить: расположить параметры в ссылке в нужном порядке и/или удалить неподдерживаемые параметры.
Также в ней реализована схожая с торрент-трекером система для сетей Gnutella2 и Direct Connect:
- Клиент сети Gnutella2[13] может получить источники файла по ссылке на кеш источников «http://cache.example.org/FXRX2PEFXOOEJFRVUCX6HMZMKS5TWG4K5»[14];
- Клиент сети Direct Connect может соединиться с хабом «dchub://example.org», где может быстро найти источники файла. Но данная возможность не приветствуется пользователями и администраторами хабов, поскольку при клике на ссылку клиент автоматически соединяется с хабом не спросив пользователя.
Особенности поддержки в клиентах
Универсальные | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Клиент | dn | xl | xt | as | xs | ws | kt | mt | tr | Перехват | Вставка |
Shareaza | Да | Да | urn: sha1: urn: tree: tiger: urn: bitprint: urn: ed2k: urn: md5: urn: btih: |
http: ftp: |
http: ftp: |
? | Да | Нет | Да | Да | Да |
Mldonkey
|
? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? |
Direct Connect | |||||||||||
ApexDC++ 1.0.1 | Да | Да | urn: tree: tiger: urn: bitprint: |
dchub://[hubaddress]: [hubport] | dchub://[hubaddress]: [hubport] | ? | Нет | ? | Нет | Да | Нет |
FlylinkDC++ r500 release | Да | Да | urn: tree: tiger: urn: bitprint: urn: btih: |
dchub://[hubaddress]: [hubport] adc://[hubaddress]: [hubport] adcs://[hubaddress]: [hubport] |
dchub://[hubaddress]: [hubport] adc://[hubaddress]: [hubport] adcs://[hubaddress]: [hubport] |
? | Да | Нет | Нет | Да | Да |
EiskaltDC++ 2.2.6 | Да | Да | urn: tree: tiger: urn: bitprint: Только передача торрент клиенту: urn: btih: urn: btmh: |
dchub://[hubaddress]: [hubport] adc://[hubaddress]: [hubport] adcs://[hubaddress]: [hubport] |
dchub://[hubaddress]: [hubport] adc://[hubaddress]: [hubport] adcs://[hubaddress]: [hubport] |
? | Да | Нет | Нет | Да | Да |
GreyLink 0.39 | Да | Да | urn: tree: tiger: urn: bitprint: |
? | ? | ? | ? | ? | Нет | Да | Да |
BitTorrent
| |||||||||||
Azureus ) 3.0
|
? | ? | urn: btih: | ? | ? | ? | ? | ? | ? | ? | ? |
LeechCraft 0.5 | Да | Да | urn: btih: | ? | ? | ? | Да | ? | Да | Да | Да |
μTorrent 3.4 | Да | Да | urn: btih: | ? | ? | http: https: |
? | ? | http: udp: |
Да | Да |
BitComet | Да | Да | urn: btih: | Нет | Нет | ? | Нет | Нет | Да | Да | Да |
Transmission (as of v2.84)[15][16] | Да | Нет | urn: btih: | Нет | Нет | Да | Нет | Нет | Да | Да | Да |
Gnutella | |||||||||||
LimeWire | Да | Да | urn: sha1: | http: urn: guid: |
? | ? | Нет | Нет | Нет | Да | Да |
EDonkey2000 | |||||||||||
aMule 2.2.1 | Да | Да | urn: ed2k: | ? | ? | ? | ? | ? | ? | Возможен при помощи FireFox
|
Да |
WebTorrent ( BitTorrent over WebRTC )
| |||||||||||
instant.io | Да | ? | urn: btih: | http: https: |
? | http: https: |
? | ? | wss: ws: |
Да | Да |
βTorrent (btorrent.xyz) | Да | ? | urn: btih: | http: https: |
? | http: https: |
? | ? | wss: ws: |
Нет | Да |
Клиент | dn | xl | xt | as | xs | ws | kt | mt | tr | Перехват | Вставка |
«Да» — поддерживается; «Нет» — не поддерживается; «?» — поддержка неизвестна.
Большинство клиентов «перехватывают» magnet-ссылку только из браузера. Поэтому magnet-ссылку необходимо вставить в адресную строку браузера и перейти по ней. Для другого типа достаточно просто кликнуть мышью по ссылке. GreyLink и FlylinkDC++ позволяют вводить magnet-ссылки в клиенте («Файл → Ввести магнитную ссылку…», либо «Ctrl+M»). EiskaltDC++ позволяет скопировать magnet-ссылку в панель быстрого поиска и нажать Ввод, открыть ссылку из буфера обмена («Файл → Открыть магнет-ссылку», либо «Ctrl+I») или передать ссылку в качестве аргумента при запуске программы.
aMule 2.2
«Воспринимает» magnet-ссылку только если её вставить в строку eD2k Link внизу клиента. Поэтому ссылку необходимо предварительно «собрать», скопировать, вставить в это поле и нажать кнопку добавить.
См. также
- Интернет каталог файлов
- Список файлов (Direct Connect)
- Коллекция (Shareaza)
- Коллекция (eMule)
- Metalink
- MAGMA
- DHT
Примечания
- ↑ VKontakte Audio Download, Playlist, Artist -Title filter for Greasemonkey
- ↑ What is a Bitzi Bitprint? Архивная копия от 13 сентября 2009 на Wayback Machine (англ.)
- ↑ AICH Архивировано 6 ноября 2009 года. (англ.)
- ↑ magnet URI format Архивная копия от 22 октября 2008 на Wayback Machine (англ.)
- ↑ Битрейт * (Время прошедшее от начала загрузки)
- P2P-клиента Shareazaот ivan386.
- ↑ , то есть, некоторые символы должны быть заменены на %XX (%XX%XX), где XX — это код символа в кодировке UTF-8
- ↑ 1 2 3 4 5 6 Символ допустим, но при указании прямым текстом несёт специальное синтаксическое значение
- ↑ MediaWiki избегает кодирования пробела как %20, вместо этого он везде заменяется символом подчёркивания «_». Многие поисковики заменяют пробел на символ «+».
- ↑ например, когда ссылка будет отображаться пользователю простым текстом
- ↑ Конвертер магнита (magnet converter) . Дата обращения: 15 января 2015. Архивировано 15 января 2015 года.
- ↑ Если ссылку на хаб URI кодировать, то она не будет корректно распознаваться Direct Connect клиентом. Поэтому она вставляется в исходном виде и только в конце magnet-ссылки
- ↑ Shareaza например
- ↑ Ссылка находится в предпоследнем поле xs магнет-ссылки и URI кодирована, поэтому не похожа на исходный вариант.
- ↑ magnet-test.c in trunk/libtransmission — Transmission . Дата обращения: 16 февраля 2010. Архивировано 17 июля 2011 года.
- ↑ magnet.c in trunk/libtransmission — Transmission . Дата обращения: 16 февраля 2010. Архивировано 17 июля 2011 года.
Ссылки
- Формат магнет-ссылки для BitTorrent Архивная копия от 22 октября 2008 на Wayback Machine (англ.)
- MAGNET v0.1 Архивная копия от 16 апреля 2008 на Wayback Machine спецификация magnet-ссылок (англ.)
- Спецификация по магнет-ссылкам Архивная копия от 5 июня 2008 на Wayback Machine на сайте Depthstrike Entertainment (англ.)
- Сайт проекта MAGNET-URI Архивная копия от 15 февраля 2010 на Wayback Machine (англ.)
- Простая инструкция Архивная копия от 20 ноября 2009 на Wayback Machine, как скачивать файлы по Magnet-ссылкам популярным клиентом µTorrent (рус.)
- Поддержка Magnet-ссылок в FireFox (недоступная ссылка) (рус.)