Convert Figma logo to code with AI

shadowsocks logoshadowsocks-windows

A C# port of shadowsocks

58,291
16,402
58,291
179

Top Related Projects

A shadowsocks client for Android

A platform for building proxies to bypass network restrictions.

18,907

An unidentifiable mechanism that helps you bypass GFW.

14,563

Lantern官方版本下载 蓝灯 翻墙 代理 科学上网 外网 加速器 梯子 路由 - Быстрый, надежный и безопасный доступ к открытому интернету - lantern proxy vpn censorship-circumvention censorship gfw accelerator پراکسی لنترن، ضدسانسور، امن، قابل اعتماد و پرسرعت

13,893

A Quantum-Safe Secure Tunnel based on QPP, KCP, FEC, and N:M multiplexing.

Quick Overview

Shadowsocks-windows is an open-source client for the Shadowsocks proxy protocol, designed for Windows operating systems. It provides a user-friendly graphical interface for configuring and managing Shadowsocks connections, allowing users to bypass internet censorship and access restricted content.

Pros

  • Easy-to-use graphical interface for managing Shadowsocks connections
  • Supports multiple server configurations and quick switching between them
  • Regular updates and active community support
  • Lightweight and efficient, with minimal system resource usage

Cons

  • Limited to Windows operating systems
  • Requires a Shadowsocks server to connect to (not included)
  • May be blocked or restricted in some regions due to its nature as a circumvention tool
  • Limited advanced features compared to some other Shadowsocks clients

Getting Started

  1. Download the latest release from the GitHub repository.
  2. Extract the zip file to a desired location on your computer.
  3. Run the Shadowsocks.exe file to start the application.
  4. Click on the Shadowsocks icon in the system tray to open the configuration menu.
  5. Add a new server configuration by clicking the "+" button and entering the server details (address, port, password, and encryption method).
  6. Select the newly added server and click "OK" to connect.
  7. Configure your browser or applications to use the local SOCKS5 proxy (usually 127.0.0.1:1080).

Note: This is not a code library, so code examples are not applicable.

Competitor Comparisons

A shadowsocks client for Android

Pros of shadowsocks-android

  • Native Android implementation, optimized for mobile devices
  • Supports VPN mode for system-wide proxy without root
  • Integrated QR code scanner for easy server configuration

Cons of shadowsocks-android

  • Limited to Android platform, not suitable for desktop users
  • May have higher battery consumption due to constant VPN connection
  • Fewer advanced features compared to the Windows version

Code Comparison

shadowsocks-android:

override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
    if (BaseService.usingVpnMode) {
        if (prepare(this) != null) {
            startActivity(Intent(this, VpnRequestActivity::class.java)
                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK))
        } else {
            startVpn()
        }
    }
    return Service.START_STICKY
}

shadowsocks-windows:

private void UpdateSystemProxy()
{
    SystemProxy.Update(config, _enabled);
    UpdatePACFromGFWList();
    UpdateChainedProxyMode();
}

The Android version focuses on VPN mode implementation, while the Windows version handles system proxy settings and PAC updates. Both repositories are actively maintained and provide Shadowsocks functionality for their respective platforms, with platform-specific optimizations and features.

A platform for building proxies to bypass network restrictions.

Pros of v2ray-core

  • More advanced protocol support, including VMess, VLESS, and Trojan
  • Better traffic obfuscation and anti-detection capabilities
  • Highly customizable and flexible configuration options

Cons of v2ray-core

  • Steeper learning curve due to increased complexity
  • Higher resource consumption compared to Shadowsocks
  • Potentially slower connection speeds in some scenarios

Code Comparison

v2ray-core (Go):

type User struct {
    Account     Account
    Email       string
    Level       uint32
    SecuritySettings *SecurityConfig
}

shadowsocks-windows (C#):

public class Server
{
    public string server;
    public int server_port;
    public string password;
    public string method;
    public string remarks;
}

The code snippets demonstrate the difference in complexity between the two projects. v2ray-core's User struct includes more advanced features like account management and security settings, while shadowsocks-windows' Server class focuses on basic connection parameters.

v2ray-core offers more sophisticated functionality and customization options, making it suitable for advanced users and complex network environments. However, this comes at the cost of increased complexity and potentially higher resource usage. shadowsocks-windows, on the other hand, provides a simpler and more straightforward approach, which may be preferable for users seeking ease of use and lower system requirements.

18,907

An unidentifiable mechanism that helps you bypass GFW.

Pros of Trojan

  • Better obfuscation and resistance to deep packet inspection
  • Simpler protocol design, potentially leading to better performance
  • Supports both TCP and UDP traffic

Cons of Trojan

  • Less widespread adoption compared to Shadowsocks
  • Fewer client implementations available
  • May require more complex server setup

Code Comparison

Trojan (C++):

std::string TrojanSession::generate(const std::string& password) {
    uint8_t hash[SHA224_DIGEST_LENGTH];
    SHA224((const uint8_t*)password.c_str(), password.length(), hash);
    return Config::hexify(hash, SHA224_DIGEST_LENGTH);
}

Shadowsocks-Windows (C#):

public static string GetPassword(string password)
{
    byte[] passwordBytes = Encoding.UTF8.GetBytes(password);
    byte[] hash = MD5.Create().ComputeHash(passwordBytes);
    return Convert.ToBase64String(hash);
}

Both projects implement secure password hashing, but Trojan uses SHA-224 while Shadowsocks-Windows uses MD5. Trojan's approach is generally considered more secure due to MD5's known vulnerabilities.

14,563

Lantern官方版本下载 蓝灯 翻墙 代理 科学上网 外网 加速器 梯子 路由 - Быстрый, надежный и безопасный доступ к открытому интернету - lantern proxy vpn censorship-circumvention censorship gfw accelerator پراکسی لنترن، ضدسانسور، امن، قابل اعتماد و پرسرعت

Pros of Lantern

  • More user-friendly interface, making it easier for non-technical users
  • Built-in content delivery network (CDN) for faster access to blocked content
  • Supports multiple protocols, including HTTP, HTTPS, and SOCKS5

Cons of Lantern

  • Less customizable than Shadowsocks-Windows
  • Potential privacy concerns due to centralized infrastructure
  • May be less effective in highly restricted networks

Code Comparison

Lantern (Go):

func (c *Client) dialDirect(addr string) (net.Conn, error) {
    conn, err := net.DialTimeout("tcp", addr, 10*time.Second)
    if err != nil {
        return nil, err
    }
    return conn, nil
}

Shadowsocks-Windows (C#):

private void Connect()
{
    IPEndPoint remoteEP = null;
    remoteEP = new IPEndPoint(server.ipAddress, server.port);
    socket = new Socket(remoteEP.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
    socket.Connect(remoteEP);
}

Both projects aim to provide secure and unrestricted internet access, but they differ in their approach and implementation. Lantern focuses on ease of use and speed, while Shadowsocks-Windows offers more customization options and potentially better performance in highly restricted environments. The code snippets demonstrate the different languages used (Go for Lantern, C# for Shadowsocks-Windows) and their respective connection methods.

13,893

A Quantum-Safe Secure Tunnel based on QPP, KCP, FEC, and N:M multiplexing.

Pros of kcptun

  • Utilizes KCP protocol for improved network performance, especially in high-latency or lossy environments
  • Offers more advanced network optimization features and customization options
  • Can be used with various proxy protocols, not limited to Shadowsocks

Cons of kcptun

  • More complex setup and configuration process
  • Higher resource consumption due to additional protocol overhead
  • May require more frequent updates to maintain compatibility with changing network environments

Code Comparison

kcptun (Go):

func (l *Listener) AcceptKCP() (*UDPSession, error) {
    var timeout <-chan time.Time
    if l.block != nil {
        timeout = time.After(l.block)
    }
    select {
    case conn := <-l.chAccepts:
        return conn, nil
    case <-timeout:
        return nil, &errTimeout{}
    }
}

shadowsocks-windows (C#):

private void UpdateServers()
{
    foreach (var server in _modifiedConfiguration.configs)
    {
        _servers.Add(new Server(server));
    }
    _currentServer = _servers.FirstOrDefault();
}

The code snippets demonstrate different aspects of each project. kcptun focuses on network protocol implementation, while shadowsocks-windows handles server configuration management.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

[logo] Shadowsocks for Windows

Build Release

Features

  • Connect to Shadowsocks servers.
  • Automatically set system proxy.
  • SIP002 URL scheme.
  • SIP003 plugins.
  • SIP008 online configuration delivery.

Downloads

Download from releases.

Usage

  • 🚀

PAC

  • The PAC rules are generated from the geosite database in v2fly/domain-list-community.
  • Generation modes: whitelist mode and blacklist mode.
  • Domain groups: geositeDirectGroups and geositeProxiedGroups.
    • geositeDirectGroups is initialized with cn and geolocation-!cn@cn.
    • geositeProxiedGroups is initialized with geolocation-!cn.
  • To switch between different modes, modify the geositePreferDirect property in gui-config.json
    • When geositePreferDirect is false (default), PAC works in whitelist mode. Exception rules are generated from geositeDirectGroups. Unmatched domains goes through the proxy.
    • When geositePreferDirect is true, PAC works in blacklist mode. Blocking rules are generated from geositeProxiedGroups. Exception rules are generated from geositeDirectGroups. Unmatched domains are connected to directly.
  • Starting from 4.3.0.0, shadowsocks-windows defaults to whitelist mode with Chinese domains excluded from connecting via the proxy.
  • The new default values make sure that:
    • When in whitelist mode, Chinese domains, including non-Chinese companies' Chinese CDNs, are connected to directly.
    • When in blacklist mode, only non-Chinese domains goes through the proxy. Chinese domains, as well as non-Chinese companies' Chinese CDNs, are connected to directly.

User-defined rules

  • To define your own PAC rules, it's recommended to use the user-rule.txt file.
  • You can also modify pac.txt directly. But your modifications won't persist after updating geosite from the upstream.

Development

  • IDE: Visual Studio 2019
  • Language: C# 9.0
  • SDK: .NET 5

Build

  1. Clone the repository recursively.
$ git clone --recursive https://github.com/shadowsocks/shadowsocks-windows.git
  1. Open the repository in VS2019, switch to the Release configuration, and build the solution.

Contribute

PR welcome

You can use the Source Browser to review code online.

License

Shadowsocks-windows is licensed under the GPLv3 license.

BouncyCastle.NetCore (MIT)       https://github.com/chrishaly/bc-csharp
Caseless.Fody (MIT)              https://github.com/Fody/Caseless
Costura.Fody (MIT)               https://github.com/Fody/Costura
Fody (MIT)                       https://github.com/Fody/Fody
GlobalHotKey (GPLv3)             https://github.com/kirmir/GlobalHotKey
MdXaml (MIT)                     https://github.com/whistyun/MdXaml
Newtonsoft.Json (MIT)            https://www.newtonsoft.com/json
Privoxy (GPLv2)                  https://www.privoxy.org
ReactiveUI.WPF (MIT)             https://github.com/reactiveui/ReactiveUI
ReactiveUI.Events.WPF (MIT)      https://github.com/reactiveui/ReactiveUI
ReactiveUI.Fody (MIT)            https://github.com/reactiveui/ReactiveUI
ReactiveUI.Validation (MIT)      https://github.com/reactiveui/ReactiveUI.Validation
WPFLocalizationExtension (MS-PL) https://github.com/XAMLMarkupExtensions/WPFLocalizationExtension/
ZXing.Net (Apache 2.0)           https://github.com/micjahn/ZXing.Net