Intercept outgoing network TCP/TLS connections
OTHER License
@gr2m/net-interceptor
Intercept outgoing network TCP/TLS connections
npm install @gr2m/net-interceptor
import netInterceptor from "@gr2m/net-interceptor";
netInterceptor.start();
netInterceptor.on("connect", (socket, options, bypass) => {
// call bypass() to continue the unintercepted connection
if (options.host === "db.example.com") return bypass();
});
netInterceptor.on("connection", (socket) => {
// do something with the socket
socket.write("Hello from @gr2m/net-interceptor!");
});
netInterceptor
is a singleton API.
netInterceptor.start()
Hooks into the request life cycle and emits connect
events for each socket that connects to a server as well as connection
events for all intercepted sockets.
netInterceptor.stop()
Stops interceptiong. No connect
or connection
events will be emitted.
netInterceptor.addListener(event, listener)
connect
eventThe listener
callback is called with 3 arguments
socket
: the intercepted net or TLS socketoptions
: socket options: {port, /* host, localAddress, localPort, family, allowHalfOpen */}
bypass
: a function to call to continue the unintercepted connectionconnection
eventThe listener
callback is called with 2 arguments
socket
: the response net or TLS socketoptions
: socket options: {port, /* host, localAddress, localPort, family, allowHalfOpen */}
netInterceptor.removeListener(event, listener)
Remove an event listener.
netInterceptor.removeAllListeners(event)
Removes all event listeners for the given event. Or when called without the event
argument, remove all listeners for all events.
kRemote
import { kRemote } from "@gr2m/net-interceptor";
requestSocket[kRemote]; // response socket
kRemote
is a symbol that can be used to access the response socket from the request socket when handling intercepted requests.
@gr2m/http-interceptor
- Intercept and mock outgoing http/https requests@gr2m/http-recorder
- Library agnostic in-process recording of http(s) requests and responsesOnce started, netInterceptor
hooks itself into the net.connect
and the tls.connect
methods
When a socket is intercepted, we
connect
event with the mock socketbypass()
was called in the connect
event listener, we let the socket continue uninterceptedbypass()
was not called
connect
on both mock socketsand then emit a record
event with the request
, response
, requestBody
and responseBody
options.
See CONTRIBUTING.md
@gr2m/net-interceptor
is built upon code and concepts from moll/node-mitm by Andri Möll. Monday Calendar supported that engineering work.
Gregor Martynus removed all http(s)
-related code and made its focus on intercepting connections that use the lower-level net
and tls
modules.