Rama 0.4:系统代理和PAC支持
Rama 0.4:系统代理和PAC支持在0.3发布六周后——恰好在承诺的两到八周的发布周期内——我们自豪且高兴地发布了rama 0.4。对于这个版本我非常满意,因为我们不仅能够在各个方面进行大量改进,还得以处理一些在我们积压项目中存在了很久的事项。有关技术细节,请在 https://github.com/plabayo/rama/blob/main/CHANGELOG.md 阅读完整的CHANGELOG,包括rama 0.4发布说明。任何时候您都可以在 https://ramaproxy.org/#features 找到Rama支持的协议和其他功能的总结。系统代理配置Rama很长时间以来一直支持HTTP、HTTPS(通过TLS的HTTP)和SOCKS5代理。最简单的方法是使用ProxyRoute(s)直接配置(以前被直接插入为ProxyAddress)。在应用程序中,这些可以被硬编码或通过某种方式暴露在设置中。一个例子是您的浏览器或编辑器,它允许您通过设置文件或其GUI配置代理。关于这种方法的更多信息,请参阅Rama书籍中的“应用程序代理”一章。应用程序通常还支持HTTP_PROXY环境变量。curl出于CGI原因使用小写的http_proxy变体,这一约定我们现在在使用ProxyEnvLayer时也默认遵循。尽管如此,还有一些更常见的环境变量,例如ALL_PROXY、HTTPS_PROXY和NO_PROXY,其中后者用于添加绕过规则,以确保某些(子)域不会通过代理。所有这些现在也通过ProxyEnvLayer和NoProxyEnvLayer得到了支持。然而,正如您所知,操作系统也允许您全局配置代理。在这里,您可以配置HTTP、HTTPS和SOCKS5代理,以及不使用代理的绕过规则。这与之前讨论的环境变量非常相似,但在系统范围内。当然,通常没有什么强制应用程序遵循这些系统配置设置,或是因为它不想,或是因为根本没有内置的能力来做到这一点(在此之前,使用rama构建的网络客户端就是这种情况)。通过rama 0.4,这些功能开箱即用地通过SystemProxyLayer得到支持;您可以在Rama书籍的“系统代理”一章中了解到更多关于这些设置的工作方式。系统配置设置还允许您使用JavaScript文件动态选择代理。这称为代理自动配置,简称PAC。为此,一定需要有JavaScript运行时——在rama 0.4之前,rama并未提供这种支持。现在我们提供了。通过rama-js,我们现在支持在WASM运行时中运行JavaScript运行时(使用wasmtime,这是我们未来也将用于构建rama-wasm的运行时)。这一点非常重要,因为它提供了隔离,确保如果我们的JavaScript运行时崩溃,它不会带走整个进程。像Google Chrome这样的应用程序在单独的操作系统进程中运行其JavaScript引擎;而在Rama框架中,我们选择在WASM运行时中进行。相同的隔离,但无需以某种方式允许任何使用Rama构建的应用程序运行和捆绑单独的进程。Rama现在通过rama-pac crate支持PAC,这允许您拥有PAC运行时,从而评估PAC脚本,同时也能轻松生成脚本,满足您所需的只是在将域名X路由到代理规则Y的能力。如果您想体验这些新的Rama框架功能,您还可以通过我们的命令行应用程序(CLI)轻松做到这一点,您可以在Rama书籍的“rama二进制”一章中了解如何安装:客户支持快速发送命令(除非您用环境变量或命令参数覆盖它);现在有了rama pac子命令,可以让您生成PAC脚本以及通过REPL评估PAC脚本。后者特别不错,因为在此之前,您可以操作PAC文件的环境几乎都是相当古老和不知名的应用程序……如果您问我的话,这是我们网络CLI工具包的另一个不错的补充。ttRPC和gRPC在协议方面,Rama现在通过新的rama-ttrpc crate也支持ttRPC。它可以被视为一种轻量级的gRPC替代品,直接运行在TCP等传输协议之上,但仍然通过protobuf(proto)合同运行。然而,这不是这一领域唯一的新crate,因为我们现在还有rama-grpc-macros crate,使得Rama能够在不编写一行proto的情况下生成客户端和服务器端的gRPC代码,依靠您自己的编解码器,选项上由Serde驱动(请参见define_service)。对于那些已经使用gRPC并控制整个堆栈的人来说,这非常不错。HAR WebSockets结果发现HAR(HTTP Archive)支持WebSocket数据。这个最后时刻的rama 0.4惊喜引起了我们的注意,得益于一位商业合作伙伴。它的...
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡