piapia123
ja

マグネットリンクの検証

Web

処理はすべてブラウザ内で完結します。データは送信されません

入力
ファイルをここにドロップすると読み込めます
出力

マグネットリンクを貼って、そもそも使えるのか、使えないならどこが壊れているのかを確かめられます。使える場合はどの torrent を指しているのかも分かります。 ここでの判断基準は仕様に合っているかではなく、動くかどうかです。BEP 9 / BEP 52 は magnet URI に多くの規則を課していますが、問題なくダウンロードできるリンクの多くはそれを満たしていません。Web ページからコピーしたときに残った `&`、パーセントエンコードされていない表示名、トラッカーの後ろの余分な空白 —— これらを一律に無効と判定しても、明らかに動くリンクの横に赤いバツが出るだけで、誰の役にも立ちません。そこで、実際にクライアントで失敗する箇所だけを線引きし、それ以外は注記として報告します。 本当に失敗するのは次の場合です:`xt` が無い(何を取りに行くのか分からない)、ハッシュの桁数が違う(多くの場合コピー時に切れている)、ハッシュにその表記では使えない文字がある、そしてパラメータ名が大文字になっている場合 — パラメータ名は大文字小文字を区別するため `XT=` は完全に無視され、これは「リンクは正常に見えるのになぜ反応しないのか」と誤解されやすい箇所です。 判定に加えて、`btih` の二つの表記を両方表示します。同じ 20 バイトのハッシュは 40 桁の十六進でも 32 桁の Base32 でも書け、片方しか受け付けないサイトも少なくありません。 最後に正規化したリンクを出します。`&` の復元、ゼロ幅文字の除去、ハッシュ表記の統一、表示名の再エンコードを行います。入力そのままの行が隣に並び、そちらは一文字も変更されません。

機能

  • 有効 / 無効を判定し、どこで落ちたかを説明します
  • 十六進と Base32 の info hash を相互変換(それぞれコピーボタン付き)
  • v1(btih / SHA-1)、v2(btmh / SHA-256)、hybrid torrent に対応
  • dn、xl、tr、ws、as、xs、kt、so、x.pe と未知のパラメータを分解
  • Web ページからのコピーで混入する &、ゼロ幅文字、囲み引用符を検出
  • 正規化したリンクを提示しつつ、元の入力はそのまま保持
  • 完全にローカルで解析:通信も DHT 照会もシード確認も行いません

使い方

  1. マグネットリンクを貼り付けます
  2. 最初の行に結論(有効 / 無効)が出ます
  3. 識別子の欄で必要なハッシュ表記をコピーします
  4. きれいなリンクが欲しいときは最後の「正規化したリンク」をコピーします

よくある質問

この torrent にまだシードがいるか分かりますか?
いいえ、意図的にそうしていません。それには DHT への照会が必要で、当サイトはサーバーを一切介しません — すべてブラウザ内で完結します。逆に、今シードがいないことはリンク自体の不備を意味しません。合法なリンクなのにたまたま落とせないだけで、この二つはよく混同されます。
大文字の XT= はなぜ無効で、他の書き方は注意にとどまるのですか?
それが本当にリンクを機能させなくするからです。スキーム名やほとんどの値は大文字小文字を区別しませんが、magnet のパラメータ名は区別します。クライアントは小文字の `xt` を探すため、`XT` は無いのと同じです。症状は「見た目は完全に正常なのに貼っても何も起きない」というものです。パーセントエンコードされていない表示名は別の話で、ほとんどのクライアントが許容します。
「正規化したリンク」はデータを書き換えませんか?
値を触るのは二つの場合だけです。ひとつはコピー時のノイズ(`&`、ゼロ幅文字、囲み引用符)、もうひとつは表示名の再エンコードです。生の `&` や `#` はクエリ構造を壊すため、そのままにするとクライアント側で別のものを指してしまいます。トラッカーとその他のパラメータは書かれたままを保ち、判別できないパラメータも削除しません。元の入力は独立した行に一文字も変えずに残ります。
Base32 と十六進、クライアントはどちらを認識しますか?
どちらも認識します。BEP 9 は両方の表記を定めています。ただし十六進はほぼすべてのツールやインデックスサイトが出力する形式で通用しやすく、Base32 は歴史的な表記で、一部の古いクライアントや集約サイトは十六進しか受け付けません。手元が Base32 の場合は、上に示した等価な十六進を渡す方が安全です。

関連ツール