Настройка прокси

В этом разделе вы узнаете, как настроить 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.114.114.114, этот параметр заставит все DNS-запросы системы направляться на указанный сервер. Если прокси используется одновременно с OpenVPN, не указывайте здесь внутренний DNS OpenVPN, иначе устройство может полностью потерять сеть. Если этот параметр не используется, применяется системный DNS по умолчанию.

Внимание

Если для проксирования DNS-запросов задан параметр dns_proxy, используемый 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 или самостоятельно поднять Shadowsocks-сервер по нашей документации. По умолчанию False. Если используется HTTP-прокси или параметр drop_udp равен True, этот параметр игнорируется.

profile.udp_proxy = False

Параметр определяет, нужно ли перенаправлять весь DNS-трафик через прокси. После включения этого параметра весь DNS-трафик на устройстве будет проходить через прокси, что позволяет избежать подмены DNS. При использовании этого параметра необходимо также указать параметр nameserver. Не используйте его при захвате трафика, иначе программа захвата может некорректно обрабатывать DNS-пакеты, что приведёт к ложному отсутствию сети.

profile.dns_proxy = False

Задаёт сетевой интерфейс, через который прокси будет выходить в сеть. Например, на устройстве есть SIM-карта (rmment_datax), Wi-Fi (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              ; Включить ли службу: true | false
gproxy.type=http-connect        ; Тип прокси: http-connect, https-connect, socks5, shadowsocks
gproxy.host=172.1.1.1           ; Адрес прокси-сервера
gproxy.port=8080                ; Порт прокси-сервера
gproxy.password=                ; Пароль для входа на прокси-сервере (оставьте пустым, если авторизация не требуется)
gproxy.login=                   ; Имя пользователя для входа на прокси-сервере (оставьте пустым, если авторизация не требуется; для типа shadowsocks — метод шифрования)
gproxy.nameserver=              ; Пользовательский DNS-сервер
gproxy.drop_udp=false           ; Отбрасывать ли UDP-пакеты.
gproxy.udp_proxy=false          ; Проксировать ли UDP-пакеты (требуется поддержка на прокси, например socks5, shadowsocks).
gproxy.bypass_local_subnet=true ; Не проксировать трафик локальной сети.
gproxy.dns_proxy=false          ; Направлять ли DNS-запросы через прокси (требуется DNS-сервер с поддержкой UDP и TCP).
gproxy.uid=                     ; Проксировать только для указанных UID (по умолчанию — для всех).

Развёртывание прокси-сервера

В каталоге tools FIRERPA предоставляет готовый Docker-образ SOCKS5-прокси с поддержкой UDP. Подробнее о развёртывании собственного прокси-сервера см. в разделе Развёртывание Socks5-прокси.