Shadowsocks


Shadowsocks is a free and open-source encryption protocol project, widely used in mainland China to circumvent Internet censorship. It was created in 2012 by a Chinese programmer named "clowwindy", and multiple implementations of the protocol have been made available since. Shadowsocks is not a proxy on its own, but typically, the client software will connect to a third party socks5 proxy, speaking the shadowsocks language on the machine it is running on, which internet traffic can then be directed towards, similarly to an SSH tunnel. Unlike an SSH tunnel, shadowsocks can also proxy UDP traffic.

Takedown

On 22 August 2015, "clowwindy" announced in a GitHub thread that they had been contacted by the police and could no longer maintain the project. The code of the project was subsequently branched with a removal notice. Three days later on 25 August, another proxy application, GoAgent, also had its GitHub repository removed. The removal of the projects was met with media attention, with news outlets speculating about the possible connection between the takedowns and a DDoS targeting GitHub which happened several days later. Danny O'Brien, from Electronic Frontier Foundation, published a statement on the matter.
Despite the takedown, collaborators of the project have continued with the development of the project.

Server implementations

The original Python implementation can still be installed with Pip, but the contents of its GitHub repository have been removed. Other server implementations include one in Go, Rust, C using the event loop library, C++ with a Qt GUI, and Perl. The Go and Perl implementations are not updated regularly and may be abandoned.

Client implementations

All of the server implementations listed above also support operating in client mode. There are also client-only implementations available for Windows, macOS, Android, and iOS. Many clients, including shadowsocks-win and shadowsocks-android, support redirecting all system traffic over Shadowsocks, not just applications that have been explicitly configured to do so, allowing Shadowsocks to be used similarly to a VPN. If an application doesn't support proxy servers, a proxifier can be used to redirect the application to the Shadowsocks client. Some proxifiers, such as Proxycap, support Shadowsocks directly, thus avoiding the need for a Shadowsocks client.

Net::Shadowsocks

Net::Shadowsocks is name of the Perl implementation of Shadowsocks protocol client and server available on CPAN.

ShadowsocksR

ShadowsocksR is a fork of the original project, claimed to be superior in terms of security and stability. Upon release, it was found to violate the General Public License by not having the source code of the C# client available. It was also criticized for its solution to the alleged security issues in the source project. Shadowsocks is currently under development, while ShadowsocksR stopped.

Similar projects

Shadowsocks is similar to The Tor Project's Pluggable Transport idea. They also both use a socks proxy interface. Whereas Shadowsocks is simpler, Obfs4 is more obfuscated. Unlike Obfs4, Shadowsocks is not resistant to Active Probing. The most similar Pluggable Transport to Shadowsocks is Obfs3.