Перейти к основному содержимому

Proxy API

Описание​

IDroidProxyAPI предназначен для управления настройками прокси-сервера на устройстве в ZennoDroid. Позволяет настроить базовые параметры прокси, а также дополнительные параметры для тонкой конфигурации подключения.


Методы​

ClearProxy​

  • void ClearProxy()
    Очищает настройки прокси.

Пример.​

var proxy = instance.DroidInstance.Proxy;

proxy.ClearProxy(); // Очистить прокси проекта

DisablePrivateDns​

  • void DisablePrivateDns()
    Отключает частный DNS.

Пример.​

var proxy = instance.DroidInstance.Proxy;

proxy.DisablePrivateDns(); // Отключить частный DNS

EnablePrivateDns​

  • void EnablePrivateDns(string address)
    Включает частный DNS.

    Параметры:

    • address — адрес частного DNS-сервера (например: dns.google).

Пример.​

var proxy = instance.DroidInstance.Proxy;

proxy.EnablePrivateDns("dns.google"); // Включить частный DNS

GetExternalIp​

Доступно начиная с версии ZennoDroid 2.6.2.0.
  • string GetExternalIp(params string[] addresses)
    Определяет внешний IP-адрес, с которым устройство выходит в интернет. Запрос к сервису проверки IP отправляется с самого устройства, поэтому так удобно проверить, работает ли прокси.

    Параметры:

    • addresses — сервисы проверки IP. Опрашиваются по очереди, пока один из них не вернёт адрес. Если не указаны, используется https://ipinfo.io/json. Сервис может отвечать как JSON, так и просто адресом.

    Возвращает:
    JSON с полями ip — адрес и source — сервис, который его вернул. Если сервис сообщает больше, добавляются hostName, city, region, country, location, network, postalCode и timeZone.

    Описание:
    Запрос отправляется не из приложения, поэтому, если прокси задан только для выбранных приложений, проверка может показать адрес без прокси. В этом случае используйте GetExternalIpInBrowser.

    Если ни один сервис не вернул адрес или на устройстве нет ни curl, ни wget, метод завершается ошибкой.

Пример.​

var proxy = instance.DroidInstance.Proxy;

var json = proxy.GetExternalIp(); // Спросить https://ipinfo.io/json
project.SendInfoToLog(json); // {"ip":"203.0.113.7","source":"https://ipinfo.io/json","city":"Amsterdam",...}
var proxy = instance.DroidInstance.Proxy;

// Сначала ipinfo.io, если он не ответит - ipify
var json = proxy.GetExternalIp("https://ipinfo.io/json", "https://api.ipify.org?format=json");
project.SendInfoToLog(json); // {"ip":"203.0.113.7","source":"https://api.ipify.org?format=json"}, если ответил ipify

GetExternalIpInBrowser​

Доступно начиная с версии ZennoDroid 2.6.2.0.
  • string GetExternalIpInBrowser()
    То же, что GetExternalIp, но запрос отправляется из Chrome (com.android.chrome) на устройстве.

    Возвращает:
    JSON в том же виде, что и GetExternalIp.

    Описание:
    Запрос идёт тем же путём, что и трафик приложений, поэтому проверять нужно именно так, если прокси задан только для выбранных приложений, — браузер должен быть среди них.

    Каждый сервис открывается в отдельной вкладке, а после чтения ответа вкладка закрывается. Если браузер до проверки не был запущен, в конце он закрывается; если был, остальные его вкладки остаются как были.

    Подходят Chrome и большинство браузеров на основе Chromium. Если браузер не установлен или ответ прочитать не удалось, метод завершается ошибкой.

  • string GetExternalIpInBrowser(string packageName, params string[] addresses)
    То же самое в указанном браузере и через указанные сервисы.

    Параметры:

    • packageName — имя пакета браузера, например com.android.chrome. Если пусто — Chrome;
    • addresses — сервисы проверки IP, как в GetExternalIp.

Пример.​

var proxy = instance.DroidInstance.Proxy;

var json = proxy.GetExternalIpInBrowser(); // Адрес, с которым выходит Chrome
var proxy = instance.DroidInstance.Proxy;

// Тот же Chrome, но через ipify
var json = proxy.GetExternalIpInBrowser("com.android.chrome", "https://api.ipify.org?format=json");

GetProxy​

  • string GetProxy()
    Возвращает прокси, заданный в проекте.

    Возвращает:
    Строку с текущим значением прокси.

Пример.​

var proxy = instance.DroidInstance.Proxy;

var projectProxy = proxy.GetProxy(); // Получить прокси проекта

SetProxy​

  • void SetProxy(string proxy)
    Устанавливает прокси без дополнительных параметров - способ проксирования берётся из настроек ZennoDroid.

    Параметры:

    • proxy — значение прокси (формат: protocol://login:pass@IP:port или protocol://IP:port).
  • void SetProxy(string proxy, IDroidProxySettings settings)
    Устанавливает прокси с параметрами подключения.

    Параметры:

    • proxy — значение прокси (формат: protocol://login:pass@IP:port);
    • settings — параметры прокси (например: new DroidProxySettings.ClashViaPC()).

Пример.​

var proxy = instance.DroidInstance.Proxy;

// Установить прокси
var settings = new DroidProxySettings.ClashViaPC();
settings.DnsServers = "1.1.1.1";
instance.DroidInstance.Proxy.SetProxy("socks5://login:pass@100.20.30.40:8080", settings);