设置代理

您可以在此章节了解到如何为当前的手机设置 IP 代理,FIRERPA 支持您为当前的手机设置 HTTP/s、SOCKS5、SHADOWSOCKS 等代理,使设备流量通过指定代理发出,支持代理 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)

代理类型 (type)

代理类型说明
GproxyType.HTTP_CONNECTHTTP
GproxyType.HTTPS_CONNECTHTTPS (HTTP+TLS)
GproxyType.SOCKS5SOCKS5
GproxyType.SHADOWSOCKSShadowsocks
GproxyType.HTTP_RELAY已废弃

Shadowsocks 加密参数

以下列表为支持的 Shadowsocks 加密类型,仅支持列表内的加密方式,不支持混淆参数。

加密类型名称
AESaes-128-cfb
AESaes-192-cfb
AESaes-256-cfb
AESaes-128-ctr
AESaes-192-ctr
AESaes-256-ctr
CAMELLIAcamellia-128-cfb
CAMELLIAcamellia-192-cfb
CAMELLIAcamellia-256-cfb
DESdes-cfb
AES-AEADaes-128-gcm
AES-AEADaes-192-gcm
AES-AEADaes-256-gcm
AEADchacha20-ietf-poly1305

对于 Shadowsocks,请使用以下的方式设置加密方式以及密码。

profile.login = "chacha20-ietf-poly1305"
profile.password = "密码"

关闭代理

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

d.stop_gproxy()

完整参数

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

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

profile.type = GproxyType.HTTP_CONNECT

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

注意

如果设置了 dns_proxy 参数进行 DNS 查询的代理,您使用的 DNS 服务器需要支持 TCP 查询,通常情况下常用 DNS 服务器均支持 TCP 查询。

profile.nameserver = "114.114.114.114"

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

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

如果您的代理服务器需要登录验证,可以通过如下参数提供,这取决于您的代理提供商,对于 Shadowsocks 类型,login 则为加密方法。

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

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

profile.drop_udp = False

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

profile.bypass_local_subnet = True

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

profile.udp_proxy = False

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

profile.dns_proxy = False

设置设备上的代理出网网络接口,比如您的设备存在 SIM 卡网络(rmment_datax)、WIFI 网络(wlan0)、以及一个 USB 供网(eth0),这时候由于不同网络的权重不一,系统可能默认使用 SIM 卡网络,而您需要代理从 USB 供网出去,这时,您可以通过此参数指定代理的出口网络。

profile.interface = "eth0"

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

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

profile.application.set(app)

自动应用代理

您可以使 FIRERPA 在启动时自动连接预设的代理服务器,这样可以确保您的手机流量始终通过代理。填入下列配置(修改为您的代理信息,配置方式见 服务配置),部分未描述的字段与 完整参数 中描述的字段名相同。

gproxy.enable=true              ; Whether to enable the service true | false
gproxy.type=http-connect        ; The proxy type can be either http-connect, https-connect, socks5, shadowsocks
gproxy.host=172.1.1.1           ; Proxy server address
gproxy.port=8080                ; Proxy server port
gproxy.password=                ; Proxy server login password (leave empty for no authentication)
gproxy.login=                   ; Proxy server login username (leave empty for no authentication, crypto method if type is shadowsocks)
gproxy.nameserver=              ; Custom DNS server
gproxy.drop_udp=false           ; Whether to discard UDP packets.
gproxy.udp_proxy=false          ; Whether to proxy UDP packets (requires proxy support, such as socks5, shadowsocks).
gproxy.bypass_local_subnet=true ; Do not proxy local area network traffic.
gproxy.dns_proxy=false          ; Make DNS queries go through the proxy (requires a DNS server that supports UDP and TCP).
gproxy.uid=                     ; Only proxy for specified UIDs. (default global)

搭建代理服务

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