WebFetch

13 сентября 2026 · ~12 мин чтения

инструмент веб ии-агенты http скрапинг

WebFetch

WebFetch — инструмент ИИ-агента (в том числе Claude), который делает HTTP-запрос к указанному URL, получает содержимое страницы и передаёт его модели как текст для анализа — без запуска браузера, без выполнения JavaScript, без рендеринга.

История

WebFetch как отдельная сущность — не стандарт с датой рождения и автором, а название конкретного инструмента (tool) в наборе возможностей LLM-агентов, появившееся вместе с волной «agentic AI» 2024–2025 годов, когда языковые модели стали получать доступ к внешним действиям через протокол вызова инструментов (tool use / function calling).

Механизм, который стоит за WebFetch, — HTTP GET-запрос — гораздо старше: он часть протокола HTTP, описанного Тимом Бернерсом-Ли в 1991 году и формализованного в RFC 2616 (1999), затем в RFC 7230–7235 (2014) и текущем RFC 9110 (2022). WebFetch — это тонкая надстройка над этим протоколом: агент вызывает инструмент, инструмент делает GET-запрос, получает HTML или другой контент, чистит его (убирает теги, скрипты, иногда конвертирует в markdown) и отдаёт модели укороченный текст.

Вехи, которые привели к появлению таких инструментов:
- 2023 — OpenAI и Anthropic начинают массово внедрять «tool use»/«function calling» в API моделей — модель может не просто отвечать текстом, а вызывать внешние функции.
- 2024 — у Anthropic в Claude появляется набор встроенных инструментов (WebSearch, WebFetch, Bash, Read/Write файлов и т.д.), которые доступны агенту в Claude Code и в API-режиме с tool use.
- 2024–2025 — конкурирующие продукты (OpenAI Operator, Google Gemini с браузерными агентами, open-source фреймворки типа LangChain/AutoGPT) делают то же самое под другими именами: fetch_url, browse_page, read_url — семантика везде одинаковая.

Сейчас WebFetch как конкретный инструмент принадлежит Anthropic и встроен в Claude Code и Claude API (папка «инструменты», доступные модели по умолчанию), но сам паттерн «дай модели простой HTTP-fetch без браузера» — общий для всей индустрии агентов.

Что это такое

WebFetch решает узкую, но частую задачу: агенту дали URL (или он сам его нашёл через поиск), и ему нужно узнать, что там написано. Самый дешёвый и быстрый способ — не открывать полноценный браузер (это тяжело, медленно, требует памяти и процессора), а просто скачать HTML-код страницы одним HTTP-запросом, как это делает команда curl, и отдать текст модели.

Технически WebFetch — это функция с сигнатурой «на входе URL (и иногда — вопрос к содержимому), на выходе — текст». Внутри происходит: DNS-резолвинг домена → установка TLS-соединения (шифрование, см. статью про HTTPS в архиве) → отправка GET-запроса с заголовками (User-Agent, Accept и т.п.) → получение ответа → парсинг HTML в читаемый текст (часто через конвертацию в markdown, обрезание навигации, рекламы, скриптов) → передача этого текста в контекст модели, иногда с суммаризацией, если страница большая.

WebFetch vs headless-браузер (Playwright/Puppeteer/Chromium в фоновом режиме). Это ключевое различие, которое стоит прочно усвоить:

WebFetch Headless-браузер
Выполняет JavaScript Нет Да
Скорость Быстро (доли секунды — секунды) Медленно (секунды — десятки секунд)
Ресурсы Минимальные Много памяти и CPU (запускается целый браузерный движок)
Видит контент, отрендеренный JS (React/Vue SPA) Нет — получает «пустой» HTML-каркас Да
Обходит антибот-защиту Почти никогда Иногда, с доп. усилиями (см. ниже)
Пример инструмента WebFetch, curl, requests (Python) Playwright, Puppeteer, Selenium

WebFetch vs WebSearch. Это не одно и то же и часто путается. WebSearch — это запрос в поисковую систему («найди мне страницы про X»), результат — список ссылок и сниппетов. WebFetch — это уже открытие конкретной ссылки и чтение её содержимого целиком. Обычно они работают в связке: сначала WebSearch находит адрес, потом WebFetch читает, что там на самом деле написано.

Аналогии из жизни

Аналогия 1 — почтовый ящик против личного визита. WebFetch — это как попросить кого-то забрать письмо из почтового ящика и прочитать его вам вслух: быстро, но вы получаете только то, что лежит в конверте на момент выемки. Headless-браузер — это как самому прийти в офис, дождаться, пока откроют все нужные двери, включат свет, разложат документы по папкам, и только потом читать. Где ломается: если содержимое письма само по себе — это указание «зайди в соседнюю комнату и посмотри там» (то есть страница подгружает контент через JavaScript уже в браузере пользователя), то вы, прочитав письмо, ничего важного не увидите — контента там физически не было в момент выемки.

Аналогия 2 — читать меню в окне ресторана против зайти внутрь. Проходя мимо, вы можете прочитать меню, приклеенное к стеклу — это быстро, бесплатно, не нужно ничего заказывать. Но если меню лежит только на столах внутри (а на стекле — просто вывеска), снаружи вы ничего не узнаете. Так и WebFetch: если весь полезный контент «нарисован» на стороне сервера в исходном HTML — прекрасно видно; если контент подгружается уже в браузере посетителя через API-запросы — WebFetch увидит пустую «вывеску». Где ломается: аналогия не передаёт того, что современные сайты часто специально усложняют «стекло» — добавляют проверки, что запрос идёт из настоящего браузера, а не от скрипта (см. антибот ниже).

Аналогия 3 — фотография вместо видео. WebFetch делает моментальный снимок страницы в момент запроса — как фотоаппарат щёлкает один кадр. Если страница содержит анимацию, бесконечную подгрузку контента при скролле, всплывающие окна через 3 секунды — снимок этого не покажет, для этого нужна «видеокамера», то есть браузер, который может подождать и провзаимодействовать со страницей. Где ломается: фотография технически честный слепок того, что было перед объективом; а WebFetch иногда получает вообще не то, что видит человек — сайт может специально отдавать роботам («по User-Agent» или IP) совсем другую, урезанную или ложную версию страницы (это называется cloaking).

Как это работает

Пошагово, на примере того, как агент вроде Claude обрабатывает вызов WebFetch:

  1. Модель решает, что нужен внешний контент. Например, в диалоге всплывает: «посмотри, что написано на странице X». Модель формирует вызов инструмента: WebFetch(url="https://example.com/page", prompt="о чём эта статья").
  2. Инструмент делает HTTP-запрос. Устанавливается TCP-соединение к серверу, поверх него — TLS-рукопожатие (если https://), затем отправляется запрос вида:
    GET /page HTTP/1.1 Host: example.com User-Agent: <какой-то идентификатор клиента> Accept: text/html
  3. Сервер отвечает. Код состояния (200 — всё хорошо, 403 — доступ запрещён, 404 — не найдено, 429 — слишком много запросов, см. статью про rate limiting в архиве) плюс тело ответа — обычно HTML-документ.
  4. Инструмент чистит и упрощает HTML. Убирает теги вёрстки, скрипты, стили, рекламные блоки, часто конвертирует в markdown или простой текст — модели не нужна вёрстка, ей нужен смысл.
  5. Текст попадает в контекст модели. Если страница огромная, инструмент может обрезать или суммировать её, чтобы уложиться в лимит контекста.
  6. Модель отвечает на исходный вопрос, опираясь уже на полученный текст, как будто прочитала документ.

Если на любом из шагов 2–3 что-то идёт не так — сайт требует JavaScript-проверку, показывает CAPTCHA, блокирует по User-Agent или IP, отдаёт WAF-страницу («доступ ограничен») — агент получает вместо полезного текста мусор или ошибку. Это ровно та ситуация, с которой вчера столкнулась исследовательская сессия: попытка WebFetch-ем пройтись по десяткам мировых порталов недвижимости (Zillow, Rightmove, китайские Beike/Anjuke и другие) для конкурентного анализа во многих случаях упиралась в 403 и защиту от ботов, и агенту приходилось переключаться на WebSearch (искать через поисковик закэшированные фрагменты) вместо прямого чтения.

WebFetch — это не «видит то же самое, что человек в браузере»

Если сайт построен как SPA (single-page application) на React/Vue/Angular с загрузкой данных через API уже после открытия страницы, WebFetch в лучшем случае получит пустой HTML-каркас с надписью вроде <div id="root"></div> и подключённым JS-файлом — а весь видимый человеку контент так и останется недостижимым. Для таких случаев нужен headless-браузер (Playwright уже разбирали в архиве).

Где встречается в обычной жизни

Где встречается в IT и бизнесе

Кто пользуется

Альтернативы и конкуренты

Когда НЕ стоит использовать

Связанные понятия

Литература и источники

Где встретилось у меня

Вчера, 12 сентября, в рамках исследования порталов недвижимости для проекта novostroy.ru агент (и его саб-агенты) массово использовал WebFetch, чтобы прочитать главные страницы около тридцати мировых конкурентов — от Zillow и Rightmove до китайских и ближневосточных площадок. Значительная часть попыток упиралась в защиту от ботов (403-е ошибки, CAPTCHA), что потребовало переключаться на WebSearch как обходной путь для получения информации о фичах конкурентов.

Краткое резюме