发表于 发表评论

关于模块解析器

模块解析器是一项功能,可让您将其他应用程序中的模块转换为 LanceX 的格式。我们列出了我们支持的指令。

模块

一般的

  • force-http-engine-hosts

规则

  • DOMAIN
  • DOMAIN-SUFFIX
  • DOMAIN-KEYWORD
  • IP-CIDR
  • IP-CIDR6
  • GEOIP
  • IP-ASN
  • URL-REGEX
  • USER-AGENT
  • AND/OR/NOT
  • FINAL
  • REJECT
  • REJECT-DROP

改写

  • 302
  • reject
  • reject-200
  • reject-img
  • reject-dict
  • reject-array
  • header
  • header-add
  • header-del
  • header-replace
  • header-replace-regex

正文重写

  • http-request
  • http-response

当地地图

支持本地映射,但数据文件目前必须是远程的

脚本

  • http-request
  • http-response

懒人

规则

  • DOMAIN
  • DOMAIN-SUFFIX
  • DOMAIN-KEYWORD
  • IP-CIDR
  • IP-CIDR6
  • GEOIP
  • IP-ASN
  • URL-REGEX
  • USER-AGENT
  • AND/OR/NOT
  • FINAL

改写

  • 302
  • reject
  • reject-200
  • reject-img
  • reject-dict
  • reject-array
  • header-add
  • header-del
  • header-replace
  • header-replace-regex
  • request-body-replace-regex
  • request-body-replace-regex
  • request-body-replace-regex
  • request-body-replace-regex
  • 请求主体-json-del
  • mock-request-body
  • mock-request-body
  • response-header-del
  • response-header-replace
  • response-header-replace-regex
  • response-body-replace-regex
  • response-body-json-add
  • response-body-json-replace
  • response-body-json-del
  • response-body-json-jq
  • mock-response-body

脚本

  • http-request
  • http-response

发表于 发表评论

关于实验设置

它们的含义并不重要。请不要打开任何选项,因为它们都未经测试。如果一个选项被证明足够稳定,它将成为默认设置。

无限连接

网络扩展的内存限制非常严格。对于 iOS 15 以下版本,限制为 15MB,对于 iOS 15 及更高版本,限制增加到 50MB。如果 VPN 超出此限制,系统会默默关闭。因此,我们限制了连接数。如果您将其打开,保护将被关闭。

使用“网络”框架

新的 Network.framework API 可直接访问 URLSession 使用的相同高性能用户空间网络堆栈。然而,在测试中,我们无法对其内存使用情况进行细粒度控制,因此很容易崩溃。

H2 上的 Mux

HTTP/2 内置了多路复用功能,可以减少资源占用。但是,启用此功能可能会降低测试期间的传输速度。我们正在努力优化其性能,使其成为默认选项。

禁止网络检测

当网络发生变化时,我们应该收集更多有关当前环境的信息,但此操作可能会中断当前的连接。开启它可能会减轻影响,但代价是丢失一些底层网络信息。

使用第三方 TLS 解决方案

iOS 默认的网络框架非常强大,但已经过时了。我们将首先尝试使用它。当您启用它时,我们不会对其进行测试。

粗糙交换网络

如果您打开网络,当网络发生变化时,我们将关闭所有以前的连接。

在 WS 主机中添加端口

升级到 WebSocket 协议时,我们将使用 WebSocket 设置的主机。但是,如果它不使用默认端口,而您忘记在设置中设置它,则它可能会或可能无法正确运行,具体取决于您的服务器。一旦您启用它,如果服务器不使用默认端口,我们将始终在主机标头中添加端口。

发表于 发表评论

什么是“锁定订阅”

订阅中有一个名为“锁定”的选项。

锁定订阅意味着修改和共享它有一定的限制。

  1. 您无法查看或修改锁定订阅的详细信息,但可以将其删除。
  2. 除非您有锁定的密码,否则您无法共享锁定的订阅。
  3. 共享锁定的订阅时,您有两种选择:需要密码才能导入或允许任何人导入。

请注意,锁定订阅是 LanceX 独有的功能。您不能与 LanceX 以外的应用程序共享 URL。

发表于 发表评论

什么是“信任 DNS”?

里面有一个选项 规则 -> 高级 命名的 信任 DNS。这允许代理使用本地 DNS 的 IP。

例如,当您想要访问 a.com,并且不匹配规则中的任何域指令,它将由本地 DNS 解析。如果 IP 结果与目标设置为的 IP 指令匹配为 代理,它将把本地解析的IP传递给代理而不是域,前提是你启用了此功能。

发表于 1条评论

代理组

什么是代理组?

A 代理组 是一个引擎,用于确定当前网络流量使用哪个代理。

在 LanceX 中, 代理组 仅根据以下条件选择代理 正则表达式。这允许在添加或删除代理时进行动态更新。

另外,一个 代理组 可以嵌入另一个 代理组,形成树形图结构。

代理组有哪些类型?

有四种类型 代理组:

  1. 选择:此类型允许手动选择代理。但是,请注意,如果您的代理发生变化,它可能不准确。
  2. 倒退:此类型按顺序选择代理。如果当前代理关闭或超时,将使用下一个代理。
  3. 负载均衡:此类型有效地在一组代理之间分配传入的网络流量。
  4. url 测试:此类型通过对特定 URL 的速度进行基准测试来选择要使用的代理。

如何设置代理组?

有两种方法可以设置 代理组:

  1. 您可以在全局设置它 规则 > 高级 > 默认代理参数。所有路线匹配 代理 将使用 代理组。请注意,如果您设置此项,您选择的代理在 代理视图 不会影响连接,并且代理详细信息在 控制面板 也将改变根据 代理组 结果。
  2. 您还可以为单独的规则进行设置。当您将规则的目标更改为 代理,您可以选择一个 代理组.
发表于 发表评论

什么是“前置脚本”?

里面有一个选项 规则 -> 高级 命名的 前置脚本。您输入的脚本每次都会与其他脚本一起触发。

所以你可以:

  • 添加一些代码进行调试。
  • 增强脚本能力。
  • 添加一些实用程序库。
  • 虽然我们支持大多数API,但有些脚本使用全局变量来检查App类型,因此我们可以假装成其他运行时,例如Rocket(https://shadowboat.app/lancex/module/rocket.js)
  • ……
发表于 发表评论

脚本编写

您可以使用 JavaScript 来扩展 LanceX 的功能。

公共API

$done() 功能

由于所有脚本都是异步运行的,因此即使对于不需要结果的脚本,也应该调用 $done() 来指示完成。否则,脚本将因超时而打印警告。

基本信息

  • $lancex

该对象表示您处于 LanceX 的环境中。

持久存储

  • $persistentStore.write(data, [key])

永久保存数据。只允许使用字符串

  • $persistentStore.read([key])

获取保存的数据。返回字符串或 null。

HTTP请求

  • $httpClient.post(URL or options, callback)

启动 HTTP POST 请求。第一个参数可以是 URL 或对象。一个示例对象可能看起来像这样。

{ url:“http://www.example.com/”,标头:{“Content-Type”:“application/json”},正文:“{}”,超时:5,回调:回调(错误,响应, 数据) { } }

url 总是需要的。 body 可以是字符串或对象。当呈现一个对象时,它被编码为 JSON 字符串,并且 Content-Type 被设定为 application/json 自动地。

类似功能: $httpClient.get, $httpClient.put$httpClient.delete, $httpClient.head, $httpClient.options, $httpClient.patch.

  • fetch(URL, options)

这是一个实现 Fetch API, 例如

fetch("http://www.example.com/",{ method: "POST", headers: { "Content-Type": "application/json" }, body: "{}" }).then(v =>v.text()) .then(v=>console.log(v));

公用

  • console.log(message)

记录到 LanceX 日志文件。类似功能: console.warn, console.error, console.info.

  • setTimeout(function[, delay])

与浏览器中的setTimeout相同。类似功能: setInterval.

  • $notification.post(title, subtitle, body, info)

发布通知。请开启 允许通知 在使用它之前。 信息 允许您在用户单击通知时打开 url。例如:

{“open-url”:“https://www.example.com”}
发表于 发表评论

规则的优先级

我有很多规则,它们的优先级是什么?

模块 首先,域指令具有以下优先级: DOMAIN > DOMAIN-SUFFIX > DOMAIN-KEYWORD。 IP 指令具有以下优先级: CIDR > GEO IP。如果同时命中多个规则,出于性能原因,当前的策略是随机选择一个。