Измените DNS при всех запросах

#android #kotlin #dns #interceptor

#Android #kotlin #dns #перехватчик

Вопрос:

Мне нужно изменить DNS для всех запросов Android. Как это сделать?

Я нашел это:

 class HTTPDNSInterceptor : Interceptor {
    override fun intercept(chain: Interceptor.Chain): Response {
        val originRequest = chain.request()
        val httpUrl = originRequest.url()

        val url = httpUrl.toString()
        val host = httpUrl.host()

        val hostIP = HttpDNS.getIpByHost(host)
        val builder = originRequest.newBuilder()

        if (hostIP != null) {
            builder.url(HttpDNS.getIpUrl(url, host, hostIP))
            builder.header("host", hostIP)
        }
        val newRequest = builder.build()
        val newResponse = chain.proceed(newRequest)
        return newResponse
    }
}
  

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

Комментарии:

1. Какие вспомогательные классы вы ищете? Вы пробовали использовать okhttp, как говорится в статье?

2. HttpDNS . Я думаю, что статья может быть неполной. Как я должен это реализовать? С помощью .dns (myDns)?

3. Я мало что знаю об этой теме, но я бы посмотрел на square.github.io/okhttp/4.x/okhttp-dnsoverhttps/… Вы пытаетесь изменить, какой DNS используется системой Android, чтобы это повлияло на все приложения? Или просто измените DNS, используемый вашим приложением?