Open bjin opened 1 year ago
Please consider making it extensible for alternative padding formats, because the current one used in naiveproxy is very naive and is planned to be replaced soon.
the current one used in naiveproxy is very naive and is planned to be replaced soon.
I see. I will sure follow changes made to naiveproxy
, and since the user base is quite small for hprox
, making backward incompatible changes is also possible.
That being said, is there any details you could share about the upcoming changes?
I'm considering adding a new padding frame format and the negotiable process for it. The current padding frame has only one byte to encode padding size. Stronger obfuscation needs two bytes to encode padding size. But that's an incompatible protocol change. So some http headers can help negotiating a protocol version supported by both the client and server.
Currently it's hard coded to pad only 8 packets. Also considering making that flexible.
I recently added naiveproxy payload padding to hprox, a lightweight HTTP proxy server written in Haskell. In case anyone is looking for alternative solutions other than Caddy, please take a look.
The following is an usage example:
Then
hprox
will listen on TCP port 443 for HTTPS (bothHTTP/1.1
andHTTP/2
) and UDP port 8443 for QUIC (HTTP/3
), using domain nameexample.com
with certificates issued by acme.sh.hprox
will sendServer: Caddy
header in response, and fallback tohttp://archive.ubuntu.com
for non-proxy connections. Naiveproxy compatible padding will be enabled along with probe resistance. Also, password file./hprox_users
will be Argon2-hashed after first run.After that,
naiveproxy
can be configured to connect to eitherhttps://user:pass@example.com:443
orquic://user:pass@example.com:8443
.hprox
also supports DNS-over-HTTPS and Websocket redirection, please check the README files for features and detailed usage.Currently only static binary forlinux-x86_64
is provided in releases page, buthprox
should compile fine on both Linux and macOS (just remember to add--flag hprox:quic
to enableQUIC
support).hprox
now provides binary for Linux (x86_64/aarch64), Windows (x86_64) and macOS (aarch64). See GitHub releases page.