Перенаправление всей сети приложения Android (которое использует библиотеки) через прокси-сеть (если она доступна)


Я работаю над приложением для Android и использую различные библиотеки, такие как Picaso, Retrofit, Crashlytics и т. д. и у моего колледжа Wi-Fi есть прокси на нем.

Я знаю, как использовать прокси при отправке HTTP-запросов на сервер, но все библиотеки, которые я использую, имеют собственные HTTP-запросы, поэтому переопределение всех их HTTP-классов будет головной болью, и я даже не знаю, как это сделать.

Итак, есть ли способ направить весь трафик приложения через прокси (когда доступно), как любая библиотека или какой-либо HTTP-запрос, переопределяющий все исходящие запросы.

2 2

2 ответа:

Я реализовал это, как показано ниже. (Я забыл первоисточник).

import java.net.Proxy;
import java.net.ProxySelector;

//setting Application-Wide proxy Values
private void setProxy() {
    //Device proxy settings
    ProxySelector defaultProxySelector = ProxySelector.getDefault();
    Proxy proxy = null;
    List<Proxy> proxyList = defaultProxySelector.select(URI.create("http://www.google.in"));
    if (proxyList.size() > 0) {
        proxy = proxyList.get(0);

        Log.d("proxy", String.valueOf(proxy));

        try {
            String proxyType = String.valueOf(proxy.type());

            //setting HTTP Proxy
            if (proxyType.equals("HTTP")) {
                String proxyAddress = String.valueOf(proxy.address());
                String[] proxyDetails = proxyAddress.split(":");
                String proxyHost = proxyDetails[0];
                String proxyPort = proxyDetails[1];
                Log.d("proxy", proxyType + " " + proxyHost + " " + proxyPort);

                System.setProperty("http.proxyHost", proxyHost);
                System.setProperty("http.proxyPort", proxyPort);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Поместите этот метод в метод onCreate вашего базового действия, чтобы он выполнялся каждый раз, когда пользователь открывает приложение.

Вы можете перенаправить определенный сетевой трафик (на основе каждого приложения) по следующей ссылке.

Сетевой трафик через прокси