Skip to content
HTTP tunnel implementation using Twisted for passing through restrictive firewalls.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


It's an HTTP Tunnel, not Proxy or something else.. You need at least one Proxy,
Tunnel, Gateway to talk with server:

              |   +--------+      +--------+   |
  Client      |   | tunnel |      | tunnel |   |      Gateway
  Proxy    <------+        +------+        +------->  Tunnel
  Tunnel      |   | client |      | server |   |      Proxy
              |   +--------+      +--------+   |
   (A)        +--------------------------------+       (B)

If (A) supports talking with CONNECT and (B) is capable of serving it, this can
be used to pass TCP streams (e.g SSL, SSH) although traffic passed between
tunnel endpoints are not CONNECT packets. Actually you can change shape of data
(adding encryption, authentication or fake headers reformatting) in
alterResponse() and alteredRequest(). If the firewall which you're trying to
bypass, has some limitations on TCP connections, you might want to change
connection pool options too, otherwise probably it is better to turn it off

`python install`

See `ashttpc --help` or `ashttps --help` and provide proper arguments according
to your network setup.

Assuming on your server machine, you have some proxy server on port 3128, run

`ashttps <server_port> -P -t -l t.log`

This will start server program listening on port <server_port> using twistd
daemonizer (switch -t) and passes `-l t.log` to it.

Then, on client machine run:

`ashttpc <client_port> <server_ip>:<server_port> -t`

Will launch client software listening on <client_port> and makes tunnel to
server. Softwares could use this tunnel now by using HTTP proxy<client_port>
You can’t perform that action at this time.