GreatfireEnvoy 0.1.0

GreatfireEnvoy 0.1.0

Benjamin Erhart 维护。



从铬糖果库 cronet 衍生的 C 和 Java 库。使用 OkHttp、Volley、WebView、Cronet 基础库或 java.net.HttpURLConnection,Envoy 可以轻松添加到现有的 Android 应用中,以添加绕过审查功能。

我们正在寻找开发者一起改进 Envoy,请联系 [email protected]

我们正在寻找开发者一同改进Envoy,详情联系[email protected]

技术细节说明这里

  • 对于纯 C 和 Java Cronet 库,请查看目录 native/
  • 对于 Android 库,请从 Android Studio 导入目录 android/,或者从命令行使用 Gradle 构建。

请注意,此项目与Envoy Proxy 项目无关。

入门指南

示例应用

获取 Envoy

Envoy 和我们修复的 Cronet 通过 Maven Central 发布。Envoy 版本可以在这里找到。Cronet 版本可以在这里找到。

服务器设置示例

请参阅此仓库中可用于 Envoy 的服务的执行示例。

ENVOY 开发者指南

欢迎使用 Envoy 开发者指南。本指南将向您介绍如何使用 Android 框架和其他库中提供的 API 构建 Android 应用。

Envoy 支持的协议

  • HTTPS:通过常规 web 服务器和内容分发网络代理所有流量,支持将 DNS 硬编码并添加其他标题
  • Shadowsocks:使用 Shadowsocks 客户端/服务器提供的 socks5 代理
  • Hysteria:基于 QUIC 协议,伪装成其他协议
  • V2Ray:基于 QUIC 协议,伪装成其他协议

请访问native/README.mdandroid/README.md获取更多技术细节。

什么是 Cronet

Cronet 是铬糖果库的联网堆栈,将其放入库中用于移动端。这是数值超过十亿的 Chrome 浏览器使用的同一个联网堆栈。Cronet 提供了一种易于使用、高性能、符合标准且安全的执行 HTTP 请求的方法。在 Android 上,Cronet 提供了自带的 Java 异步 API 以及对 java.net.HttpURLConnection API 的支持。Cronet 利用多种技术减少了您的应用程序需要工作的网络请求的延迟,并提高了吞吐量。

Cronet 发布计划

Cronet 版本构建是基于 Chromium 的 "扩展支持" 版本。它们通常坚持使用一个主要版本,例如 102.0.5005.x,直到支持期结束。Chromium LTS 的生命周期可以在 https://chromiumdash.appspot.com/schedule 上的 "ChromeOS LTS 最后刷新" 找到。

关于 Envoy 的全部内容

Envoy 是基于 Cronet 构建的,它提供了对 OkHttp、Volley、WebView、Cronet 基本和 java.net.HttpURLConnection 的支持。

我们已经构建了强大、独特、反审查的工具和服务,在有些国家,一些网站及其内容被审查,这些工具和服务产生了重大影响。

此工具是从 Cronet 派生出来的。

Cronet 是 Chrome 浏览器中使用的网络堆栈,被放置在库中供移动设备 사용。这是超过十亿用户在 chrome 浏览器中使用的相同网络堆栈。

因此,它可以处理几乎在开发中使用的所有请求类型。它用于制作抵抗 审查 的应用程序。

Envoy 是什么以及它的用途

正如它的名字所暗示的,Envoy 是一个 代表信使

就像它一样,我们的工具将像信使或代表一样为某些网站或网络内容提供服务,无需担心审查,因为我们的工具将充当代表。

正如之前所说的,它可以用来制作一个抵抗 审查 的应用程序。

此外,它可以作为一个用于安全网络访问的代理工具,用于访问您的应用程序。例如,如果 Facebook 和 YouTube 在中国等国家不可用,您想制作一个显示 Facebook 或 YouTube 内容的应用程序,那么您可以使用这个工具来显示您的内容。

它可以用于显示部分内容,或者根据您的需求,它可以用于使所有服务器通信都依赖于它。

此外,如果您不想使用 Envoy 代理,您仍然可以使用这个工具来无忧无虑地获得 Cronet 库的好处。将来,如果您想,您只需简单地定义一个 Envoy URL 以绕过审查。

应用示例

apps 目录中可以找到为添加 Envoy 支持给几个应用程序的补丁。然而,这些补丁不反映最新版本的 Envoy 或原始应用程序,并且目前可能无法按预期工作。

  1. 维基百科: ./gradlew clean assembleDevDebug演示 APK,以及 迁移指南
  2. DuckDuckGo: ./gradlew assembleDebug演示 APK
  3. WordPress
    1. WordPress-FluxC-Android: echo "sdk.dir=YOUR_SDK_DIR" > local.properties && ./gradlew fluxc:build
    2. WordPress-Android: 设置 wp.oauth.app_idwp.oauth.app_secret,然后 cp gradle.properties-example gradle.properties && ./gradlew assembleVanillaDebug

Wiki Unblocked 已扩展为一个独立的应用程序。在上方可以找到应用程序和源代码链接。

Feeder Unblocked 是添加了 Envoy 支持的 Feeder RSS 阅读器的分支。它目前正在开发中。

您可以提交更多应用程序,使用 git -c diff.noprefix=false format-patch --numbered --binary HEAD~

发布步骤

  1. 重建 cronet-debug.aar 和 cronet-release.aar:运行 ./native/build_cronet.sh debug./native/build_cronet.sh release
  2. 重建 Envoy: ./android/build-envoy.sh
  3. 重建演示应用程序: ./apps/build-apps.sh

从源代码构建所有内容需要大约 100GB 的磁盘空间和时间。整个发布过程也脚本化在 .gitlab-ci.yml 中。这也可以通过运行 vagrant up --provision --no-destroy-on-error 使用 Vagrant 来运行。

历史

  1. 谷歌将在libcrurl中重写curl | daniel.haxx.se, 简体中文
  2. 973603 - [Cronet] 使用Cronet API的libcurl包装库 - chromium