InquirerVeteran journo feted ‘MassKara Legacy Award’Bollywood HungamaEXCLUSIVE: Sunny Deol's Gabru set for 2027 release; Vishal Rana promises a NEVER-SEEN-BEFORE avatar: “Sunny sir says, ‘Iss baar dhai kilo ka haath nahin, dhai kilo ka HEART leke aaya hoon’!”The Jerusalem PostKatz says opposition will bear blame for future attacks on Israel after ignoring warningsRTP DesportoSp. Braga procura primeiros pontos na estreia de Franclim CarvalhoCNN TürkALTIN NEDEN DÜŞÜYOR? Gram altın, çeyrek altın ne kadar? 22 Ekim Kapalıçarşı ons altın, cumhuriyet altın fiyatı: Altında sert düşüş!PunchGuinea-Bissau stops controversial US-funded vaccine trial on newbornsInquirer EntertainmentStar Magic eyes collab with Chinoy pageant to cast winners in vertical shortsESPNTransfer rumors, news: Man United consider defensive clearout in summerSouth China Morning PostHong Kong port needs a new lease of life in value-driven eraThe South AfricanChiefs and Pirates in rare CAF Friday night double-header7sur7Meta prépare ses levées de fonds pour l’IA, Zuckerberg garde le contrôleZDF heuteAktuelle Pressemitteilungen des ZDF
The Daily Newsstand · Free, Always
Thursday, October 22, 2026

Как легко открыть запущенный локально сервис на телефоне и почему меня это выбесило

Translate

Привет хабровчане! Обычно только читаю, а тут решил поделиться своей небольшой историей, может даже кому‑то будет полезной.

Немного о себе - Senior Java Developer, работаю на удаленке и постоянно мигрирую между деревней и городом (эта часть будет важна позже). В свободное время под настроение бывает пишу простенькие программки или игры в надежде что что‑то из этого однажды выстрелит и я проснусь богатым человеком, которому больше не придется никогда работать.

Теперь к сути - на работе дали мне проект по переписи китайского реакт монолита на наш спринговый с thymeleaf. Таймлиф выб выбран для простоты, и оттого что в проекте только одна страница (а нам не нужен отдельный микросервис фронта на одну страницу). Вот только эта единственная страница должна распознавать руку и работать не только с пк, но и с телефонов.

На пк то всё понятно, для проверки достаточно перейти на localhost:8080 и проверяй что хочешь. Но вот для телефона не всё так просто. Вернее просто, но муторно.

Покажу пошагово как это делаю я на примере одного из своих пет проектов.

1) Сперва запускаем свой сервис, который хотим открыть на телефоне.

Не важно что это за сервис. В моем случае это SpringBoot приложение, но это также может быть React, TypeScript, NestJS или любая нейронка с интерфейсом. Главное что есть фронт куда надо зайти с телефона, и сервис запущен локально.

2) Подключаем машину (компьютер/ноутбук) к одной сети

Чтоб с телефона зайти на наш локальный сервис, он должен находиться с ним в одной сети, проще говоря подключиться к тому же wifi.

3) Открываем консоль и ищем локальный IP

Лёгкая часть, после которой начнется муть. Консоль открыть можно разными путями: в адресе проводника написать cmd, через win+r и туда написать - cmd, или просто через пуск найти командную строку. После её открытия пишем единственную команду - ipconfig. После её ввода консоль отобразит все наши ip адреса

IP адреса с ноутбука

IP адреса с ноутбука

Повезло что при проверке с деревни (где я сейчас) их отобразилось совсем мало. В городе, где используется один модем для связи, а второй усилитель первого - адресов в два раза больше.

4) Начинаем перебор на телефоне

Теперь самая нудная часть. Мы знаем что сервис запущен на порту 8080, и теперь нам надо взять каждый найденный IP и с портом перебором проверить каждый адрес на телефоне.

192.168.56.1:8080

192.168.1.6:8080

Пробуем первый - мимо. Пробуем второй - ура, заработал!

Перебор IP адресов на мобильном

Перебор IP адресов на мобильном

Поздравляю, теперь вы умеете заходить на локально запущенные сервисы с телефона!

Эх, если бы всё было так просто.

Для разового захода инструкция более чем подходящая, но я не просто так написал что способ меня выбесил. У моего роутера динамический ip, это значит что при каждом новом подключении я получу другой ip, и по прошлому уже не зайду, так что разово запоминать его для меня бессмысленно. А ещё у меня отдельно рабочий и личный ноутбук, так что в том проекте, что мне дали на работе, я должен использовать уже другой ip адрес, заново проходя все шаги для его получения.

Постоянная смена IP

Постоянная смена IP

Неделя в деревне прошла, поехал в город - и давай по новой искать адреса и для работа, и для пет проекта. И так каждую неделю, раз за разом, повторяя это безумие в надежде что что‑то изменится. Нет, не изменилось.

Хватит это терпеть! Сказал я себе и решил упростить себе жизнь. Что я сделал? Мобильное приложение, которое само по указанному порту ищет в сети адрес и открывает мне страницу. Т.е. теперь, вместо повторения всей этой муторни мне достаточно ввести на телефоне порт, нажать кнопку поиска и всё, адрес сам будет найден и открыт в браузере!

Как это работает под капотом:

1) Приложение узнаёт, в какой локальной сети находится телефон.

Например, телефон получил от роутера адрес 192.168.1.7. Из этого уже можно понять, что остальные устройства дома, скорее всего, находятся где‑то рядом: 192.168.1.1, 192.168.1.2, 192.168.1.3 и так далее.

2) Далее вводим нужный порт. Допустим, Spring Boot приложение запущено на 8080. Значит, искать нужно не просто компьютер, а устройство, которое отвечает именно на порту 8080.

3) Приложение перебирает возможные адреса в локальной сети. Но не последовательно, ожидая каждый адрес по несколько секунд (иначе поиск занял бы вечность). Проверки запускаются параллельно с небольшими таймаутами:

192.168.1.1:8080

192.168.1.2:8080

192.168.1.3:8080

…

192.168.1.254:8080

Большинство адресов сразу отваливаются: на них либо вообще нет устройства, либо нужный порт закрыт.

Почему перебор: телефон не знает, какой именно компьютер в сети принадлежит мне и на каком из устройств запущен мой Spring Boot. Роутер не сообщает приложению: "вот это ноутбук автора, а вот здесь у него backend". Поэтому задача сводится к небольшому локальному сканированию: найти устройство, которое действительно отвечает на нужном порту.

4) Если порт открыт - нужно понять, что на нём находится. Сам факт открытого TCP‑порта ещё не означает, что там сайт. Поэтому приложение пробует обратиться к адресу по HTTP и HTTPS. Например: http://192.168.1.5:8080/ или: https://192.168.1.5:8080/

Если сервер отдаёт нормальный HTTP‑ответ - значит, цель найдена.

5) HTTPS тоже проверяется. Для меня это было особенно важно, потому что локальные приложения я иногда запускаю с самоподписанным сертификатом. Обычная проверка такого сертификата закономерно скажет: «сертификату доверять нельзя». Но для задачи поиска это не имеет большого значения: мне нужно сначала понять, что на этом IP и порту вообще живёт HTTPS‑сервер. Поэтому во время самого поиска приложение умеет определить такой сервер даже с self‑signed сертификатом.

6) Найденный адрес показывается пользователю. После этого, пока IP компьютера не изменился, приложение можно вообще не сканировать.

И теперь моя жизнь превратилась в сказку! (ну почти).

Мне больше не нужно постоянно проходить одни и те же шаги чтоб отрыть рабочий сайт и свой пет проект как дома, так и в городе. Теперь свободное время я трачу на то чтоб стоя на кухне смотреть в окно. Показал приложение коллегам на работе - нескольким тестировщиком понравилось, пару разработчиков (которые на мобильных ничего не проверяют) сказали что занимаюсь фигней.

Легко ли было это сделать? На удивление да, хватило одного вечера. Можно ли самому написать такое приложение? Вообще без проблем, киньте в нейронку описание и она выдаст готовое решение (ну или частично готовое). Или напишите руками, освежив свои знания.

И всё же я не единственный в мире человек, которому приходится открывать на телефоне что‑либо запущенное локально, так что вполне вероятно что это бесит кого‑то ещё. Поэтому ради тех кому лень самому писать такую же тулу, пройдя свозь трудности модерации и тестирования от гугла, я опубликовал приложение в Google play market, называется Localhost Finder. Оно бесплатно и без рекламы, так что если испытываете ту же боль что и я, то при желании можете скачать и потыкать, может и вам оно поможет.

Вероятно есть куда более быстрые и правильные способы поиска IP и перехода в мобильном, но я как‑то привык использовать ipconfig ещё с детства, когда искали порты для подключения по локальной сети в КС. Так что если кто‑то знает что можно было сделать по другому - добро пожаловать в комментарии, будет интересно почитать. Учиться никогда не поздно

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.