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
-
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
-
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);