Convert Figma logo to code with AI

v2ray logov2ray-core

A platform for building proxies to bypass network restrictions.

45,242
8,932
45,242
14

Top Related Projects

A Rust port of shadowsocks

18,819

An unidentifiable mechanism that helps you bypass GFW.

24,231

Xray, Penetrates Everything. Also the best v2ray-core, with XTLS support. Fully compatible configuration.

Go实现的Trojan代理,支持多路复用/路由功能/CDN中转/Shadowsocks混淆插件,多平台,无依赖。A Trojan proxy written in Go. An unidentifiable mechanism that helps you bypass GFW. https://p4gefau1t.github.io/trojan-go/

Make a fortune quietly

15,747

GO Simple Tunnel - a simple tunnel written in golang

Quick Overview

V2Ray is a platform for building proxies to bypass network restrictions. It's designed to be a unified platform for anti-censorship, supporting various protocols and transport methods. V2Ray aims to provide a flexible and secure way to route network traffic.

Pros

  • Supports multiple protocols (VMess, Shadowsocks, Trojan, etc.)
  • Highly configurable and customizable
  • Strong focus on security and privacy
  • Cross-platform support (Windows, macOS, Linux, Android, iOS)

Cons

  • Steep learning curve for beginners
  • Complex configuration process
  • Limited user-friendly GUI options
  • Can be resource-intensive for high-traffic scenarios

Code Examples

  1. Basic client configuration:
{
  "inbounds": [{
    "port": 1080,
    "protocol": "socks",
    "sniffing": {
      "enabled": true,
      "destOverride": ["http", "tls"]
    },
    "settings": {
      "auth": "noauth"
    }
  }],
  "outbounds": [{
    "protocol": "vmess",
    "settings": {
      "vnext": [{
        "address": "server_address",
        "port": 443,
        "users": [{ "id": "user_id" }]
      }]
    }
  }]
}

This example sets up a basic SOCKS5 proxy client that connects to a VMess server.

  1. Multi-protocol server configuration:
{
  "inbounds": [
    {
      "port": 443,
      "protocol": "vmess",
      "settings": {
        "clients": [{ "id": "user_id" }]
      },
      "streamSettings": {
        "network": "tcp",
        "security": "tls",
        "tlsSettings": {
          "certificates": [{
            "certificateFile": "/path/to/certificate.crt",
            "keyFile": "/path/to/private.key"
          }]
        }
      }
    },
    {
      "port": 80,
      "protocol": "shadowsocks",
      "settings": {
        "method": "aes-256-gcm",
        "password": "your_password"
      }
    }
  ],
  "outbounds": [{
    "protocol": "freedom"
  }]
}

This example configures a server to accept both VMess (over TLS) and Shadowsocks connections.

Getting Started

  1. Download the latest release for your platform from the official GitHub repository.
  2. Extract the archive and locate the v2ray executable.
  3. Create a configuration file (e.g., config.json) based on the examples provided above.
  4. Run V2Ray with the command: ./v2ray -config config.json
  5. Configure your applications or system to use the proxy (usually localhost:1080 for SOCKS5).

For more detailed instructions and advanced configurations, refer to the official documentation.

Competitor Comparisons

A Rust port of shadowsocks

Pros of shadowsocks-rust

  • Written in Rust, offering better memory safety and performance
  • Lightweight and focused solely on the Shadowsocks protocol
  • Easier to set up and configure for basic proxy needs

Cons of shadowsocks-rust

  • Limited feature set compared to v2ray-core's extensive capabilities
  • Less flexibility in terms of protocol support and advanced networking options
  • Smaller community and ecosystem around the project

Code Comparison

shadowsocks-rust:

let server = ServerConfig::load_from_str(&config_str)?;
let mut service = ServiceContext::new(server);
service.run().await?;

v2ray-core:

config, err := core.LoadConfig("json", configBytes)
if err != nil {
    return nil, newError("failed to read config file").Base(err)
}
server, err := core.New(config)

Both projects implement proxy functionality, but v2ray-core offers a more comprehensive networking solution with support for multiple protocols and advanced features. shadowsocks-rust focuses specifically on the Shadowsocks protocol, providing a simpler and more lightweight option for users who only need this specific functionality.

v2ray-core is written in Go, while shadowsocks-rust leverages the Rust programming language for improved performance and memory safety. This makes shadowsocks-rust potentially more efficient in terms of resource usage, but v2ray-core's broader feature set may be more appealing for users requiring advanced networking capabilities.

18,819

An unidentifiable mechanism that helps you bypass GFW.

Pros of Trojan

  • Simpler design and implementation, making it easier to set up and maintain
  • Lower resource consumption, potentially better performance on low-end devices
  • Harder to detect due to its mimicry of HTTPS traffic

Cons of Trojan

  • Less flexible with fewer protocol options compared to V2Ray
  • Limited built-in features, requiring additional tools for advanced functionalities
  • Smaller community and ecosystem, potentially slower development and support

Code Comparison

V2Ray (Go):

type ServerConfig struct {
    Address *Address  `json:"address"`
    Port    uint16    `json:"port"`
    Users   []*User   `json:"users"`
}

Trojan (C++):

struct Config {
    std::string local_addr;
    uint16_t local_port;
    std::string remote_addr;
    uint16_t remote_port;
    std::string password;
};

Both projects use configuration structures, but V2Ray's approach is more modular and extensible, while Trojan's is simpler and more straightforward. V2Ray supports multiple users, whereas Trojan focuses on a single password-based authentication.

24,231

Xray, Penetrates Everything. Also the best v2ray-core, with XTLS support. Fully compatible configuration.

Pros of Xray-core

  • Enhanced performance with XTLS protocol support
  • More frequent updates and active development
  • Additional features like VLESS and Trojan protocols

Cons of Xray-core

  • Potentially less stable due to rapid development
  • May have compatibility issues with some v2ray clients

Code Comparison

v2ray-core:

type ServerConfig struct {
    Address *Address  `json:"address"`
    Port    uint16    `json:"port"`
    Network *Network  `json:"network"`
}

Xray-core:

type ServerConfig struct {
    Address *Address  `json:"address"`
    Port    uint16    `json:"port"`
    Network *Network  `json:"network"`
    Stream  *StreamConfig `json:"streamSettings"`
}

The main difference in the code structure is the addition of the Stream field in Xray-core's ServerConfig, which allows for more flexible stream settings configuration.

Both projects share similar core functionality, but Xray-core builds upon v2ray-core with additional features and optimizations. While Xray-core offers improved performance and more frequent updates, it may be less stable due to its rapid development cycle. Users should consider their specific needs and priorities when choosing between the two projects.

Go实现的Trojan代理,支持多路复用/路由功能/CDN中转/Shadowsocks混淆插件,多平台,无依赖。A Trojan proxy written in Go. An unidentifiable mechanism that helps you bypass GFW. https://p4gefau1t.github.io/trojan-go/

Pros of trojan-go

  • Simpler and more lightweight, focusing specifically on the Trojan protocol
  • Potentially faster performance due to its specialized nature
  • Easier to configure and deploy for users primarily interested in Trojan

Cons of trojan-go

  • Less versatile compared to v2ray-core's multi-protocol support
  • Smaller community and potentially slower development cycle
  • May lack some advanced features available in v2ray-core

Code Comparison

v2ray-core (Go):

type ServerConfig struct {
    Address *Address
    Port    uint16
    Users   []*protocol.User
}

trojan-go (Go):

type ServerConfig struct {
    LocalAddr  string `json:"local_addr"`
    LocalPort  int    `json:"local_port"`
    RemoteAddr string `json:"remote_addr"`
    RemotePort int    `json:"remote_port"`
}

Both projects use Go and have similar configuration structures, but v2ray-core's approach is more modular and extensible, reflecting its multi-protocol nature. trojan-go's configuration is more straightforward, focusing on essential Trojan protocol parameters.

Make a fortune quietly

Pros of naiveproxy

  • Simpler setup and configuration process
  • Better performance in high-latency environments
  • More resistant to detection and blocking

Cons of naiveproxy

  • Less flexible and customizable than v2ray-core
  • Smaller community and fewer third-party tools
  • Limited protocol support compared to v2ray-core

Code Comparison

v2ray-core:

type Server struct {
    config *Config
    ohm    outbound.Manager
    router routing.Router
    ihm    inbound.Manager
}

naiveproxy:

class NaiveProxy : public net::ProxyResolver::RequestClient {
 public:
  NaiveProxy(const net::ProxyConfig& proxy_config,
             net::NetworkTrafficAnnotationTag traffic_annotation);
  ~NaiveProxy() override;

The code snippets show that v2ray-core is written in Go and has a more modular structure, while naiveproxy is written in C++ and focuses on integrating with the Chromium network stack.

v2ray-core offers more flexibility with its component-based architecture, allowing for easier customization and extension. naiveproxy, on the other hand, provides a simpler and more streamlined approach, which can be beneficial for users who prioritize ease of use and performance in specific scenarios.

15,747

GO Simple Tunnel - a simple tunnel written in golang

Pros of gost

  • Supports a wider range of protocols, including HTTP, HTTPS, SOCKS4(A), SOCKS5, and more
  • Simpler configuration and setup process
  • Lighter resource usage, making it suitable for low-powered devices

Cons of gost

  • Less active development and community support compared to v2ray-core
  • Fewer advanced features and customization options
  • Limited documentation and tutorials available

Code Comparison

v2ray-core:

type Server struct {
    access     sync.Mutex
    features   []feature.Feature
    featureSet map[feature.Feature][]feature.Feature
}

gost:

type Server struct {
    Listener net.Listener
    Handler  Handler
    Options  *ServerOptions
}

The code snippets show that v2ray-core uses a more complex structure with features and feature sets, while gost has a simpler server structure focusing on listener, handler, and options.

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

Move To https://github.com/v2fly/v2ray-core


Project V

GitHub Test Badge codecov.io GoDoc codebeat Downloads Downloads

Project V is a set of network tools that help you to build your own computer network. It secures your network connections and thus protects your privacy. See our website for more information.

License

The MIT License (MIT)

Credits

This repo relies on the following third-party projects: