What is it

It creates tunnels using http protocol. It is useful to bypass restrictive firewalls or proxies. It uses two techniques, the well known CONNECT technique as well as a BOSH-like implementation. It bypass most firewalls (as requests are valid HTTP requests)  and proxies in their most secure configurations.

How to run

To create a tunnel a user can run httptunnel_server at server where tunnelized service is started and httptunnel_client where the client of the service is used. The client must connect to port where httptunnel_client is started in order to use a tunnelized connection.

httptunnel_client -port <local_port> -http_host <http_host> -http_port <http_port> [-proxy_host <proxy_host> -proxy_port <proxy_port>] [-proxy_user  <proxy_user> -proxy_pass <proxy_pass>]

port: where the httptunnel client will listen for tunnelled connections
http_host: the hostname or ip where httptunnel_tunnel is running
http_port: the port where httptunnel_tunnel is running
proxy_host: the proxy host in case of necessary
proxy_port: the proxy port in case of necessary
proxy_user:  the proxy username in case of proxy authentication
proxy_pass: the proxy password in case of proxy authentication

httptunnel_server -http_port <http_port> -client_port <client_port> -client_host <client_host>

http_port: the port where httptunnel_server listens
client_port: the port where destination service is bound
client_host: the hostname or ip where destination service is running

Example: Tunnel a ssh connection

Configuration at host (

httptunnel_server -http_port 80 -client_port 22 -client_host

Configuration at client:

httptunnel_client -port 22 -http_host -http_port 80 -proxy_host -proxy_port 3128

– to start a ssh connection will run at client:


which will start a tunneled ssh connection at


At this moment only windows compile system is provided (VS2008) but linux/unix
compile system will be available soon.


A solution ‘httptunnel.sln’ is provided.
Portable Components C++ library is a prerequisite.
It must be installed at same directory where httptunel is located in and it must be named as ‘poco’.
+ – httptunnel
+ – poco