Пробросити порти з термінала
Сервер, який ви запускаєте в терміналі розмови, публікується лише для того
простору. Панель портів помічає слухачів, запущених цим застосунком у тому
просторі, зіставляє їм порти й дає адресу для кожного місця, звідки ви можете
до них дістатися. Два простори можуть обидва слухати 5173; їхні карти ніколи
не змішуються.
Тут ніщо не відкриває машину назовні: кожен шлях створює сервер, на запит, і він зникає разом із терміналом або rig.
Що слухає
Розділ із назвою «Що слухає»- Відкрийте Terminal (VM) цієї розмови або хост-шел (у просторі або на сторінці PR).
- Запустіть свій сервер —
pnpm dev,python -m http.server 8000, будь-що. - За кілька секунд на іконці вилки у правому верхньому куті термінала з’явиться крапка. Натисніть її.
Панель перелічує кожен порт, що слухає, разом із процесом, який ним володіє, у
вигляді 3000 → 3000: ліворуч — порт, який процес зайняв, праворуч — порт, на
якому він відповідає локально (те саме число, якщо воно було вільним на вашій
машині). Кожен рядок також показує, чи можуть до нього дістатися десктопний
localhost, Browser (VM) і Android.
Виявлення обмежене: Terminal (VM) опитують усередині того гостя; хост-шел — з дерева процесів PTY тієї сесії. Інші простори й інші процеси на вашому Mac до списку не потрапляють.
Нові порти в цьому терміналі переадресовуються автоматично. Вимкніть Автопереадресацію портів у тій самій панелі, якщо хочете бачити лише ті, які додали самі.
Доступ із цього комп’ютера
Розділ із назвою «Доступ із цього комп’ютера»Скористайтеся пунктом Копіювати локальний URL у рядку —
http://localhost:3000. Переадресація слухає лише на loopback, тож ніщо інше
у вашій мережі її не бачить.
Якщо два простори відкривають гостьовий 5173, а ваша машина вже тримає
127.0.0.1:5173, другий простір зберігає гостьовий 5173 і отримує ефемерний
локальний порт. Копіювання URL використовує праворучне число.
У хост-шелі процес уже на вашій машині. Зіставлення того самого локального порту нічого не змінює; вибір іншого локального порту прив’язує loopback-проксі до обраного.
--host (або прив’язка до 0.0.0.0) не дає вбудованому Browser (VM)
дістатися сервера на Mac. Гість має власний loopback; сервер прокладає тунель
у того гостя, коли вкладка браузера перебуває в тому самому просторі.
Доступ із Browser (VM)
Розділ із назвою «Доступ із Browser (VM)»Відкрийте вбудований браузер у тій самій розмові. Введіть
localhost:<left-hand port> — число, яке зайняв процес. Перезіставлення
(5173 → 3000) також відповідає за праворучним числом у тому браузері, тож і
копіювання URL там працює. browser_use агента може перейти за будь-якою з
них. Сервер у просторі A ніколи не з’являється як localhost:5173 у браузері
простору B.
Використовуйте localhost, а не IP у LAN і не --host. Гість має власний
loopback; тунель слухає там і на IPv4, і на IPv6.
Сторінки, які відкривають багато з’єднань одразу (десятки ресурсів, сокет перезавантаження в реальному часі), використовують той самий тунель. Browser (VM) мультиплексує їх в один постійний exec, тож сплеск запитів не створює окремий процес на кожне з’єднання й не обертається тайм-аутом і білою сторінкою.
У межах одного простору переадресація з Terminal (VM) має перевагу над хост-шелом на тому самому числі. Між просторами переваги немає — це окремі карти.
Доступ із Android
Розділ із назвою «Доступ із Android»Відкрийте вкладку Android того простору. Тоді localhost:<port> емулятора
реверсується на опублікований порт цього простору (adb reverse). Емулятор
один на весь пристрій: під’єднання простору B перенацілює :5173 на B і
відкидає A. Закрийте вкладку — і реверс-правила, які встановив цей rig,
зникають.
iOS Simulator і так є Mac — реверс не потрібен. А фізичному iPhone все ще потрібен доступ через локальну мережу.
Поділіться ним у своїй мережі
Розділ із назвою «Поділіться ним у своїй мережі»⋯ → Поділитися в локальній мережі публікує порт за адресою
<server-ip>:<random port> — стане в пригоді, щоб відкрити сторінку на
телефоні або коли сервер працює на іншій машині.
- Порт у LAN завжди призначає ОС, ніколи — число гостя, тож відкриття назовні дає навмисну, видиму адресу, а не таку, яку можна вгадати.
- Він лишається приватним (лише loopback), доки ви його не ввімкнете, а ⋯ → Лише локально прибирає його з мережі.
Дайте йому ім’я — з HTTPS
Розділ із назвою «Дайте йому ім’я — з HTTPS»⋯ → Задати домен браузера (.test) призначає порту dev-домен, наприклад
myapp.test. Тоді всередині Browser (VM) https://myapp.test завантажує ваш
сервер із чинним замочком — це стане в пригоді для всього, що поводиться
інакше на іменованому origin або в безпечному контексті (cookies, service
workers, колбеки OAuth).
- Домени мають закінчуватися на
.testабо.localhost— це два TLD, зарезервовані для розробки, тож dev-ім’я ніколи не заступить справжній сайт. - Доменні імена унікальні на сервері; номери портів — ні. Два простори
можуть обидва використовувати
5173, але не можуть обидва заявитиmyapp.test. - Сертифікат походить від локального центру сертифікації, створеного на вашому сервері тоді, коли він уперше знадобився. Його ключі лежать у каталозі даних сервера й ніколи не потрапляють до жодного гостя; вбудований браузер довіряє рівно цьому одному ключу, тож TLS до справжнього інтернету й далі перевіряється як звичайно.
- Домен розв’язується лише всередині Browser (VM). Ваш власний браузер на
хості натомість використовує
localhost:<port>. - Звичайний
http://myapp.testтеж працює.
Переадресуйте порт вручну
Розділ із назвою «Переадресуйте порт вручну»Додати порт унизу панелі зіставляє порт іще до того, як щось почне його слухати (або незалежно від того, чи слухає воно). Ручна переадресація зберігає свою адресу, поки ваш сервер перезапускається, — рядок показує не слухає, доки сервер не повернеться, — тоді як автопереадресації зникають разом зі своїм портом. У хост-шелі ви також можете задати інший локальний порт.
Як зберігається ізоляція
Розділ із назвою «Як зберігається ізоляція»Порти прив’язані до робочого простору та простору. Власна карта портів гіпервізора фіксується під час завантаження машини, тож Terminal (VM) їде двома вузькими каналами, які контролює сервер: одним заздалегідь створеним вхідним каналом у гостя, який відмовляється з’єднуватися з будь-яким портом, який гість насправді не слухає, і зворотними тунелями, які сервер тримає відкритими для Browser (VM) та Android. Хост-шел ніколи не сканує всю машину. Усередині гостя ніколи не створюють слухача, якого туди не поставив сервер, і все згортається разом із терміналом або rig. Дизайн пояснено в Rigs та ізольовані середовища; точні зарезервовані порти й правила доменів — у довідці з rigs.
Пов’язане
Розділ із назвою «Пов’язане»- Дати агенту машину для тестів — відкриття, спостереження й перехоплення керування rig
- Довідка з rigs — зарезервовані порти, dev-TLD, типові значення