This is a free reimplementation of the ngrok v2 protocol. The information has been obtained by reverse-engineering the official client.
usage: ngrok.py [--auth-token <auth_token>] <protocol> <port> [addr]
<protocol> can be one of `https`, `http`, `tls`, `tcp`.
<port> is the target port on your machine.
<addr> (optional) is the reserved remote address, if any.
ngrok.connect(auth_token="") -> ngrok.Ngrok
Creates a new connection to ngrok. auth_token
is an optional authentication token.
Ngrok.bind_http(self, addr=None, proto="https") -> str
Requests a tunnel, according to the protocol in proto
(may be one of https
, http
, tls
). addr
, if supplied, must be a reserved hostname for the current user.
Ngrok.bind_tcp(self, addr=None)
Requests a TCP tunnel. addr
, is supplied, must be a (host, port)
tuple corresponding to a reserved TCP port for the current user.
Returns a (host, port)
pair for the TCP port that has been bound to.
Ngrok.accept(self)
Waits for an incoming connection.
Returns a tuple (sock, (host, port))
, where sock
is a subclass of io.RawIOBase
(NOT socket.socket
), and (host, port)
corresponds to the client's TCP port.