Как создать сокращатель ссылок
Сокращатель ссылок сохраняет длинный веб-адрес под коротким кодом и перенаправляет всех, кто открывает короткую ссылку. Ядро очень маленькое — одна таблица и один маршрут редиректа, поэтому это классический первый проект. Настоящий сокращатель делает полезным всё остальное: короткий домен, свои адреса, счётчики кликов, возможность поменять, куда ведёт ссылка, и защита от спамеров, которые используют ваш домен, чтобы спрятать фишинговые ссылки. Решите заранее, для вас и вашей команды он или открыт для всех, потому что публичные сокращатели очень быстро привлекают злоупотребления.
Что нужно сокращателю ссылок
Данные
| Таблица | Поля |
|---|---|
| Ссылки | Короткий код, адрес назначения, владелец, заголовок, дата создания, признак активности, необязательный срок действия |
| Клики | Ссылка, время, источник перехода, страна, тип устройства |
| Домены (необязательно) | Собственные короткие домены и их владельцы |
Поставьте уникальный индекс на короткий код. Две ссылки с одинаковым кодом — единственная ошибка, которая должна быть невозможна.
Страницы и маршруты
- Маршрут редиректа —
/{code}находит код и перенаправляет. Это единственный маршрут, который почти все посетители когда-либо увидят, поэтому он должен быть быстрым и никогда не показывать интерфейс вашего приложения. - Создание ссылки — вставьте URL, при желании выберите свой адрес, получите короткую ссылку с кнопкой копирования.
- Список ссылок — ваши ссылки с числом кликов, поиском и переключателями включения.
- Карточка ссылки — клики по времени, основные источники переходов, страны, устройства. Редактирование адреса назначения.
- Страница «не найдено» для неизвестных или отключённых кодов.
- QR-код для каждой ссылки — дёшево добавить, и его часто просят.
Решения и компромиссы
Тип редиректа. Постоянный редирект 301 может кешироваться браузерами, поэтому повторные посетители обходят ваш сервер: вы теряете клики и не можете поменять адрес назначения для них. Используйте 302 или 307, если считаете клики или разрешаете редактирование. Так делают большинство сокращателей с отслеживанием.
Короткие коды. Случайные коды из шести или семи символов (буквы и цифры) трудно угадать, и их достаточно. Избегайте похожих символов (0/O, 1/l), если люди будут вводить ссылки вручную. Последовательные коды показывают, сколько у вас ссылок, и позволяют любому перебирать их.
Свои адреса. /launch лучше, чем /x7Kp2q. Зарезервируйте слова, которые использует ваше приложение (login, api, admin), блокируйте оскорбительные адреса, если инструмент публичный, и решите, чувствительны ли адреса к регистру. Без учёта регистра удобнее.
Скорость. Сокращатель добавляет переход перед каждым визитом. Держите маршрут редиректа на одном индексированном запросе и записывайте клик после отправки редиректа (или в фоне), чтобы отслеживание никогда не замедляло посетителя. Приложения на хостинге, который засыпает при простое, могут открываться немного дольше при первом визите после затишья; для личного или командного инструмента это обычно нормально.
Аналитика кликов и приватность. Подсчёт кликов, источников переходов и примерной страны — стандартная практика. Хранение полных IP-адресов и построение профилей отдельных людей — то место, где начинает действовать закон о защите данных. Храните то, что вы реально будете смотреть, и где можно — агрегируйте. См. как добавить аналитику в приложение.
Домен. Ссылка короткая настолько, насколько короткий её домен. Купите короткий домен и направьте его на приложение — см. как подключить собственный домен. Многие хостинги предпочитают поддомен (go.yourbrand.com) голому корневому домену, его подключить проще.
Злоупотребления. Если создавать ссылки может любой, спамеры будут использовать ваш домен, чтобы маскировать фишинг и вредоносное ПО, и ваш домен может попасть в чёрные списки. Для публичного сокращателя: требуйте учётные записи, ограничивайте создание, проверяйте адреса назначения по списку вредоносных URL, например Google Safe Browsing, блокируйте ссылки на сам сокращатель (циклы редиректов) и создайте в админке переключатель, который мгновенно отключает любую ссылку. Закрытый сокращатель только для команды избавляет от большинства этих проблем.
Первый промпт, который работает
Создай веб-приложение-сокращатель ссылок для моей команды. Вошедшие пользователи вставляют адрес назначения и получают короткую ссылку со случайным кодом из 7 символов (без 0, O, 1 и l) или выбирают свой адрес. Адреса уникальны и не чувствительны к регистру; зарезервируй login, api, admin, app и settings. Публичный маршрут /{code} ищет код одним индексированным запросом и возвращает редирект 302; запиши клик (время, источник перехода, страна, тип устройства — без полного IP-адреса), не задерживая редирект. Неизвестные или отключённые коды показывают простую страницу «не найдено». Пользователи видят список своих ссылок с числом кликов, могут изменить адрес назначения, отключить ссылку, скачать QR-код и открыть карточку с кликами по дням, основными источниками переходов и странами. Проверяй, что адреса назначения — это http или https URL и не ссылки на сам сокращатель. Храни всё в базе данных.
Этапы сборки
- Создание и редирект. Создайте ссылку и откройте её в приватном окне. Проверьте, что ответ — 302, а не страница, которая потом перенаправляет через JavaScript.
- Коды и адреса. Попробуйте повторный адрес, зарезервированное слово, смешанный регистр и очень длинный URL.
- Отслеживание кликов. Кликните с нескольких устройств и проверьте счётчики и источники переходов.
- Редактирование и отключение. Поменяйте адрес назначения и убедитесь, что старая короткая ссылка ведёт на новое место; отключите одну и убедитесь, что она перестала работать.
- Проверка. Попробуйте ссылки
javascript:, ссылки на сам сокращатель и некорректные URL. Все они должны отклоняться на сервере. - Домен. Подключите короткий домен и проверьте ссылки на нём.
- Меры против злоупотреблений, если инструмент будет публичным: ограничения частоты, проверка адреса назначения и админ-вид последних ссылок.
Типичные ошибки
- 301-редиректы с отслеживанием кликов. Браузеры их кешируют, и ваши цифры искажаются.
- Редирект на странице. Загрузить приложение, а потом перенаправить через JavaScript, и каждый клик ощущается медленным. Перенаправляйте на сервере.
- Нет уникального ограничения на коды. Коллизии рано или поздно случатся.
- Открытый публичный сокращатель без ограничений. Его будут злоупотреблять, а репутация вашего домена пострадает вместе с ним.
- Принимать любую схему URL. Разрешайте только адреса http и https.
- Потерять ссылки при переезде. Владейте коротким доменом сами, чтобы ссылки пережили смену хостинга.
Когда лучше готовый продукт
Устоявшиеся сервисы управления ссылками сразу дают брендированные домены, подробную аналитику, командные функции, QR-коды, интеграции и борьбу со злоупотреблениями. Если ссылки — основа вашего маркетинга и вы не хотите ничем заниматься, заплатите за один из них.
Свой сокращатель стоит делать, когда вам нужен простой командный сокращатель на собственном домене без оплаты за место, ссылки, связанные с вашим продуктом (ссылки для шаринга, реферальные ссылки, отслеживаемые ссылки в письмах), или полный контроль над данными о кликах. Это также хороший первый бэкенд-проект. Дополните его страницей ссылок для профиля и пройдите чек-лист безопасности для приложений, созданных ИИ, прежде чем открывать его для всех.
Как это сделать в Mythex
В Mythex вы описываете сокращатель в чате и проверяете редиректы в живом превью. Когда приложению нужна, Mythex добавляет выделенную базу данных для ссылок и кликов. Опубликованные приложения и их базы данных засыпают при простое и просыпаются при следующем визите, что делает тихий сокращатель недорогим в работе. Публикуйте по ссылке mythex.ai, а на тарифе Pro подключите собственный короткий домен или купите его прямо в Mythex — см. собственные домены. Шаблон сокращателя ссылок — готовый стартовый промпт с собственными адресами и аналитикой кликов.
Вопросы
Какой редирект использовать в сокращателе ссылок: 301 или 302?
301 сообщает браузерам, что переезд постоянный, поэтому они могут закешировать его и в следующий раз не обращаться к вашему серверу. Это значит потерянные клики и ссылки, которые нельзя поменять. Большинство сокращателей, которые считают клики или позволяют редактирование, используют временные редиректы 302 или 307.
Как генерируются короткие коды?
Либо как случайные строки из букв и цифр с проверкой на совпадение с существующими кодами, либо кодированием ID записи в базе в системе по основанию 62. Случайные коды трудно угадать; последовательные раскрывают, сколько ссылок существует. Шесть или семь случайных символов дают миллиарды комбинаций.
Нужен ли короткий домен?
Для работы — нет, но смысл сокращателя в коротких и заслуживающих доверия ссылках. Короткий собственный домен также означает, что ссылки продолжат работать, даже если вы смените хостинг.
Как не дать людям злоупотреблять публичным сокращателем ссылок?
Требуйте регистрацию для создания ссылок, ограничивайте частоту создания, проверяйте адреса назначения по списку вредоносных URL, например Google Safe Browsing, блокируйте ваш собственный домен как адрес назначения и предусмотрите быстрый способ отключить ссылки.