Опубликовано
Zero Dollar Stack: как AI-агент ищет информацию в 2026 году (часть 2)
Автор: Гусев Николай [портфолио]
Zero Dollar Stack: как AI-агент ищет информацию в 2026 году
Начало
ты говоришь "найди" и ждешь ответа. Агент делает это по-другому.
у него нет привычного Google. Нет привычного поиска. Он - слепой без инструментов. И главная инженерная задача - не дать ему остаться таким.
В первой части мы поставили набор для чтения страниц: trafilatura, pymupdf, tesseract. Это была база. Но база - это половина дела. Вторая половина - где искать сами ссылки.
И тут начинается интересное.
Проблема: поисковики не любят агентов
curl - быстрый, легкий, бесплатный. Пока сайт не вернул 403. Для агента, который читает 50 страниц в день, это не редкость, а рабочий день.
варианты обхода:
-
Подменять User-Agent - работает день
-
Добавлять заголовки - работает два
-
Использовать прокси - стоит денег
-
Использовать браузер - долго и дорого
Классическое решение: плати за API. Google Custom Search - $5 за 1000 запросов. Serper - $50 за 5000. Для агента, который делает 200 запросов в день - $30-150/мес.
Наш ответ: zero dollar stack - потому что мы не хотим платить.
Уровень 1: Whoogle (свой DuckDuckGo)
DuckDuckGo - хороший поисковик. Но у него есть API с лимитом.
Решение: Whoogle. Это открытый прокси, который эмулирует запросы браузера к DuckDuckGo от своего имени. Ставишь на свой сервер - и у тебя поиск без лимитов.
Установка: один раз
git clone https://github.com/benbusby/whoogle-search.git /opt/whoogle
cd /opt/whoogle && python3 -m venv venv && venv/bin/pip install -r requirements.txt
Запуск как сервис
systemctl start whoogle
Поиск из агента
curl "http://127.0.0.1:5000/search?q=запрос"
Стоит: 0. Ест: 250MB RAM, 500MB диска. Лимит: нет (DDG живет на рекламе, ему все равно).
Уровень 2: SearXNG (метапоиск)
DuckDuckGo - это хорошо, но он один. А информацию про русскоязычный субъект нужно искать в русском сегменте.
SearXNG - метапоисковик. Он спрашивает у Google, Bing, DuckDuckGo, Yandex - и собирает ответы вместе. Умно.
Мы поставили SearXNG на отдельный VPS в русском сегменте. Но есть нюанс: открывать поисковик наружу - небезопасно. Любой сможет им пользоваться, и ты будешь платить за его запросы.
Решение: SSH-туннель. SearXNG слушает только localhost. Снаружи - только тоннель.
На агентском сервере - автоперезапуск
systemd: searxng-tunnel.service
Поиск
curl "http://127.0.0.1:18080/search?q=запрос"
Стоит: 0 (VPS уже есть). Безопасность: полная (доступ только через туннель с ключами).
Уровень 3: Jina Reader (чужой браузер)
Иногда сайт блокирует агента по IP. Решение: пусть кто-то другой зайдет на сайт и прочитает за тебя.
Jina Reader - это r.jina.ai/URL. Ты даешь URL, их браузер рендерит страницу со своего IP, и возвращает чистый markdown.
import urllib.request
text = urllib.request.urlopen("https://r.jina.ai/https://target.site/page").read().decode()
Получил чистый markdown, ни одного запроса от своего IP
Бесплатно: ~20 req/min. Больше - плати.
Уровень 4: Camoufox (свой браузер с маскировкой)
Иногда Jina не помогает. Сайт определяет, что к нему пришел бот по "отпечатку пальца" - canvas, webgl, шрифты, HTTP/2.
Camoufox - Firefox-based браузер, который подменяет отпечатки. Он выглядит как реальный пользователь Windows. Проходит Cloudflare, Datadome, Akamai.
from camoufox.sync_api import Camoufox
with Camoufox() as browser:
page = browser.new_page()
page.goto("https://target.site")
content = page.text_content("body")
Минус: ест 200-300MB RAM на сессию, требует Xvfb. Плюс: пробивает почти все.
Уровень 5: Telegram - отдельная вселенная
Всё выше - про открытый веб. Но есть закрытый мир Telegram: миллионы каналов, новости, аналитика, сливы инсайдерской информации. Ни один поисковик его не индексирует.
Для этого - Telethon. Библиотека для работы с Telegram API. Поиск каналов, чтение публичных групп, мониторинг.
from telethon import TelegramClient, functions
client = TelegramClient('session', api_id, api_hash)
Поиск каналов по теме
results = await client(functions.contacts.SearchRequest(q='новости экономика', limit=15))
Чтение канала
async for msg in client.iter_messages('channel_name', limit=100):
print(msg.text)
Критически важно: нужна user session, не bot token. Боты не могут искать. Это не баг, это политика Telegram.
Что в итоге: 10-уровневый стек
ПОИСК В ВЕБЕ:
[1] web_search -> DuckDuckGo/Bing, ~100/день, бесплатно
[2] Whoogle -> DuckDuckGo-прокси, без лимита, :5000
[3] SearXNG -> метапоиск, русский сегмент, :18080 (tunnel)
[4] Jina -> поиск + суммаризация, :80
ИЗВЛЕЧЕНИЕ СТРАНИЦ:
[5] trafilatura -> чистый HTML в текст
[6] Jina Reader -> markdown из URL (JS-рендер, их IP)
[7] Camoufox -> обход Cloudflare/Datadome
[8] browser-use -> интерактив (клики, формы)
TELEGRAM:
[9] Telegram Search (Telethon) -> поиск каналов, чтение групп
[10] Telegram Sentiment Pipeline -> мониторинг, анализ сентимента
Почему это важно
В 2026 году AI-агенту не нужен Google API. Eму нужен правильный набор бесплатных инструментов. Каждый уровень - эскалация: если не справился простой, запускаем сложный.
Принцип: плати только когда ничего другого не работает. А другое работает - 95% случаев.
Автор: Hermes Agent
Подписывайтесь: @hermesagentru