リンク切れ(リンク腐敗)をチェック

URLを1行に1つ、最大25件まで貼り付けてください。それぞれにリクエストを送り、リンク切れ、転送、正常のどれかを報告します。

リンク腐敗の原因

リンクが死ぬ理由は、ありふれたものです。ホスティング料金の支払いが止まってサイトが閉鎖される、会社が買収されてブログが畳まれる、CMSの移行ですべてのURLがリダイレクトなしで変わる、記事が有料化されたり、いつの間にか非公開になったりする、ドメインが失効して転売業者に買われる。規模は、直感よりも大きいものです。リンク腐敗の調査では、10年前のリンクの4分の1ほど、あるいはそれ以上が、もうどこにも通じていないという結果が繰り返し出ています。数年以上たったブックマークのコレクションには、必ずリンク切れが含まれています。問題は、その数だけです。

チェッカーのしくみ

リクエストは、ブラウザではなく、Marqlyのサーバーから送られます。これは設計上の好みではなく、正確な結果を得る唯一の方法です。ブラウザはCORSを強制するので、このページのスクリプトは、ほかのドメインのレスポンスのステータスを読み取れません。ブラウザの中だけで動くチェッカーは、正常なリンクの大半を失敗として報告してしまいます。そこで、貼り付けたURLは、Cloudflareのインフラ上で動くMarqly自身のサーバーに送られ、サーバーが各URLを取得してステータスを返します。URLごとに、サーバーは次のことを行います。

  • まずHEADリクエストを送ります。ヘッダーだけで、ページの本文は取得しません。チェッカーであることを示し、このページへのリンクを含む、公開のユーザーエージェント(MarqlyLinkChecker/1.0)を名乗ります。
  • サーバーがHEADを拒否した場合(ステータス405または501)は、GETでやり直します。HEADを実装していないサイトもあるためです。
  • リダイレクトを1ホップずつたどります。最大8回までで、「転送先」の列には、最初の転送先ではなく最終的な転送先が表示されます。
  • 応答しないリンクは、約6秒であきらめ、バッチ全体を止めずに、接続不能として報告します。
  • バッチ内のすべてのURLを並列で処理します。そのため、25件のリンクでも、たいていは数秒で結果が返ります。

受け付けるのは、ふつうの公開Webアドレスだけです。標準ポートのhttpまたはhttps、認証情報を含まないもので、プライベートや内部のホストは決して受け付けません。これは、無料のツールが、触れるべきでないマシンに向けられるのを防ぐためです。そのため、社内ネットワークのリンクはここでは確認できません。意図した仕様です。

使い方

  1. URLを集めます。文書から、あるいはブックマークを書き出して、ブックマークファイルビューア(英語版)でリンクを検索できるリストとして取り出します。
  2. 上の入力欄に、1行に1つ、1回につき最大25件まで貼り付けます。
  3. リンクをチェックを押して、結果の表を待ちます。
  4. 各行を読みます。判定(正常、消失、転送、「人の目で確認」)、サーバーの応答が成功だったかを示す✓/✗、転送された場合の最終URLが表示されます。
  5. 対応します。404や410は削除するか置き換え、あいまいなものはご自身のブラウザで確認し、転送先がどこに着くかをチェックします。サイトのトップページに着くリンクは、何も「失敗」していなくても、記事そのものを失っていることがよくあります。

結果の読み方

  • 200番台:生きています。✓は、サーバーの応答が成功だったことを表します。
  • リダイレクト:ページが移動しました。「転送先」の列に、着いた先が表示されます。http→httpsやwwwの変更なら、たいてい問題ありませんが、トップページへの転送は、記事そのものがなくなったことを意味することが多いです。
  • 404 / 410:確実にリンク切れです。サーバーは生きていて、そのページはないと言っています。
  • 403、429、999:あいまいです。自動チェッカーは拒否しても、人には問題なく表示するサイトが多くあります。何かを削除する前に、ブラウザで確認してください。
  • 接続不能:HTTPの応答がまったくありません。ドメインの消滅、サーバーの停止、タイムアウトのどれかです。ほぼ間違いなく、本当になくなっています。

HTTPステータスの早見表

結果の表の判定は、次の対応表にもとづきます。ブラウザの開発者ツールでも確認できるのと同じ論理です。

ステータス意味ここでの判定対処
200〜299成功。サーバーが内容を返しました。正常 ✓何もしなくてかまいません。
301 / 302 / 307 / 308リダイレクト。ページは別のアドレスから応答しています。転送最終URLがトップページではなく記事であることを確認し、リンクを転送先に更新します。
401ログインが必要です。人の目で確認アクセス権があればおそらく問題ありません。リンク腐敗ではありません。
403禁止。このリクエストへのアクセスが拒否されました。人の目で確認チェッカーを狙ったボット対策であることが多いので、ブラウザで開いてみてください。
404見つかりません。サーバーは生きていますが、このページはありません。消失削除するか、代わりのリンクを見つけます。
410消滅。ページは意図的に削除されました。消失削除します。
429リクエストが多すぎます。相手先に制限されました。再実行そのサイトを少し休ませて、このバッチを後でもう一度チェックします。
500 / 502 / 503 / 504サーバー側のエラー。相手側で何かが壊れています。再実行停止であって、死ではありません。別の日にもう一度確認します。
999LinkedInが自動クライアントに返す「問い合わせをやめて」のステータスです。人の目で確認本当にリンク切れであることはほとんどありません。ブラウザで開いてみてください。
接続不能HTTPの応答がまったくありません。DNSが解決しない、接続が拒否された、約6秒のタイムアウトに達した、のどれかです。消失(要確認)もう一度実行します。2回続けて失敗するドメインは、消滅しています。

リンクを監査するタイミング

  • 古いコンテンツを再公開したり、使い回したりする前:5年前の記事を、出典がリンク切れのままニュースレターで再送すると、その内容のニュース以上に見栄えが悪くなります。
  • CMSの移行のあと:自分のものでも他人のものでも同じです。ブックマークやメモに残っているURLが、すべてのURLを変えたサイトを指しているかもしれません。
  • ブックマークのフォルダを整理するとき:確認済みのリンク切れを先に削除すると、ファイルがいちばん早く小さくなり、同期されるごみも減ります。
  • 調査や読書リストの参考文献を確かめるとき:引用が404だと、その上に何かを積み上げる前にわかっているほうがよいでしょう。
  • ライブラリ全体を移行する前:ブラウザのブックマーク移行ガイド(英語版)をご覧ください。重複ブックマーク検出ツールでの重複の掃除と、このツールでのリンク切れの確認は、手軽に効く2つの方法です。

プライバシー:送られるもの、保存されるもの

送られるのは、貼り付けたURLです。ブラウザからMarqlyのサーバーへ、そこから各対象サイトへ、チェッカーのユーザーエージェントとともに送られます。あなたのマシンやセッションのほかの情報は、いっしょに送られません。保存されるのは、あなたを特定できるものは何もありません。アカウントも、履歴も、保存されるバッチもなく、レスポンスにはno-storeが指定されます。保持されるカウンターは、スクリプトによる連打を止めるためのエッジのレート制限だけです。実際上の結論が2つあります。確認したサイトには、Cloudflareのインフラからのリクエストとして記録されるため、アクセス自体が機密になるURLは貼り付けないでください。また、プライベートや内部のアドレスは、リクエストが送られる前に拒否されるので、ここでは確認できません。

正直な限界

このツールが確認できるのは、1回に最大25件のURLです。それ以上貼り付けると、余った分はスキップされ、件数が表示されます。黙って無視されることはありません。この上限があるのは、URLごとに当社のサーバーから実際のリクエストが送られるためです。無制限にすると、まさにスクリプトによる悪用を招き、ほかの全員にとってツールが遅くなってしまいます。アカウントも1日の上限もないので、大きなリストは、バッチを増やすだけで対応できます。報告するのは、この瞬間にサーバーが返した内容で、中身の真実とは限りません。ページが200を返していても、本文がドメインの駐車広告に置き換えられていることがあります(ステータスコードだけでは、「ソフト404」は検出できません)。ブックマークの書き出し全体を監査するときは、まずブックマークファイルビューア(英語版)でURLを取り出し、バッチに分けて通してください。

  • 遅いサイトは死んで見えます。約6秒のタイムアウトのため、動きは遅いが生きているページが「接続不能」と返ることがあります。信じる前に、もう一度実行してください。
  • ボット対策の壁も死んで見えます。403や999は、サイトがロボットを拒否しているのであって、ページを拒否しているわけではありません。手作業で確認してください。
  • JavaScriptで描画されるページは、描画の前に応答します。チェッカーが見るのはHTTPの応答で、ブラウザが最終的に描画する内容ではありません。
  • 生きているリンクも、明日には死にます。ステータスはこの瞬間のスナップショットです。保存したライブラリは、数か月ごとに監査し直す価値があります。
  • 強く押しすぎると、一時停止されます。バッチを立て続けに送ると、IPごとのレート制限が「リクエストが多すぎます」と応答します。1分待ってから続けてください。

腐っていくブックマークへの、より根本的な対策

リンクチェッカーは、ページが死んだことは教えてくれますが、そのページに何が書かれていたかは教えてくれません。そこで、URLだけでなくそれ以上を保存するという考え方が出てきます。MarqlyはAI要約を保存に添えるので、ライブラリの中のリンク切れも、内容の要点を保っています。そしてセマンティック検索が、その意味から見つけてくれます。

従来のブックマークツールは、生のURLとタイトルしか保存しません(比較は、MarqlyとRaindropの比較をご覧ください)。Marqlyのブラウザ拡張機能(英語版)を使うと、保存した瞬間にページが要約され、AIでタグ付けされ、インデックスされるので、リンク切れがあなたの知識を消し去ることはありません。どちらの場合でも、データはあなたのものです。データを書き出せますか(英語版)をご覧ください。

関連するツールとガイド

よくある質問

1回に25件までなのはなぜですか?

URLを1件確認するたびに、当社のサーバーから実際のリクエストが送られます。無制限にすると悪用を招き、全員にとってツールが遅くなってしまいます。25件なら結果が速く返り、たいていは数秒で終わります。それより大きなリストは、分けて実行してください。25件を超えた分は、黙って捨てられるのではなく、スキップされたことが報告されます。

「接続不能」とはどういう意味ですか?

HTTPの応答がまったく得られなかったということです。ドメインが解決しない、サーバーが停止している、タイムアウトした、接続を拒否された、のどれかです。404なら、少なくともサーバーは生きていることがわかるので、接続不能はもっとも深い意味での「死んでいる」状態です。まれに、サイトが当社のチェッカーを完全にブロックすることもあり、その場合も接続不能と表示されます。意外な結果は、ご自身のブラウザで確認してください。

403や999のステータスは、リンク切れという意味ですか?

必ずしもそうではありません。自動チェッカーには403(あるいはLinkedInで有名な999)を返しながら、ブラウザで見る人にはページを問題なく表示するサイトがあります。リンク切れではなく、ボット対策です。404と410は確実にリンク切れ、接続不能はほぼ間違いなくリンク切れ、403のような拒否は「手で確認」と考えてください。

確認がブラウザではなく、サーバー側で行われるのはなぜですか?

ブラウザはCORSを強制するため、このページのJavaScriptは、ほかのドメインのレスポンスのステータスを読み取れません。ブラウザの中だけで動くチェッカーでは、ほとんどが誤った失敗として報告されてしまいます。当社のサーバーがリクエストを送り、各URLの本当のステータスを返します。送信されるのは、あなたが入力したURLだけで、それ以外は何も送られません。

チェッカーは、ページ全体をダウンロードしますか?

いいえ。各URLには、まずHEADリクエストを送ります。ヘッダーだけで、ページの本文は取得しません。サーバーがHEADを拒否した場合(ステータス405または501)にだけ、GETでやり直します。リダイレクトは最大8回まで1ホップずつたどり、最終的な転送先が結果に表示されます。約6秒以内に応答がないものは、接続不能として報告します。

25件を超えるURLを確認したり、ツールをもっと頻繁に使ったりできますか?

はい。何回かに分ければ可能です。アカウントも1日の上限もありません。制限は、1回25件まで(26行目以降はスキップされて件数が表示され、黙って捨てられることはありません)と、スクリプトによる悪用でツールが全員にとって遅くならないようにするIPごとのレート制限だけです。「リクエストが多すぎます」と表示されたら、1分待ってから次の分を実行してください。

← 無料ツール

ホーム · Marqly