用java编程方式打开vpn连接



我想开发一个可与VPN配合使用的自动化应用程序。为此,我有Openvpn配置文件。然而,我不知道如何连接。这个链接中提到了一个解决方案,但它对我不起作用。我在哪里以及如何键入我的vpn用户和密码?我在这方面的研究得不到任何结果。

我想做的应用程序将按如下方式简单工作。例如,我将有50个vpn,我的程序将通过分别连接每个vpn来连接到目标站点。然而,正如我所说,我不知道如何用java建立openvpn连接。你能帮我做这个吗?以下是我为我想做的事情写的代码。例如,我想通过意大利vpn位置连接到谷歌。

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
Runtime runtime = Runtime.getRuntime();
try {
Process process = runtime.exec("C:\Program Files\OpenVPN\bin\openvpn C:\Users\DATABASE\OpenVPN\config\italy\italy.ovpn");
} catch (IOException e) {
e.printStackTrace();
}

System.setProperty("webdriver.gecko.driver", "C:\geckodriver\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
try {
driver.get("https://www.google.com/");
} finally {
driver.quit();
}
}
}

从命令行运行OpenVPN客户端需要输入用户名&密码使用单独的文本文件。

  1. 在与.ovpn文件相同的文件夹中创建一个文本文件。对于本例CCD_ 1
  2. 将您的用户名&在文件的新行中输入密码,如下所示:
username
password
  1. 保存文本文件

由于Runtime.exec不再工作(或者它最终按预期工作,但在这种情况下没有给出结果(,我们需要切换到ProcessBuilder

下面是一个使用问题中定义的单个VPN连接的示例。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Test {
private static final String NEW_LINE = System.getProperty("line.separator");

public static void main(String[] args) {        
StringBuilder result = new StringBuilder(80);
try {
ProcessBuilder pb = new ProcessBuilder("C:\Program Files\OpenVPN\bin\openvpn.exe", "--config", "C:\Users\DATABASE\OpenVPN\config\italy\italy.ovpn", "--auth-user-pass", "C:\Users\DATABASE\OpenVPN\config\italy\italy.txt").redirectErrorStream(true);
Process process = pb.start();
try (BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream())))
{
while (true)
{
String line = in.readLine();
if (line == null)
break;
result.append(line).append(NEW_LINE);
}
}
} catch (IOException e) {
}

System.out.println(result.toString());
}
}

这将打开一个VPN隧道,只要启动测试类的终端/程序没有被杀死,它就会一直打开。

请注意,除非命令失败,否则它不会给出任何输出!在正常操作的情况下,您只会看到一个空白屏幕

你需要为自己实现一个业务逻辑,然后在打开新隧道之前关闭VPN隧道(除非你想最终在彼此内部有50个隧道,这可能根本不起作用(。

最新更新