Ngrok больше не тот: практическое руководство по восстановлению работы!

Сегодня ngrok отказался запускаться в связи со сменой мажорной версии на 3.*. На официальном сайте пишут, что С 15 января 2024 года старые версии агента больше не поддерживаются, но реально они работали до последнего времени. По сообщению разработчиков обновление призвано улучшить безопасность и производительность, но обновления, видимо нужны и для того, чтобы перевести больше пользователей на платные тарифы.
С обновлением старые команды запуска перестали работать. Бесплатный тариф теперь предлагает еще более ограниченные возможности, в частности, использование только localhost как локального домена. Это существенно сузило привычные границы использования ngrok, особенно для тех, кто привык к более гибким настройкам в версии 2.х.
Для запуска в новых условиях на бесплатном тарифе, команда `ngrok http 80` теперь кажется основным способом для быстрого старта. Ключ `--host-header=rewrite` дает возможность пробросить имя локального хоста и получить его, а не временный домен в переменных сервера. Для тех, кто работает с OpenServer и имеет свои локальные домены, потребуется добавить два алиаса (в Настройки-> Алиасы):
- `*.ngrok-free.app => <Ваш домен>`
- `localhost => <Ваш домен>`

Для других систем, нужно сделать аналогичные по смыслу алиасы.
Таким образом, при обращении к временному домену, например, `https://a292-195-74-87-204.ngrok-free.app/`, будет открываться ваш локальный домен через `http://localhost`, что дает возможность продолжить работу с минимальными изменениями.
Хотя стало чуть менее удобно, всё ещё работает. Тем, кто ещё не установил ngrok, может быть интересен российский аналог (не реклама) xTunnel, предлагающий альтернативу ngrok. Но я, пока, продолжаю оставаться с ngrok, т.к. по адресу http://localhost:4040/api/tunnels можно получить XML с описанием и текущим временным HTTPS адресом в ['tunnels'][0]['public_url'] или ['tunnels'][1]['public_url'] и сразу, к примеру, передернуть хуки для ботов, в xTunnel такого пока нет, как и мониторинга входящих запросов http://127.0.0.1:4040/inspect/http позволяющего на лету видеть многие проблемы при разработке.
Пользуясь случаем хочу всех, кто интересуется разработкой чат-ботов, пригласить на свой пустой, давно созданный канал, который я таки решил начать вести. В канале будут неочевидные, но интересные решения и их обсуждение. Добро пожаловать https://t.me/botiCheLife )

0
20 комментариев
Написать комментарий...
Слава Рюмин

При виде сложных кусков кода мой dnssec завис

Ответить
Развернуть ветку
Anastasia

плюсую :)

Ответить
Развернуть ветку
Андро БотИчел
Автор

Понимаю )

Ответить
Развернуть ветку
Артем М.

Если задача еще актуальна - можно воспользоваться https://devhook.ru
Это альтернатива ngrok, только не требует установки отдельного клиента. Но если нужна структура входящего webhook запроса - можно просто отлавливать без запуска тунеля.

Ответить
Развернуть ветку
Андро БотИчел
Автор

Спасибо! Отличное решение! Особенно, если не системно нужно, а именно поймать, посмотреть — вообще мастхэв! JSON не форматированный, не очень удобно, если поставите (это же ваша разработка?) форматер, будет удобнее, в том же ngrok сразу форматируется json

Ответить
Развернуть ветку
Артем М.

Спасибо за приятные слова. Да, это мой пет-проект. Планы большие - форматированный вывод в json/html, возможность изменить ответ сервера без тунеля, экспорт в различные форматы, поддержка файлов и аутентификация (чтоб только владелец мог зайти на уже выделенный домен)

Ответить
Развернуть ветку
Андро БотИчел
Автор

Артем, отличный проект! Да, мне кажется, что да — аутентификация нужна (а там можно и о нескольких платных туннелях подумать =)
Форматированный вывод — да, быстрее «на лету» читается, важно!
Мне в ngrok очень полезно «Replay» — передернуть запрос не инициируя цепочку (на отладке удобно проверять пофиксилось-ли. И «Summary» — если есть ошибки, они туда вываливаются, не нужно в логи ходить, тоже очень ускоряет. Ну и «Clear requests» — чтобы не засорялось пространство, т.к. в большинстве случаев старые не нужны. Остальным не пользуюсь практически. Подозреваю, что на некоторых задачах редактирование «на лету» тоже очень удобно может быть, но у меня пока таких потребностей нет.

Ответить
Развернуть ветку
Артем М.

Очень полезный фидбэк. Благодарю. Replay и очистка - обязательно будут. Единственное что не совсем понятно - что за summary? Примерно как в консоли браузера?

Ответить
Развернуть ветку
Андро БотИчел
Автор

Вот, нашел. В правой половине, у ngrok верхний «Summary» это запрос в JSON, а ниже «Summary» ответ от локального сервера, это даже не консольный вывод получается, а стандартный. Если ответ корректный и только заголовком, то он не появляется, а если ошибки есть и они не подавлены, то показывает стандартный вывод. При отладке очень удобно. Если не смог объяснить, стукнитесь в телегу @Botichel больше скринов накидаю )

Ответить
Развернуть ветку
Артем М.

Понял. Именно эту фичу обещать пока не буду, но обязательно подумаю как сделать это удобно. Спасибо огромное за фидбэк.

Ответить
Развернуть ветку
Андро БотИчел
Автор

У вас интересный проект, интересно помогать! Подписался на вас, буду следить за развитием и может прейду на вашу сторону! )

Ответить
Развернуть ветку
Артем М.

Привет. Просто хотел написать что добавил повторение запросов и форматированный вывод. Пока только json, но в планы добавил html с другими форматами. Очистку списка запросов добавлю в течении следующих одной-двух недель.

Ответить
Развернуть ветку
Андро БотИчел
Автор

Ну прям красиво стало! Удобно же, когда JSON читабельный сразу, при отладке это здорово экономит время. И повтор запросов работает, круто!

Ответить
Развернуть ветку
Артем М.

Спасибо :)

Ответить
Развернуть ветку
Васильев Алексей

"передернуть хуки для ботов" - что это значит?)

Ответить
Развернуть ветку
Андро БотИчел
Автор

При разработке чат-ботов, есть разные методы их общения с серверами Телеграм. Я, обычно, использую метод веб-хуков, если у меня есть сообщение я отправляю его серверу, если у сервера есть сообщение для бота он присылает мне веб-хук. Чтобы он знал куда мне присылать хук, ему нужно объявить этот адрес. Передернуть — имелось ввиду обновить, установить новый адрес для хука. Тк Ngrok дает временный адрес, то после каждой перезагрузки нужно проводить эту операцию, в статье описано как это автоматизировать )

Ответить
Развернуть ветку
Евгений Ма

Расскажи-ка мне, дружок
Что такое Ngrok...

Ничего не понял, но написано чётко и уверено.

Ответить
Развернуть ветку
Андро БотИчел
Автор

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

Ответить
Развернуть ветку
Андро БотИчел
Автор

https://a292-195-74-87-204.ngrok-free.app пересылает запросы к вашему компьютеру, ваш компьютер пересылает запросы к запущенному локальному серверу, в результате сайт работающий локально виден по адресу https://a292-195-74-87-204.ngrok-free.app
Боевые задачи это не решает, а отладка и показы - вполне. Можно править код в редакторе и смотрящий обновив браузер будет видеть результаты )

Ответить
Развернуть ветку
Вдумчиво о продажах

Умеют же люди)

Ответить
Развернуть ветку
17 комментариев
Раскрывать всегда