#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, используемый вашим приложением?