Java 使用温和的交通工具

Java 使用温和的交通工具,java,android,security,privacy,tor,Java,Android,Security,Privacy,Tor,我正在尝试将Meek集成到Android应用程序中。这里有一个示例显示了如何实例化传输: 问题是我该怎么做。假设我有一个使用OkHttp3的应用程序。当应用程序仅与OkHttp3交互时,是否有办法协调两者并将OkHttp3用作底层传输机制 对于如何实例化传输以及每个选项的含义,我也很矛盾。在上面提供的链接中,传输实例化如下: private void initMeekTransport() { new MeekTransport().register(); Propertie

我正在尝试将Meek集成到Android应用程序中。这里有一个示例显示了如何实例化传输:

问题是我该怎么做。假设我有一个使用OkHttp3的应用程序。当应用程序仅与OkHttp3交互时,是否有办法协调两者并将OkHttp3用作底层传输机制

对于如何实例化传输以及每个选项的含义,我也很矛盾。在上面提供的链接中,传输实例化如下:

private void initMeekTransport() {
    new MeekTransport().register();

    Properties options = new Properties();
    String remoteAddress = "185.152.65.180:9001";// a public Tor guard to test

    options.put(MeekTransport.OPTION_URL,"https://meek.azureedge.net/"); //the public Tor Meek endpoint
    options.put(MeekTransport.OPTION_FRONT, "ajax.aspnetcdn.com"); //the domain fronting address to use
    options.put(MeekTransport.OPTION_KEY, "97700DFE9F483596DDA6264C4D7DF7641E1E39CE"); //the key that is needed for this endpoint

    init(DispatchConstants.PT_TRANSPORTS_MEEK, remoteAddress, options);
}
然而,在自述文件()中,建议的方法是:

Properties options = new Properties();
String bridgeAddress = "https://meek.actualdomain.com";
options.put(MeekTransport.OPTION_FRONT,"www.somefrontabledomain.com");
options.put(MeekTransport.OPTION_KEY,"18800CFE9F483596DDA6264C4D7DF7331E1E39CE");
init("meek", bridgeAddress, options);
Transport transport = Dispatcher.get().getTransport(this, PT_TRANSPORTS_MEEK, options);
if (transport != null)
{
        Connection conn = transport.connect(bridgeAddress);
        //now use the connection, either as a proxy, or to read and write bytes directly
        if (conn.getLocalAddress() != null && conn.getLocalPort() != -1)
            setSocksProxy (conn.getLocalAddress(), conn.getLocalPort());


        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        baos.write("GET https://somewebsite.org/TheProject.html HTTP/1.0".getBytes());
        conn.write(baos.toByteArray());

        byte[] buffer = new byte[1024*64];
        int read = conn.read(buffer,0,buffer.length);
        String response = new String(buffer);
}
在后一种方法中,网桥地址被传递给init()方法。在第一种方法中,它是传递给init()方法的远程地址,而网桥地址作为选项传递。以下哪种方法是正确的

此外,我希望对选项URL、选项前端和选项键发表一些评论。这些信息来自哪里?如果我不想使用这些默认信息,我如何设置一个“Meek端点”,例如不使用默认的Tor端点?在CDN上有什么特别需要做的吗?我将如何使用亚马逊或谷歌而不是aspnetcdn


如你所见,我相当困惑。

谢谢你对这个图书馆的兴趣。不幸的是,我们还没有正式发布,它的开发还很早

然而,我们认为我们仍然可以提供帮助

首先,应该明确指出,支持域名前置的主要云提供商(谷歌、亚马逊、Azure)现在非常反对。因此,您可能会发现使用这些平台中的任何一个都存在一些限制,尤其是对于您无法控制的前沿领域

你可以在这里读到Tor和Signal自己的斗争:和

现在,也就是说,如果您仍然希望继续进行域前置,并且您使用的是HTTP/S,那么您可以这样做,而不必使用Meek。您只需将请求上的“主机”头设置为您想要访问的实际域,而请求本身使用前置域。其实很简单


您可以在此处阅读更多内容:

感谢您的反馈。不幸的是,这些大人物也走上了致残前线的道路。