设置系统代理

您可以在此章节了解到如何为当前的手机设置 IP 代理,LAMDA 支持您为当前的手机设置 HTTP、SOCKS5 代理,这样您手机的所有通信流量将从设置的代理发出,目前该功能不支持 IPV6。

连接代理

此接口的参数较多,假设您从服务商处获得的代理为 http://1.x.x.x:8080,仅需如下几行代码即可让设备流量通过此代理。您可以继续查看下方 完整参数 来了解您可以使用的参数。

profile = GproxyProfile()
profile.type = GproxyType.HTTP_CONNECT

profile.drop_udp = True
profile.host = "1.x.x.x"
profile.port = 8080

d.start_gproxy(profile)

需要注意的是,设置代理后,正在运行的应用是不会立即使用设置的代理的,这些应用在设置代理之前就已经完成 TCP 连接的建立。所以还需您手动关闭目标应用并打开,应用才会通过代理建立连接。

关闭代理

您可以使用如下关闭 LAMDA 在系统上设置的代理,这个接口非常简单,不需要您提供额外的参数。

d.stop_gproxy()

完整参数

下面是代理接口完整的参数配置信息,您可以根据每种参数的描述来选择您是否需要使用该参数。

您可以通过如下参数配置代理服务的类型,如果是 socks5 代理则为 GproxyType.SOCKS5

profile.type = GproxyType.HTTP_CONNECT

如果您需要重定向 DNS 查询到 114,该参数会使系统发出的所有 DNS 将会被转发至此,如果是与 OpenVPN 共存的情况,不要设置为 OpenVPN 的内网 DNS,否则可能彻底断网,不使用此配置时默认使用的是系统默认 DNS。

profile.nameserver = "114.114.114.114"

代理服务器的 IP 以及其端口号配置。

profile.host = 代理服务器地址
profile.port = 代理服务器端口

如果您的代理服务器需要登录验证,可以通过如下参数提供,这取决于您的代理提供商。

profile.login = "代理服务器登录用户名"
profile.password = "代理服务器登录密码"

用以屏蔽系统中的 UDP 流量,为什么需要屏蔽 UDP 流量?因为现今大部分的公共代理服务均不支持代理系统内的 UDP 流量,当然,也有部分 SOCKS5 服务器支持代理 UDP,比如我们提供的自建方案。所以禁用系统 UDP 流量是一个不错的选择,这个选项默认是关闭的。

profile.drop_udp = False

用以配置是否需要绕过本地网络,如果配置为 True,那么如 192.168.x 10.x 等路由器网段的流量将不会经过代理,默认为 False。需要注意如果开启了 udp_proxy,此选项对 UDP 流量无效。

profile.bypass_local_subnet = True

用以配置是否需要代理 UDP 流量,需要您的代理符合一些先决条件,您的代理只能是 GproxyType.SOCKS5 代理,并且您的 SOCKS5 代理服务器开启了UDP 代理,您可以通过我们提供的文档安装支持 SOCKS5 UDP 的代理服务器。默认为 False,当您使用 http 代理或者 drop_udp 选项为 True,此选项将会被忽略。

profile.udp_proxy = False

用以设置您是否需要通过代理来转发所有 DNS 流量,开启此选项后,设备上所有的 DNS 流量都将通过代理发出,可以避免污染的情况。使用此选项时,需要您同时指定 nameserver 参数。不可在抓包场景使用,否则由于抓包软件可能无法正确对待 DNS 数据包,导致伪断网。

profile.dns_proxy = False

您可以通过如下配置来仅对系统中的某一个应用设置代理,除外的应用流量将不会通过代理。

# 下属三种选择目标应用的方式请三选一。
app = d.application("com.android.browser")
app = d.get_application_by_name("浏览器")
app = d.application("com.android.browser", user=999) # 多开应用

profile.application.set(app)

自动应用代理

您可以使 LAMDA 在启动时自动连接预设的代理服务器,这样可以确保您的手机流量始终通过代理。复制下列配置并修改相关配置为您的代理信息写入 properties.local 文件随后重启 LAMDA 即可,部分未描述的字段与 完整参数 中描述的字段名相同。

gproxy.enable=true
gproxy.type=http-connect
gproxy.host=1.x.x.x
gproxy.port=8080
gproxy.password=
gproxy.login=

搭建代理服务

LAMDA 在 tools 目录中提供了一个开箱即用同时支持 UDP 的 socks5 代理服务 docker,您可以在本文档的部署代理服务相关章节了解如何部署自己的代理服务器。