TunepingBot/0.1 (+https://tuneping.com/bot)
Вы нашли TunepingBot в своих логах. Вот всё, что он делает.
Он читает публичное название текущего трека вашей станции каждые 20–60 секунд, по несколько KB за раз, и никогда не трогает аудио. Если вы против, любой из трёх способов отказа ниже срабатывает навсегда и в течение 24 часов. Без лишних вопросов.
To: [email protected] Subject: Opt-out Body: stream.example.net
Отправьте хост или URL потока на [email protected]. Когда станция будет удалена, вы получите подтверждение.
User-agent: TunepingBot Disallow: /
Для каждой комбинации схемы, хоста и порта. Настоящая группа User-agent: * тоже работает (см. ниже).
X-Robots-Tag: noindex
На эндпоинте статуса или на URL потока. Ответ 401 или 403 действует так же.
Коротко
| User-Agent | TunepingBot/0.1 (+https://tuneping.com/bot) |
|---|---|
| IPv4 | 167.233.123.27 |
| IPv6 | 2a01:4f8:c016:4026::1 |
| Обратный DNS | poller.tuneping.com, с прямым подтверждением. Машиночитаемый список: /bot/ips.json. |
| Частота | Один запрос на станцию каждые 20–60 с; раз в 5 мин, если название не менялось 30 мин. Не более 2 одновременных соединений на IP-адрес сервера. |
| Байт за проверку | Несколько сотен байт для эндпоинта статуса; до примерно 16 KB для одного блока метаданных в потоке. |
| Вступает в силу | В течение 24 часов, обычно за минуты. Навсегда, пока вы сами не попросите вернуть станцию. |
| Оператор | Tuneping, см. выходные данные. Злоупотребления: [email protected]. |
Кто мы
Tuneping — небольшой сервис, который ведёт живой индекс того, что играют интернет-радиостанции, чтобы слушатели и разработчики могли искать песню по всем станциям, смотреть историю эфира станции или получать оповещение, когда начинается песня из списка желаний. Индекс целиком строится из метаданных с названиями, которые станции и так публикуют для каждого слушателя. Сервер работает только с метаданными; он никогда не хранит, не ретранслирует и не распространяет аудио.
Что он запрашивает
/robots.txtна хосте потока, с кешированием до 24 часов- Публичный эндпоинт статуса стримингового сервера, если он есть (в вариантах JSON, XML или простого текста, например
/status-json.xsl,/stats,/currentsong,/7.html; раз в час — список недавно сыгранного, если сервер его предоставляет) - Иначе — сам публичный URL потока с
Icy-MetaData: 1; поток читается только до прихода первого блока метаданных, после чего соединение закрывается Connection: close, обычный HTTP/1.1, таймаут 5 с на подключение и 10 с всего, не более 5 редиректов
Чего он никогда не делает
- Не читает аудио сверх одного интервала метаданных, нужного, чтобы найти название (около 16 KB, отбрасываются по мере поступления)
- Не записывает, не хранит, не ретранслирует и не распространяет аудио ни в каком виде
- Не запрашивает админские пути, веб-страницы, кроме перечисленных выше эндпоинтов статуса, и всё, что требует учётных данных
- Не опрашивает плейлисты и сегменты HLS
- Не загружает логотипы и обложки
- Не вызывает счётчик кликов каталога
Если у станции есть эндпоинт статуса, мы всегда выбираем его, потому что он обходится вам в несколько сотен байт вместо короткого фрагмента аудио.
Как часто и как он себя ведёт
- Интервал: каждые 20 с для недорогих эндпоинтов статуса, каждые 60 с для метаданных в потоке (30 с для небольшого числа станций, за которыми пользователь явно попросил следить). Страницы статуса, большие относительно числа обслуживаемых ими станций, опрашиваются пропорционально реже, так что станция никогда не обходится в минуту дороже по байтам, чем одна проверка метаданных в потоке. Станции, у которых название не менялось 30 минут, опрашиваются раз в 5 минут. К интервалам добавляется случайный разброс ±10 %, чтобы станции на одном сервере не опрашивались синхронно.
- Параллельность: не более 2 открытых соединений с одним IP-адресом сервера одновременно. Множество станций за одним адресом опрашиваются реже, а не параллельно.
- robots.txt: соблюдается для токена
TunepingBotи для*, для каждой комбинации схемы, хоста и порта. Одно исключение: некоторые стриминговые серверы поставляются со встроенным robots.txt, который состоит ровно изUser-agent: */Disallow: /и больше ничего. Такую голую настройку сервера по умолчанию мы считаем отсутствием robots.txt, потому что её писал не оператор станции; группаTunepingBotили любая группа*больше чем из этой одной строки соблюдается полностью. Ответ 5xx на robots.txt считается запретом, пока файл не удастся получить снова. - Отступление:
429и503сRetry-Afterсоблюдаются; при ошибках соединения интервал растёт экспоненциально (1, 2, 4, 8 минут, вплоть до 24 часов). После 7 дней ошибок подряд опрос прекращается навсегда. - Блокировки: если все соединения с адресом начинают уходить в таймаут, мы приостанавливаем этот адрес на час и получаем оповещение. Ответ
401или403на URL потока, а также любой файрвол или антибот-проверка считаются постоянным отказом для этого хоста. - Соединения:
Connection: close, обычный HTTP/1.1, корректное закрытие с FIN после чтения блока метаданных; таймаут 5 с на подключение и 10 с всего; не более 5 переходов по редиректам.
Как убедиться, что это действительно мы
Запросы приходят с двух адресов из таблицы выше и больше ниоткуда. Обратный DNS обоих адресов — poller.tuneping.com, и это имя в прямом направлении разрешается в те же адреса, так что проверка обратного DNS с прямым подтверждением работает. Всё, что называет себя TunepingBot и приходит с другого адреса, — не мы; пожалуйста, сообщите на [email protected]. Актуальный список также опубликован по адресу tuneping.com/bot/ips.json; об изменениях мы объявим на этой странице не менее чем за неделю до их вступления в силу.
Как отказаться
Достаточно любого из трёх способов в начале этой страницы. Соблюдаются все три, отказ действует навсегда и вступает в силу в течение 24 часов (на практике планировщик подхватывает его за минуты). Без лишних вопросов и без объяснения причин. Общая группа User-agent: * в robots.txt тоже работает, если это не та однострочная настройка по умолчанию, которую поставляет ваше серверное ПО (см. выше). Ответ 401 или 403 на URL потока или проверка файрвола перед ним автоматически действуют так же.
Отказ исключает станцию из опроса, из API и со всех публичных страниц и вносит её в список исключений, который планировщик проверяет перед каждым запросом. Если позже вы захотите вернуться, напишите на тот же адрес.
Что мы храним
Для каждой станции: текущие и прошлые строки названий в точности так, как они опубликованы, время, когда мы их увидели, и запись станции в каталоге (название, URL потока, страна, кодек). Для соблюдения вежливости и разбора злоупотреблений мы также ведём журнал собственных соединений (время, IP-адрес и порт вашего сервера, код статуса, число байт) 7 дней, в почасовой агрегации — 30 дней, чтобы по вашему запросу точно ответить, какие запросы мы делали. Мы не храним аудио, данные слушателей и ничего персонального. Бот не собирает персональных данных; единственные персональные данные, которые мы обрабатываем, — контакты тех, кто нам пишет (см. политику конфиденциальности).
Подключиться или исправить то, что мы показываем
Если вы хотите, чтобы мы читали определённый эндпоинт, или вы публикуете названия там, где мы их не нашли, напишите на [email protected], и мы переключимся. Если название или данные вашей станции указаны неверно, тот же адрес поможет это исправить.
Откуда берётся список станций
Данные каталога станций — из radio-browser.info, CC0 (общественное достояние, данные сообщества). Бот никогда не вызывает счётчик кликов каталога. Музыкальные метаданные сопоставляются с MusicBrainz (основные данные под CC0).
Контакты и злоупотребления
- Операторы станций, отказы, исправления: [email protected]
- Сообщения о злоупотреблениях: [email protected]
- Всё остальное: [email protected]
Мы читаем эти ящики ежедневно и стараемся подтвердить получение в течение 24 часов. Сведения об операторе — на странице выходных данных.
Журнал изменений
| 2026-10 | TunepingBot/0.1, первая версия. Исходящие адреса 167.233.123.27 и 2a01:4f8:c016:4026::1, обратный DNS poller.tuneping.com. |