セキュリティとプライバシー · Clash 技術ブログ

Clash のサブスクリプションリンクをインポートする方法:形式の識別、更新失敗、漏えいへの対処

Profiles にサブスクリプション名があっても、設定が読み込まれたとは限りません。形式と HTTP エラーを確認し、更新して現在の設定に選びます。Proxies と Connections でノードとリクエストを確認してください。漏えいしたリンクは再発行し、端末内のコピーも置き換えます。

  • サブスクリプションのインポート
  • 設定の更新
  • リンクの安全管理
目次

サブスクリプションのアドレスを入手したり保存したりした後も、クライアントで設定をダウンロードして有効にしなければ、その中のノードやルールは使えません。今の設定でまだ接続できる場合は、使えるコピーを残してから、新しいアドレスで取得した内容と読み込み結果を確認します。更新エラーを調べる際に、元の設定まで削除しないようにしましょう。

Profiles でサブスクリプションを保存、更新、有効化する

リモートから完全にインポートする一連の手順

  1. サービス提供元が Clash または Mihomo 用と明記したリンクをコピーする

    先頭の https から最後のパラメーターまで完全にコピーし、余分な空白を含めない。

  2. Profiles または設定画面でリモートサブスクリプションを追加する

    入手元を自分で識別できる名称を付け、名称に token を含めない。

  3. すぐに更新をクリックする

    ステータスコード、解析メッセージ、新しい更新時刻を確認する。

  4. この設定を現在の設定として選択する

    Proxies 画面でポリシーグループとノードが表示されたことを確認する。

クライアントに直接リンク、設定リンク、URL Scheme など複数の入口がある場合は、まず通常のリモートリンクを使います。ある方法で client error(Connect) が出る場合は、クライアントのドキュメントに記載された別のインポート方法へ切り替えられます。ただし、「無効な証明書を許可」を恒久的に有効にしないでください。

返された内容でサブスクリプション形式を判断する

Clash が直接インポートできるのは任意の Web アドレスではなく、サービス提供元が用意した Clash または Mihomo 互換のサブスクリプションです。クライアントがリンクへアクセスすると、サーバーから proxies、proxy-groups、rules を含む YAML が返る場合もあれば、エンコード済みのテキスト、ログインページ、エラーページが返る場合もあります。解析の可否は返された内容によって決まります。

HTTP ステータスと応答内容の読み方

更新結果の読み方

表示された結果意味と対処方法
401 / 403token が無効、アカウント状態に異常がある、またはサーバーがアクセスを拒否している
404アドレスのパスが変わったか、リンクのコピーが不完全である
200 だが、内容が <html で始まる設定ではなく、ログインページ、検証ページ、エラーの Web ページが返っている
200 で、proxies / proxy-groups / rules が含まれるClash/Mihomo の YAML と考えられ、続けて解析できる
download failed / timeoutクライアントが制限時間内にレスポンスを取得できていない。ネットワークとサーバーを確認する

サブスクリプションサービスによっては、User-Agent に応じて異なる形式を返します。ブラウザーで直接開いて一連の内容が表示されても、Clash からのリクエストで同じ内容が返るとは限りません。逆に、ブラウザーで Web ページが表示されても、リンクが無効とは限りません。設定を何度も削除するより、クライアントのバージョン、更新時刻、ステータスコードを提供元へ伝えるほうが有効です。

parse error:形式とコアの互換性の問題

parse、yaml: unmarshal、field not found などのエラーが出る場合、通常はネットワークリクエストが完了し、クライアントが内容の読み取りで止まっています。よくある原因は、サーバーが別のクライアント向け形式を返した、YAML のインデントが壊れた、設定に現在のカーネルが対応しないフィールドがある、のいずれかです。

この場合、ノードを切り替えても通常は解決しません。最初の具体的なエラー行と行番号を記録し、クライアントの Mihomo バージョンを確認して、互換形式を生成するようサブスクリプション提供元へ依頼してください。リモート設定の数十か所を手動修正しても、次回更新ですべて上書きされるため避けてください。

unexpected character '<'

レスポンスが HTML ページである可能性が高い。ログイン、検証、サーバーエラーを確認する。

mapping values are not allowed

YAML のインデントまたは記号が壊れている。提供元へ再生成を依頼する。

unsupported proxy type / field not found

カーネルのバージョンと設定フィールドが一致していない。対応中のバージョンへ更新するか、互換性のあるサブスクリプションへ切り替える。

更新成功でも Proxies が空の場合

リモート更新が成功しても Proxies にノードがない場合は、返された内容がルールだけ、全ノードが除外された、または古い構成が選択中の可能性があります。

Profiles の選択印を確認し、構成に proxies または proxy-providers があり、proxy-groups が参照しているか調べます。上書きスクリプトが全ノードを除外していないかも確認します。

ノードが存在していても、すべて未使用のグループに入っていると、メインポリシーは DIRECT のままになります。実際にノードを含むポリシーグループを選んでノードを固定し、Connections でリクエストを一件確認してください。設定が正しく接続されているかは、遅延テストのボタンだけを見るより、この方法のほうが明確に分かります。

古い構成でまだ接続できる理由

Clash は通常、最後に正常取得したローカルコピーを引き続き使用します。そのため、サブスクリプションの期限切れやサーバー側エラーが発生しても、既存ノードが一時的に使える場合があります。更新状態は、ページが開くかどうかではなく、「最終更新日時」と今回のエラーで判断してください。

古い設定が動作しているなら、すぐに削除しないでください。まずエラー情報を保存し、アカウントとリンクの状態を確認します。新しいアドレスの更新に成功してから古い項目を削除してください。唯一動作するコピーを削除すると、調査できる問題が即座の通信断に変わってしまいます。

古いノードは動作するが、新しい更新は 401
サーバーが現在の認証情報を拒否しています。サービスの管理画面にサインインし、サブスクリプションアドレスを確認してください。
自宅回線では更新がタイムアウトし、モバイルホットスポットでは成功する
原因は YAML 形式ではなく、現在のネットワーク経路にある可能性が高いと考えられます。
複数のクライアントが同時に失敗する
端末ごとに再インストールする前に、サービスのお知らせとサブスクリプションの状態を確認してください。

取り込み後にノードと Connections を確認する

新しい Profile を選び、Proxies でノードを固定して Rule モードにします。Windows/macOS のデスクトップクライアントはシステムプロキシを有効にします。Android ではクライアントの接続操作で VPN を開始し、許可を与えます。普段使うページを開き、Connections でドメイン、ルール、接続経路を確認してください。遅延テストは実際のリクエストの代わりにはなりません。

Clash に入ったリクエストが timeout になるなら別のノードを試します。記録がなければデスクトップのシステムプロキシ、または Android の VPN が有効か確認し、DIRECT と出るならルールを調べます。ページが開き、記録が選択と一致して初めて、サブスクリプションの取得、解析、有効化、転送ができたと確認できます。

サブスクリプションアドレスの token は通常、読み取り用の認証情報として機能します。調査に必要なのはエラーのステータス、応答の種類、時刻だけで、完全な URL を公開する必要はありません。チャットのスクリーンショット、画面録画、ログを共有する前に、パスやパラメーター内の認証情報を隠します。どこが機密情報か分からなければ、アドレス全体を隠してください。

Profile の表示名だけ変えても古い認証情報は無効になりません。サブスクリプション全体が公開された場合は、サービスの管理画面でアドレスをリセットし、以下の手順で端末の古いリンクを置き換えます。

  1. 新しいサブスクリプションアドレスを生成する

    サービス提供元のリセット機能または token 更新機能を使用します。

  2. 管理下の端末を更新する

    各端末で古い URL を置き換え、新しい更新日時とノード一覧を確認します。

  3. 古いアドレスが無効になったことを確認する

    古いリンクをチャットで送り続けず、サービスの管理画面に表示される状態だけを確認してください。

  4. 異常な使用量を確認する

    見覚えのない端末やトラフィックの変化が見つかった場合は、サービス提供元のアカウントセキュリティ手順に従ってください。