この記事の結論
Claude CodeのWebFetchで読めない原因は、ボット対策・JSで描くページ・ログイン壁・取得の仕様の4つが中心です。WebFetch→ブラウザ→ログイン済みブラウザ→取得して読む、の4段で上げる手順と当社のルールをまとめました。
目次6項目
【実践講座】Claude Code 2daysセミナー(第二の脳構築講座)の詳細を見る →
Claude CodeにURLを渡しても読めないときは、取得手段を1段ずつ上げます。まずWebFetchの指示を具体的にして取り直し、ボット対策の確認画面や本文が空ならブラウザで開き、ログインが要るならログイン済みのブラウザを使い、PDFなどは取得してから読みます。CAPTCHAは自動で突破せず、人に認証だけ頼みます。
WebFetchで読めない・403になる4つの原因
WebFetchとは、Claude CodeがURLを受け取ってページを取得し、Markdownに変換したうえで、知りたい内容だけを抜き出して返す組み込みのツールです。2026年10月時点の公式ドキュメントでは、多くの場合、ページそのものではなく「抜き出した結果」がClaudeに渡ると説明されています。読めない原因は、当社で多かった順に次の4つです。
原因1:ボット対策の確認画面で止められている(403 Forbidden・Just a moment)
ボット対策の確認画面とは、サイト側が自動のアクセスを人間か機械か見分けるために、本文の前に挟む確認ページのことです。WebFetchは返ってきたページを変換して読むだけなので、確認画面が返るとその中身がそのまま届き、Just a moment... や Attention Required、Verify you are human といった確認画面の文言だけが返ったり、403 Forbidden で断られたりします。公式によると、WebFetchは Claude-User で始まる名前(User-Agent)を名乗って取得します。
原因2:JavaScriptで中身を描くページで、本文が空になる
画面を開いたあとにJavaScriptで記事や表を描くタイプのサイトでは、当社の経験上、WebFetchで取れるのは描く前のHTMLで、本文がほとんど入っていません。エラーは出ないのに、要約が1〜2行しか返らない、メニューの文字しか拾えない、という形で現れます。
原因3:ログインが必要なページで、ログイン画面が返っている
会員制のサイトや社内ツールは、WebFetchから見ると「ログインしていない人」です。本文の代わりにログイン画面が返り、そのログイン画面を要約した結果が届きます。
原因4:WebFetchの仕様に当たっている
公式ドキュメントに書かれている仕様のうち、読めない原因になりやすいのは次の5つです。
- 抜き出しの指示文しだいで、書いてある内容でも結果に出ないことがある(公式は「設計上、情報が落ちる」と説明)
- 大きなページは、決まった文字数で切り詰めてから処理される
- 別のホストへのリダイレクトは自動で追わず、転送先のURLを返す。Claudeがもう一度取りに行く
localhostや、ドットの無いホスト名(社内の短い名前)は取得前に断られ、WebFetch cannot fetch localhost or other hostnames without a dotと出る- 取得の前に、ホスト名だけを送る安全確認が行われる。この確認が通らないときは
Unable to verify if domain ... is safe to fetch、確認が混み合っているときはThe safety check for domain ... is rate-limitedが出る
症状から原因と行き先を引く早見表
| 画面に出ること | 原因 | 行き先(次の段) |
|---|---|---|
403 Forbidden・Just a moment・Verify you are human | ボット対策の確認画面 | 2段目:ブラウザで開く |
| エラーは無いが要約が極端に短い・メニューの文字だけ | JavaScriptで描くページ | 2段目:ブラウザで開く |
| ログイン画面の説明が返る | 会員限定のページ | 3段目:ログイン済みのブラウザ |
| 「書かれていない」と返るが、ページにはあるはず | 抜き出しの指示文で落ちた | 1段目:指示を具体的にして取り直す |
| PDF・画像・巨大なページ | 加工や切り詰めで中身が届かない | 4段目:取得してから読む |
WebFetch cannot fetch localhost ... | 仕様で断られる | 4段目:手元のコマンドで取得 |
WebFetch以外のエラー(ログイン・使用量の上限・会話の長さなど)は、Claude Codeのエラー一覧と直し方の早見表で症状から引けます。
読めるまで手段を上げる4段の対処手順(WebFetch→ブラウザ→ログイン済みブラウザ→取得して読む)
1回失敗しただけで「読めませんでした」で止めないことが一番大事です。当社では、上の段から順に、読めるまで1段ずつ上げる手順に決めています。
- WebFetchを、指示を具体的にして取り直す:「料金表の金額をすべて」「手順の番号と本文を省略せず」のように、何を抜き出すかを書いて頼み直します。リダイレクト先のURLが返ってきたら、そのURLで取り直します。
- ブラウザで開いて本文を読む:確認画面や本文が空のときは、JavaScriptを動かせるブラウザで開きます。デスクトップアプリには内蔵のBrowserペインがあり、macOSなら
Cmd+Shift+Bで開けます。公式によると、Claudeはこの中で外部のページを読み、操作できます。初めてのサイトでは許可のカードが出るので、Allow onceかAlways allowを選びます。 - ログインが要るなら、ログイン済みのブラウザを使う:内蔵のBrowserペインは、普段のブラウザとは別のまっさらな環境で、保存済みのログインはありません。この中で自分がログインしてから読ませるか、Chrome拡張のClaude in Chromeを使います。Claude in Chromeは普段のブラウザのログイン状態を共有し、CLIなら
claude --chromeで起動、/chromeで接続状態を確かめます。Pro・Max・Team・Enterpriseのいずれかのプランが必要です。読むだけでなく入力までさせるときに日本語がセルに入らない場合は、Claude in Chromeでスプレッドシートに日本語が入力できない時の回避策を見てください。 - PDFや巨大なページは、取得してから読む:公式は、加工前のページが欲しいときはBashで
curlを使う方法を案内しています。PDFや画像はファイルとして保存してから読ませると、切り詰めや要約で中身が落ちません。手元の開発サーバー(localhost)もこの方法です。 - それでも開けない公開ページは、検索で裏を取る:完全にブロックされている公開ページは、WebSearchで同じ内容を載せた別の公式ページを探します。二次情報を使うときは出典を明記し、「元のページは直接読めていない」と書き添えます。
CAPTCHA(人間かどうかを確かめる画像やチェックの問題)が出たら、自動で通そうとせず、人が画面で認証だけ済ませてから続けます。公式も、Claude in Chromeはログイン画面やCAPTCHAに当たると止まって人に操作を頼み、内蔵ブラウザでもCAPTCHAの突破は人の入力なしには行わない、と説明しています。
裏方で実際に起きた「URLが読めない」と、4段の梯子を入れた経緯
ここからは、僕の会社(株式会社UrakaTA)での記録です。当社は調べ物や競合サイトの確認、資料の読み込みをClaude Codeに毎日頼んでいて、「URLを渡したのに読めない」は一番よく出る困りごとの1つでした。
2026年8月6日:1回の失敗で止まるのをやめ、4段の梯子にした
当時の問題は、WebFetchが1回失敗すると「読めませんでした」と返して作業が止まることでした。ボット対策で断られるサイト、JavaScriptで描くサイト、ログインが要るサイトでよく起きます。そこでこの日、WebFetch→内蔵ブラウザ→ログイン済みの実ブラウザ→取得して読む/検索で二次情報、の4段を社内の手順書にし、全プロジェクトで常に読み込むルールにも短い版を書きました。同時に、WebFetchの失敗を自動で見つけて「次の段に上げる」よう促すフックを入れています(中身は次の節)。
2026年8月21日:実ブラウザに上げる前に、人の明示OKを必須にした
普段使いのChromeをAIが動かすと、作業中の画面が急に操作されます。この日から、3段目のうち実ブラウザを使う前には必ず人の明示OKを取るルールにしました。ログインが要るページは、まず内蔵ブラウザでログイン画面まで開き、IDとパスワードは人がその画面に直接入力します。AIにパスワードを渡すこと、チャットに貼ることは禁止です。
同じ日に実測して分かったこともあります。広告の管理画面で試したところ、内蔵ブラウザのログイン状態は、次のセッションには引き継がれていませんでした。そのため、ログインが要る作業は「セッションの最初にログイン画面まで進めて、人に入力を頼む」を標準の流れにしています(公式によると、内蔵ブラウザにはアプリを閉じてもCookieを残す Keep cookies の設定もあります)。この設定の確かめ方と、毎回ログインになるときの運用は、Claude Codeのアプリ内ブラウザでログインが保持されない時の設定と運用に分けて書きました。
2026年10月2日:無人の定期実行で、ブラウザに上げて止まった
このメディアの記事づくりを定期タスクで回し始めた日の夕方、執筆を任せたAIがWebFetchで読めなかったページを内蔵ブラウザで開こうとし、サイトの許可を求めるカードで止まりました。人が見ていない時間帯なので、誰も答えません。原因は、対話用に作った「読めるまで上げる」手順が、無人の実行にもそのまま効いていたことでした。
この日から、無人の定期実行ではブラウザへ上げないルールに変えました。WebFetchとWebSearchだけで取り、それでも取れない事実は記事に書きません。この記事の公式情報も、その方式で確認しています。
WebFetchの失敗を見逃さないフックと、無人実行のルール(再発防止)
ルールだけだと、長い作業の途中で抜けることがあります。当社は「失敗に気づかせる」部分をフックに任せています。
WebFetchの結果を見張るフック
フックとは、ツールを使った直後など決まったタイミングで、指定したスクリプトを毎回動かす仕組みです。当社では、WebFetchが成功した直後(PostToolUse)と失敗した直後(PostToolUseFailure)の2つのイベントに、matcher を WebFetch にしたフックを付けています。スクリプトが「怪しい」と判定する条件は次の4つです。
- ツール自体がエラーで終わった
- HTTPの状態コードが400以上だった
- 返ってきた本文が150文字未満だった
just a moment・access denied・captcha・403 forbiddenなどの、ブロックや確認画面によく出る文言が含まれていた
当てはまったときは、hookSpecificOutput の additionalContext で「ここで止まらず次の段へ上げる」という1行の注意をClaudeに渡します。公式の仕様でも、PostToolUse はツールがもう動いた後なので止めることはできず、注意を足すことはできます。誤検知しても注意が1行増えるだけなので、条件はゆるめにしています。フックの設定方法と、ほかに入れているフックはClaude Code hooksの使い方と実録にまとめました。
無人実行ではフックを黙らせ、上げる段を止める
10月2日の停止を受けて、このフックは定期タスクから起動されたセッションでは何も出さないように直しました。会話の記録の冒頭を見て、定期タスクの印があれば黙ります。あわせて、定期タスクの指示文には「ブラウザ系のツールは使わない」「WebFetchが403や404なら、WebSearchで同じ内容の別の公式ページを探す」「それでも取れない事実は書かない」を書いています。
無人で止まる原因の多くは許可の確認画面です。止まり方の見分け方はClaude Codeが途中で止まる時の切り分けに、確認画面を減らす設定はClaude Codeで毎回許可を聞かれる原因と設定に書いています。
業務でURLを読ませるときの注意:ログイン・CAPTCHA・許可ルール
読めるようにする手段は、広げ方を間違えると別の事故につながります。業務で使うときは次の点に気をつけてください。
ログイン情報はAIに渡さない。 ログインは、人がブラウザの画面に直接入力します。Claude in Chromeは普段のブラウザのログイン状態を共有するので、公式の説明どおり、ログイン済みのサイトにはそのまま入れます。使うサイトと作業の範囲を先に決め、サイトごとの許可は拡張機能の設定で管理します。
CAPTCHAやボット対策を、機械で突破しようとしない。 サイト側が自動のアクセスを断っているということです。人が認証を済ませて読むか、公式の別ページや検索で裏を取ります。
許可ルールは、使うドメインに絞る。 手動(Manual)か acceptEdits のモードでは、WebFetchは許可済みのドメインと公式があらかじめ許可しているドキュメントのドメインを除き、取得の前に確認画面を出します(auto のモードでは人の代わりに判定用のモデルが見るため、この確認は出ません)。確認画面で「Yes, and don't ask again」を選ぶと、そのリポジトリの .claude/settings.local.json に WebFetch(domain:...) の許可ルールが保存されます。WebFetch(domain:*) は全ドメインを確認なしにするので、業務では避けたほうが安全です。
安全確認を切る設定は慎重に。 WebFetchは取得の前に、ホスト名だけを送って安全確認をしています。社内のネットワークでこの確認が通らない場合、設定の skipWebFetchPreflight で止められますが、公式は許可ルールと組み合わせて取得先を絞るよう勧めています。
URLを外部の変換サービスに渡す方法は、非公開の情報では使わない。 読めないページを第三者のサービス経由で読む方法もありますが、URLが外に出ます。当社は、公開ページで、かつほかの手段が尽きたときだけに限っています。
よくある質問
WebFetchで「ページに書かれていない」と返ってきたら本当に無いのですか?
そうとは限りません。公式ドキュメントによると、WebFetchは取得したページに指示文を当てて別のモデルで抜き出した結果を返すため、指示の書き方で抜け落ちることがあります。知りたい項目を具体的に書き直して取り直すか、加工前の本文を取得して確かめます。
ログインが必要なページをClaude Codeに読ませるにはどうしますか?
ログイン状態を使えるブラウザ経由にします。Chrome拡張のClaude in Chromeは普段のブラウザのログイン状態を共有し、ログイン画面やCAPTCHAでは止まって人に操作を頼みます。デスクトップアプリの内蔵ブラウザは別のまっさらな環境なので、自分でその中にログインしてから読ませます。
毎回WebFetchの許可を聞かれるのを減らせますか?
減らせます。確認画面が出るモード(Manual・acceptEdits)では、確認画面で「Yes, and don't ask again」を選ぶか、設定の許可ルールに WebFetch(domain:example.com) の形でドメインを書きます。ただ WebFetch(domain:*) のように全ドメインを許すと、意図しないサイトにも確認なしで取りに行くので、業務では使うドメインだけに絞るのが安全です。