Настройка системного прокси (переключение IP)

В этой главе вы узнаете, как настроить IP-прокси для вашего текущего мобильного телефона. FIRERPA поддерживает настройку 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-соединения до настройки прокси. Поэтому вам необходимо вручную закрыть и снова открыть целевое приложение, чтобы оно установило соединение через прокси.

Типы прокси

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

profile.udp_proxy = False

Используется для настройки перенаправления всего DNS-трафика через прокси. При включении этой опции весь 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)

Автоматическое применение прокси

Вы можете настроить FIRERPA на автоматическое подключение к предварительно заданному прокси-серверу при запуске. Это гарантирует, что трафик вашего телефона всегда будет проходить через прокси. Скопируйте следующую конфигурацию, измените ее в соответствии с вашими данными прокси, запишите в файл properties.local и перезапустите FIRERPA. Некоторые неописанные поля имеют те же имена, что и поля, описанные в разделе Полные параметры.

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

Настройка прокси-сервера

FIRERPA предоставляет готовый к использованию docker-контейнер с прокси-сервисом SOCKS5, поддерживающим UDP, в каталоге tools. Вы можете узнать, как развернуть собственный прокси-сервер, в соответствующем разделе этой документации о развертывании прокси-сервиса.