Токен photon/ в access.log — не след «сервиса интеграции», а признак того, что кто-то запустил против сайта открытый инструмент OSINT-разведки Photon. В отличие от корпоративных ботов с единым оператором и политикой поведения, у Photon оператора в привычном смысле нет: это бесплатный opensource-краулер, который может запустить кто угодно с любыми целями. В каталоге TrafficVeil бот отмечен как легитимный, но здесь особенно важно не путать легитимность инструмента с безопасностью конкретного визита.
Что такое Photon на самом деле
Photon — быстрый краулер, написанный на Python автором s0md3v (также известным по инструменту XSStrike), созданный специально для OSINT и разведки перед security-тестированием. Он не просто индексирует страницы, а целенаправленно извлекает: URL с параметрами, email-адреса и аккаунты в соцсетях, файлы (PDF, XML и другие), секретные ключи и API-токены, JavaScript-файлы и эндпоинты в них, поддомены и DNS-данные. Инструмент также умеет использовать архив Wayback Machine как дополнительный источник URL для расширения покрытия без активного сканирования.
Ключевое отличие от корпоративных ботов: Photon запускают вручную из командной строки конкретные люди — исследователи безопасности, участники bug bounty программ, пентестеры, а иногда и злоумышленники на этапе разведки перед атакой. Инструмент бесплатен, открыт и легко доступен, поэтому строка UA сама по себе ничего не говорит о намерениях того, кто его запустил.
| Параметр | Значение |
| Название | Photon |
| User-Agent / паттерн | photon/ (по умолчанию; инструмент также позволяет пользователю задать произвольный UA через параметры командной строки) |
| Оператор | Единого оператора нет — открытый инструмент, который запускает конкретный человек с собственными целями |
| Роль | Извлечение URL, email, секретных ключей/API-токенов, JS-эндпоинтов, поддоменов и файлов — разведка перед security-тестированием (или перед атакой) |
| Документация / ориентир | Открытый исходный код и документация на GitHub (s0md3v/Photon) |
| Список IP | ❌ Списка IP нет и не может быть — инструмент запускают с произвольных машин произвольные пользователи |
| robots.txt | Зависит исключительно от того, кто запустил инструмент и с какими настройками; единой гарантии соблюдения быть не может |
| Пометка TrafficVeil | Легитимный / Прочие краулеры и сервисы |
Зачем Photon приходит на сайт
Здесь нет универсального ответа «зачем», потому что нет единого оператора с одной целью. Реалистичные сценарии:
- санкционированный пентест или bug bounty — ваша команда или подрядчик по безопасности сознательно тестирует защищённость сайта;
- исследователь в рамках публичной bug bounty программы (если она у вас есть) ищет уязвимости легально;
- разведка перед потенциальной атакой — сбор email-адресов, поддоменов, случайно засвеченных ключей API или паролей в JS-файлах для дальнейшей эксплуатации.
Именно поэтому реакция на этот токен должна отличаться от обычного «allow, если полезно»: сначала стоит выяснить, санкционирован ли этот обход, и отдельно проверить, не «утекли» ли в JS-файлах или комментариях HTML случайно оставленные ключи, токены или другие чувствительные данные — Photon именно на такие вещи и нацелен.
Нагрузка и риски именно для Photon
Здесь риск не сводится к обычному «шуму в аналитике» — сама природа инструмента ориентирована на извлечение потенциально чувствительной информации. Смотрите не только на нагрузку, но и на содержательные сигналы:
- глубина и широта обхода — многопоточный обход часто агрессивен по умолчанию и может создавать заметную нагрузку на origin, особенно без ограничений по задержке;
- какие именно разделы затронуты — если обход концентрируется вокруг
/api/, JS-бандлов или страниц с формами, это соответствует профилю разведки, а не обычного индексирования; - отсутствие cookie и признаков сессии — как у любого автоматизированного клиента;
- сам факт визита стоит воспринимать как повод для внутренней проверки безопасности, а не только как техническую нагрузку.
Как найти Photon в логах
Ищите конкретный токен photon/, помня, что при желании атакующий может его изменить на что угодно.
# Базовый поиск
grep -i "photon/" /var/log/nginx/access.log
# Топ URL, которые вычитывает бот
grep -i "photon/" /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head
# Топ IP за этим UA
grep -i "photon/" /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head
# Суточная активность
grep -i "photon/" /var/log/nginx/access.log | awk '{print $4}' | cut -d: -f1 | sort | uniq -c
Верификация здесь особенно важна и одновременно ограничена: раз официального оператора нет, связка UA + ASN малоинформативна для определения «доверия» — вместо этого сфокусируйтесь на том, что именно запрашивалось. Обход, который явно целится в служебные пути, файлы конфигурации или JS с потенциальными секретами, — сигнал для отдельной проверки безопасности, а не просто повод настроить rate-limit.
IP="1.2.3.4" whois -h whois.cymru.com " -v $IP" dig +short -x "$IP"
robots.txt для Photon
# Жёсткий запрет User-agent: photon/ Disallow: / # Разрешить всё User-agent: photon/ Allow: / # Компромисс: закрыть деньги/кабинет, оставить публичную часть User-agent: photon/ Disallow: /admin/ Disallow: /cart/ Disallow: /checkout/ Disallow: /account/ Disallow: /api/ Allow: /
Важная оговорка: соблюдение robots.txt полностью зависит от того, кто запустил Photon и с какими настройками — легитимный исследователь безопасности, скорее всего, уважит директивы, а злоумышленник на этапе разведки — нет. Файл стоит рассматривать как первый, но точно не единственный рубеж.
Блокировка вручную и через TrafficVeil
Nginx
if ($http_user_agent ~* "photon/") {
return 403;
}
limit_req_zone $binary_remote_addr zone=photon:10m rate=10r/m;
location / {
if ($http_user_agent ~* "photon/") {
limit_req zone=photon burst=20 nodelay;
}
}
Apache (.htaccess)
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} photon/ [NC]
RewriteRule ^ - [F,L]
TrafficVeil
- найдите photon/ / Photon в ботах домена или в
/system/bots; - если обход не санкционирован — блокируйте сразу, не дожидаясь подтверждения безобидности;
- allow имеет смысл только в рамках заранее согласованного пентеста или bug bounty программы, и то на ограниченный период;
- после обнаружения — отдельно проверьте, не были ли затронуты пути с потенциально чувствительными данными (ключи API, конфигурационные файлы, JS с секретами).
С кем не путать Photon
| Бот / сосед | Кластер | UA | Комментарий |
| 2ip Bot | Прочие краулеры и сервисы | 2ip bot | легитимный |
| AccessStatus | Прочие краулеры и сервисы | accessstatus | легитимный |
| AddThis.com | Прочие краулеры и сервисы | addthis.com | легитимный |
| Agent | Прочие краулеры и сервисы | agent | легитимный |
| AgentReadinessScanner | Прочие краулеры и сервисы | agentreadinessscanner | легитимный |
В отличие от всех перечисленных соседей, Photon — это не бренд с известной репутацией, а универсальный инструмент, чья «легитимность» целиком определяется тем, кто и зачем его запустил в конкретном случае.
Стратегия для Photon
| Ситуация | Действие |
| Заранее согласованный пентест или bug bounty | Временный allow на период тестирования, с чётко оговорёнными границами |
| Обход не санкционирован, источник неизвестен | Блокировать сразу через TrafficVeil, не дожидаясь дополнительных признаков вреда |
| Любой обнаруженный визит Photon | Дополнительно проверить, не раскрыты ли секреты/ключи в JS или конфигурационных файлах, независимо от решения по блокировке |
| Подозрение на спуфинг UA под Photon (или наоборот — маскировку Photon под другой UA) | Не полагаться на строку UA как на индикатор безопасности; смотреть на характер запрошенных путей |
Главное отличие Photon от остальных записей в категории «Прочие краулеры и сервисы»: это не вопрос бизнес-пользы, а вопрос безопасности. Пометка «легитимный» здесь означает лишь то, что сам инструмент не является вредоносным по своей природе — но кто именно и зачем его запустил против вашего сайта, каждый раз нужно выяснять заново.