设置代理¶
您可以在此章节了解到如何为当前的手机设置 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)¶
Shadowsocks 加密参数¶
以下列表为支持的 Shadowsocks 加密类型,仅支持列表内的加密方式,不支持混淆参数。
对于 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 代理 相关章节了解如何部署自己的代理服务器。