ИнструкцияGuide
Устройства, ссылки и лимитыDevices, links and limits
Как панель считает устройства и как пользоваться инструментом.How the panel counts devices and how to use the tool.
01Что это за проектWhat this project is
Локальный рабочий стол для ссылок Happ. Расшифровывает happ://crypt…crypt5 прямо в браузере (все ключи встроены), редактирует адрес подписки и её параметры, привязывает HWID к ссылке, собирает форматы импорта для клиентов и зашифровывает URL обратно через официальный API Happ. Вкладка «Запрос» отправляет запрос подписки с точными заголовками устройства и показывает ответ панели.A local workbench for Happ links. It decrypts happ://crypt…crypt5 right in the browser (all keys are bundled), edits the subscription address and its parameters, binds a HWID into the link, builds client import formats, and re-encrypts URLs through the official Happ API. The Request tab sends a subscription request with exact device headers and shows the panel response.
Спутниковые проекты: happ-relay-cloudflare (релей на Cloudflare Workers) и happ-relay-cloudflare-vercel (тот же релей на Vercel) — позволяют подключать много устройств так, чтобы панель видела одно.Companion projects: happ-relay-cloudflare (Cloudflare Workers relay) and happ-relay-cloudflare-vercel (the same relay on Vercel) — connect many devices while the panel sees one.
02Рабочая область: по шагамWorkspace: step by step
- Вставьте любую ссылку — зашифрованную
happ://crypt… или обычный https://-адрес — и нажмите «Подготовить». Расшифровка идёт локально.Paste any link — an encrypted happ://crypt… or a plain https:// address — and press Prepare. Decryption runs locally. - Отредактируйте адрес назначения и параметры. Повторяющиеся параметры сохраняются. Кнопка «hwid → в ссылку» вшивает идентификатор устройства в саму ссылку.Edit the destination URL and parameters. Repeated parameters are preserved. «hwid → into link» embeds a device identifier into the link itself.
- Выберите формат вывода: точный URL, Base64, JSON, импорт v2RayTun, семейство Clash, sing-box. Для телефонов — QR-код.Pick the output format: exact URL, Base64, JSON, v2RayTun import, the Clash family, sing-box. QR code for phones.
- При необходимости зашифруйте URL обратно в
happ://crypt5 — через официальный API, после явного согласия.Optionally encrypt the URL back into happ://crypt5 — via the official API, after explicit consent.
03Вкладка «Запрос»: идентичностьRequest tab: identity
Поля идентичности — x-hwid, User-Agent, x-device-os, x-ver-os, x-device-model. Правило HWID: 10–64 символа из A-Z a-z 0-9 = -. Поля сохраняются в этом браузере и автоматически переносятся в редактор.Identity fields — x-hwid, User-Agent, x-device-os, x-ver-os, x-device-model. HWID rule: 10–64 characters from A-Z a-z 0-9 = -. The fields are stored in this browser and mirrored into the editor.
Панель считает устройства по значениям x-hwid: все клиенты с одинаковым HWID для неё — одно устройство. Поэтому задайте одну идентичность и используйте её на всех устройствах, где клиент позволяет ручной ввод.The panel counts devices by their x-hwid values: every client with the same HWID is one device. Set one identity and reuse it on every device whose client supports manual input.
04Вкладка «Запрос»: маршрутыRequest tab: routes
- Мост (локальный сервер)Local bridge — работает при
npm run dev или npm run preview. Запрос уходит с вашего IP с точными заголовками, включая User-Agent. Только loopback, ответ до 2 МиБ, таймаут 15 секунд, редиректы отклоняются.works under npm run dev or npm run preview. The request leaves from your IP with exact headers, including User-Agent. Loopback only, responses up to 2 MiB, 15-second timeout, redirects rejected. - Публичный прокси — corsfix.comPublic proxy — corsfix.com — работает даже на статическом хостинге. Видит URL вашей подписки; лимит около 60 запросов в минуту.works even on static hosting. It sees your subscription URL; about 60 requests per minute.
- Свой проксиCustom proxy — шаблон вашего CORS-прокси с
{url} или префиксом.your own CORS-proxy template with {url} or a prefix.
Без моста браузер не может задать User-Agent — на прямых и публичных маршрутах панель увидит User-Agent браузера.Without the bridge the browser cannot set User-Agent — direct and public routes show the browser's own User-Agent to the panel.
05Как панель считает устройстваHow the panel counts devices
Панель (например, Remnawave) считает уникальные значения заголовка x-hwid. Значение формирует клиентское приложение — Happ, v2RayTun и другие — при каждой загрузке подписки. Два устройства с одинаковым x-hwid неотличимы для панели: они считаются одним устройством. Заголовок отправляют: Happ, v2RayTun, Koala Clash, FlClashX, Prizrak-Box, Throne, Shadowrocket, Karing, Clash Mi, Incy, RenoarX, DeskBox, Passwall-OpenWRT (у части приложений HWID по умолчанию выключен — включите в настройках).The panel (for example, Remnawave) counts unique x-hwid header values. The client app — Happ, v2RayTun and others — produces this value on every subscription load. Two devices presenting the same x-hwid are indistinguishable to the panel: they count as one device. Apps sending the header: Happ, v2RayTun, Koala Clash, FlClashX, Prizrak-Box, Throne, Shadowrocket, Karing, Clash Mi, Incy, RenoarX, DeskBox, Passwall-OpenWRT (some ship HWID disabled by default — enable it in settings).
06Несколько устройств — одна идентичностьMultiple devices, one identity
- На вкладке «Запрос» задайте одну идентичность: HWID, User-Agent, модель. Поля сохраняются в этом браузере.On the Request tab set one identity: HWID, User-Agent, model. The fields are stored in this browser.
- Нажмите «Отправить запрос» — панель зарегистрирует идентичность и вернёт подписку.Press «Send request» — the panel registers the identity and returns the subscription.
- На остальных устройствах впишите тот же HWID в клиентах с ручным вводом — все они считаются одним устройством. В редакторе «hwid → в ссылку» дополнительно вшивает HWID в саму ссылку: приложение добавит её только на устройстве с этим HWID.On other devices enter the same HWID in clients with manual input — they all count as one device. In the editor, «hwid → into link» additionally embeds the HWID into the link itself: the app adds it only on a device with that HWID.
Если клиент не позволяет ввести HWID вручную, он продолжает отправлять свой собственный — и занимает отдельный слот.If a client does not allow manual HWID input, it keeps sending its own value and occupies a separate slot.
07Если достигнут лимитWhen the limit is reached
Каждый новый уникальный HWID занимает слот. Когда слоты закончились, панель отклоняет новые идентификаторы: ответ приходит с заголовком x-hwid-max-devices-reached: true (часто с пустым телом). Это решение сервера — обойти его со стороны клиента нельзя. Варианты: удалить неиспользуемое устройство в панели, попросить владельца поднять лимит или отключить ограничение для пользователя. Использование подписки сверх условий тарифа может нарушать правила провайдера.Every new unique HWID takes a slot. Once the slots are gone the panel denies new identities: the response carries x-hwid-max-devices-reached: true (often with an empty body). This is a server-side decision and cannot be bypassed from a client. Options: remove an unused device in the panel, ask the owner to raise the limit, or disable the restriction for the user. Sharing beyond your plan may violate the provider's terms.
08Заголовки ответа панелиPanel response headers
Вкладка «Запрос» показывает их рядом с содержимым:The Request tab shows them next to the content:
x-hwid-active: true — лимит активен для этого запросаthe limit is enforced for this requestx-hwid-not-supported: true — запрос пришёл без принятого HWIDthe request had no accepted HWIDx-hwid-max-devices-reached: true — лимит исчерпан, новый HWID отклонёнthe limit is reached, a new HWID was deniedx-hwid-limit: true — совместимость с v2RayTunv2RayTun compatibility flag
09Ссылки и шифрованиеLinks and encryption
Расшифровка happ://crypt…crypt5 выполняется локально. HTTPS URL можно свободно редактировать. Для v2RayTun есть документированный импорт v2raytun://import/{subscription_link}. Crypt5-ссылку создаёт официальный API crypto.happ.su — URL отправляется туда только после вашего согласия. Base64 и JSON в списке форматов — это кодирование данных, а не конвертер конфигураций.Decryption of happ://crypt…crypt5 runs locally. HTTPS URLs can be edited freely. v2RayTun has a documented import v2raytun://import/{subscription_link}. A crypt5 link is issued by the official crypto.happ.su API — the URL is sent there only with your consent. Base64 and JSON in the format list are data encodings, not configuration converters.
10Приватность: что покидает устройствоPrivacy: what leaves the device
- Расшифровка, редактирование и генерация ссылок — полностью локальны, ничего не отправляется.Decryption, editing and link generation are fully local; nothing is sent.
- Официальное шифрование — URL уходит на
crypto.happ.su только после вашего явного согласия.Official encryption sends the URL to crypto.happ.su only after your explicit consent. - Маршрут «Мост» — запрос идёт с вашего IP; только loopback; ответ до 2 МиБ; таймаут 15 секунд; редиректы отклоняются.Local bridge route — the request leaves from your IP; loopback only; responses up to 2 MiB; 15-second timeout; redirects rejected.
- Публичный прокси и свой прокси — URL подписки проходит через сторонний сервис, который вы выбираете сами.Public and custom proxy routes — the subscription URL passes through a third party you choose.
- Идентичность — хранится в localStorage этого браузера.Identity — stored in this browser's localStorage.
11Репозитории проектаProject repositories
ПервоисточникиPrimary sources