-
Notifications
You must be signed in to change notification settings - Fork 601
Closed
Labels
Description
Shadowsocks Improvement Proposal 001
SIP001 - Allow header obfuscating to cheat on QoS.
Recently, QoS of some ISPs becomes unreasonable. A cheap way to solve this problem is header obfuscating, which inserts some fake headers before shadowsocks handshake packets.
For example, before a shadowsocks request, we insert this HTTP GET header:
POST / HTTP/1.1\r\n
Host: www.baidu.com:8388\r\n
User-Agent: curl/7.45.1\r\n
Accept: */*\r\n
Content-Type: application/octet-stream\r\n
Content-Length: 176\r\n
\r\n
Similarly, we insert this HTTP header before a shadowsocks response.
HTTP/1.1 200 OK\r\n
Server: nginx/1.0.2\r\n
Date: Tue, 13 Dec 2016 13:25:12 GMT\r\n
Content-Type: application/octet-stream\r\n
Content-Length: 176\r\n
Connection: keep-alive\r\n
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform\r\n
Pragma: no-cache\r\n
\r\n
With this SIP, we may cheat on most of QoS mechanisms, avoiding QoS related packets dropping or bandwidth limit.
A demonstration can be found here: https://github.com/shadowsocks/shadowsocks-libev/tree/obfs
Any suggestion is welcome.
v3aqb, renjie45, popeyelau, neroxps, Bob-cheng and 6 more