标签:override 速度 png return blank host exce src 修改
又称域名劫持,是指在特定网络下,拦截所有域名解析请求,返回假的或不可用的网址。
解决办法:
1. 手动修改路由DNS地址和密码;
2. 使用 HTTPDNS解决:
区别:
a. DNS协议建立在UDP之上,53端口;HTTPDNS协议建立在http之上,80端口.
b. 速度快(多次转发、绕路),域名解析失败率底,绕过运营商的 Local DNS ,避免域名劫持。
c. 访问过程如下图:
解决方法:
a. 使用阿里云、腾讯云、新浪等提供的HTTPDNS服务;
b. 使用可以定制DNS逻辑的网路库,如okhttp.
private static class MyDns implements Dns { @Override public List<InetAddress> lookup(String hostname) throws UnknownHostException { List<String> strIps = HttpDns.getInstance().getIpByHost(hostname); // !!! 注意 List<InetAddress> ipList; if (strIps != null && strIps.size() > 0) { ipList = new ArrayList<>(); for (String ip : strIps) { ipList.add(InetAddress.getByName(ip)); } } else { ipList = Dns.SYSTEM.lookup(hostname); } return ipList; } } private OkHttp3Utils() { okhttp3.OkHttpClient.Builder builder = new okhttp3.OkHttpClient.Builder(); builder.dns(new MyDns()); mOkHttpClient = builder.build(); }
4. 推荐文章
基础知识: http://www.cnblogs.com/softidea/p/5325162.html
okhttp: http://blog.csdn.net/sbsujjbcy/article/details/51612832
标签:override 速度 png return blank host exce src 修改
原文地址:http://www.cnblogs.com/qishuai/p/7616385.html