使用米克运输

时间:2018-06-22 08:18:21

标签: java android security privacy tor

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

https://github.com/guardianproject/AndroidPluggableTransports/blob/master/sample/src/main/java/info/pluggeabletransports/sample/SampleClientActivity.java

问题是我要从那里做什么。假设我有一个使用OkHttp3的应用程序。当应用仅与Okhttp3交互时,是否有一种方法可以协调两者并将OkHttp3用作基础传输机制?

在如何实例化传输以及每个选项意味着什么方面,我也很矛盾。在上面提供的链接中,传输实例如下:

  var text = $"tenant/Modules/Orders/Events/d1d28f67-17f2-4a43-ac63-f5e4dcf6d36c";
  var validate = new Regex(@"^(\w+/?)+$");
  var test = validate.Match(text).Success;

但是,在自述文件(https://github.com/guardianproject/AndroidPluggableTransports)中,建议的方法是:

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);
}

在后一种方法中,网桥地址被传递给init()方法。在第一种方法中,将远程地址传递给init()方法,而将桥地址作为选项传递。这些方法中哪一种是正确的?

此外,我希望对OPTION_URL,OPTION_FRONT和OPTION_KEY发表一些评论。这些信息中的每条来自哪里?如果我不想使用这些默认信息,例如,如何设置“ Meek端点”以不使用默认的Tor One? CDN上有什么特别需要做的事情吗?我将如何使用Amazon或Google而不是aspnetcdn?

如您所见,我很困惑。

1 个答案:

答案 0 :(得分:2)

感谢您对此库的关注。不幸的是,我们还没有正式发布,它还处于开发的初期。

但是,我们认为我们仍然可以提供帮助。

首先,应该明确指出,支持域前端的主要云提供商(Google,Amazon,Azure)现在非常反对。因此,您可能会在使用任何这些平台时发现一些限制,尤其是在您无法控制的前端域中。

您可以在此处了解有关Tor和Signal自己的挣扎情况:https://signal.org/blog/looking-back-on-the-front/https://blog.torproject.org/domain-fronting-critical-open-web

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

您可以在此处了解更多信息:https://www.bamsoftware.com/papers/fronting/#sec:introduction