📜  v2ray - Java (1)

📅  最后修改于: 2023-12-03 15:05:47.375000             🧑  作者: Mango

V2ray - Java

V2ray是一个网络代理软件,支持多种协议和加密方式,利用其可以实现科学上网、穿墙等功能。 V2ray - Java是一个基于Java语言实现的V2ray客户端,它能够在Java虚拟机上运行,并提供友好的API接口。

特性
  • 支持多种协议(vmess, socks, http, shadowsocks等)。
  • 支持多种加密方式(AEAD, Chacha20, AES-CFB等)。
  • 提供简单易用的API接口,能够轻松与Java项目集成。
安装
import com.github.kaitoyuuki.v2rayjava.*;
import com.github.kaitoyuuki.v2rayjava.core.ProxyServer;
import com.github.kaitoyuuki.v2rayjava.core.ProxyServer.Type;
import com.github.kaitoyuuki.v2rayjava.core.V2rayContext;
import com.github.kaitoyuuki.v2rayjava.core.V2rayException;
import com.github.kaitoyuuki.v2rayjava.core.common.protocol.SecurityConfig;
import com.github.kaitoyuuki.v2rayjava.core.common.protocol.V2rayConfig;
import com.github.kaitoyuuki.v2rayjava.core.common.protocol.V2rayEndpoint;
import com.github.kaitoyuuki.v2rayjava.core.common.protocol.V2rayProtocolConfig;
import com.github.kaitoyuuki.v2rayjava.core.common.protocol.V2rayServerConfig;
import com.github.kaitoyuuki.v2rayjava.core.common.protocol.VmessConfig;
import com.github.kaitoyuuki.v2rayjava.core.common.util.V2rayUtils;
import java.io.IOException;

public class App {

    public static void main(String[] args) throws V2rayException, IOException {
        V2rayContext context = new V2rayContext();

        V2rayEndpoint inboundEndpoint = new V2rayEndpoint("127.0.0.1", "1080");
        V2rayEndpoint outboundEndpoint = new V2rayEndpoint("server.com", "54321");

        VmessConfig clientConfig = new VmessConfig();
        clientConfig.setId("10086");
        clientConfig.setAlterId(32);
        clientConfig.setEmail("user@example.com");
        clientConfig.setEncryption("auto");

        V2rayProtocolConfig protocolConfig = new V2rayProtocolConfig(clientConfig);

        SecurityConfig securityConfig = new SecurityConfig();
        securityConfig.setType("none");

        V2rayServerConfig serverConfig = new V2rayServerConfig(
                protocolConfig,
                null,
                null,
                null,
                null,
                null,
                null,
                null,
                null,
                null,
                null
        );

        V2rayConfig clientConfiguration = new V2rayConfig(
                V2rayUtils.randomUUID(),
                new V2rayEndpoint[]{inboundEndpoint},
                new V2rayEndpoint[]{outboundEndpoint},
                null,
                new V2rayServerConfig[]{serverConfig},
                new SecurityConfig[]{securityConfig},
                null,
                null,
                null,
                null,
                null,
                null,
                null
        );

        ProxyServer proxyServer = context.createProxyServer(clientConfiguration, Type.SOCKS);
        proxyServer.start();

        // Do something with the proxy

        proxyServer.stop();
    }
}
使用

可以通过以下方式使用V2ray - Java:

  1. 引用V2ray - Java的maven依赖:

    <dependency>
      <groupId>com.github.kaitoyuuki</groupId>
      <artifactId>v2ray-java</artifactId>
      <version>1.0.0</version>
    </dependency>
    
  2. 编写Java程序,调用V2ray - Java API:

    // 创建上下文对象
    V2rayContext context = new V2rayContext();
    
    // 构造客户端配置
    V2rayEndpoint inboundEndpoint = new V2rayEndpoint("127.0.0.1", "1080");
    V2rayEndpoint outboundEndpoint = new V2rayEndpoint("server.com", "54321");
    VmessConfig clientConfig = new VmessConfig();
    // ......
    V2rayProtocolConfig protocolConfig = new V2rayProtocolConfig(clientConfig);
    // ......
    V2rayServerConfig serverConfig = new V2rayServerConfig(protocolConfig, null, null, null, null, null, null, null, null, null, null);
    V2rayConfig clientConfiguration = new V2rayConfig(
        V2rayUtils.randomUUID(),
        new V2rayEndpoint[]{inboundEndpoint},
        new V2rayEndpoint[]{outboundEndpoint},
        null,
        new V2rayServerConfig[]{serverConfig},
        null,
        null,
        null,
        null,
        null,
        null,
        null,
        null
    );
    
    // 启动SOCKS5代理
    ProxyServer proxyServer = context.createProxyServer(clientConfiguration, Type.SOCKS);
    proxyServer.start();
    
    // ... do something
    // 在Java程序中使用代理
    
    // 关闭代理
    proxyServer.stop();
    
总结

V2ray - Java能够方便地实现Java项目的网络代理功能,并且提供了多种协议和加密方式可供选择,是Java程序员实现科学上网、穿墙等功能的好帮手。