首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    使用HttpDns降低DNS劫持风险

    DNS劫持 DNS是Domain Name System的简写,即域名系统,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。...通俗的说,当你在浏览器中输入网站的域名时,DNS服务器会将域名转为具体的IP地址。...在Android开发中,使用HttpDns将获得的IP地址应用请求的最简单方式是,将域名替换为IP,然后用新的URL发起HTTP请求。这样就能有效的防止DNS劫持的行为。...HostnameVerifier 的 verify() 传回来的域名是url中的ip地址,但我们可以在定制的域名证书验证逻辑中,使用原始的真实的域名与服务器返回的证书一起做验证。...具体而实现上,使用那些可以定制Dns逻辑的网络库,比如OkHttp,或者使用Chromium的网络库基础上做的库,实现域名解析的接口,并在该接口的实现中通过HttpDns模块来执行域名解析。

    2K40

    OKHttp源码解析(四)--中阶之拦截器及调用链

    2、IP address(ip地址):无论是通过直连还是通过代理,DNS服务器可能会尝试多个ip地址。...preferred. */ 简单翻译一下就是: 当在创建与目标地址的链接时,为了避免重复出现路由故障而创建的黑名单,如果尝试链接特定的IP或者代理服务器最后失败了,将记住这些故障。...而且借助于域名做负均衡已经是网络中非常常见的手法了,因而,常常会有域名对应不同IP地址的情况。同时相同系统也可以设置多个代理,这使Route的选择变得非常复杂。...postponedRoutes.isEmpty(); } hasNext()表明是否有可以使用的路由 里面做了三个判断,如果满足一条就可以表明有可以使用的路由 :1是否还有代理、2是否还有Socket...应用层配置不在连接(默认为true),则不可恢复 请求Request是不可重复使用的Request,则不可恢复 根据Exception的类型判断是否可以恢复的 (isRecoverable()方法)

    1.8K50

    深入理解OkHttp源码(三)——网络操作

    OkHttp对Socket的流操作使用了Okio进行了封装,本篇博客不做介绍,想了解的朋友可以参考拆轮子系列:拆Okio。...这指定了尝试的IP地址(或者进过DNS查询得到的地址)、使用的代理服务器(如果使用了ProxySelector)和使用哪个版本的TLS进行谈判。(对于HTTPS连接) 对于一个地址,可能有多个路由。...如果连接出现了问题,OkHttp会选择另外一条路由进行再次尝试。这使得OkHttp在一个服务器的一些地址不可到达时仍然可用。 一旦读取到响应后,连接将会退还到连接池中以便可以复用。...根据HttpUrl是否是HTTPS,创建sslSocketFactory等字段,而在Address的构造方法中,则根据sslSocketFactory是否为null判断是HTTP模式还是HTTPS模式。...(rawSocket)); } 从代码可以看出,首先获取代理和地址,然后根据代理的类型是使用SocketFactory工厂创建无参的rawSocket还是使用带代理参数的Socket构造方法,得到了

    1.3K10

    Android | okhttp细枝篇

    要是在面试官前吹:“我做的玩安卓App,用了okhttp,他强大的缓存机制可以为用户提速、节省流量”,是会被吊打的! ? 缓存体系需要客户端和后端共建,不然okhttp也有心无力。...(当然,客户端也可以在okhttp外自行实现一层缓存,那就另说了) connection ?...连接池维护了一个RouteDatabase来记录ip黑名单,可以记录最近连接失败过的ip地址,在RouteSelector中则会优先选择不在黑名单中的ip, //RouteSelector.java Selection...(); } return new Selection(routes); } 可见,如果一个域名配了多个ip,当某个ip不稳定时(连接失败过),之后就会跳过而优先使用更稳定的ip。...ip进行调试 return getDebugIp(); } if (useConfigIp(hostname)) {//使用服务端下发的ip表,跳过域名解析

    85130

    okhttp 使用笔记

    前言 okhttp是一个网络请求框架,也是目前市面上使用最多的网络框架之一。 之前参与的项目一直没使用,这次刚好有个机会使用OKHttp,记录下。...使用笔记 okhttp git地址: https://github.com/square/okhttp okhttp 相关文档介绍:https://square.github.io/okhttp/https.../ okhttp 使用如果没有特殊需求,使用相对简单,如下: 1....使用大体步骤可以分为以下3步: 创建一个 OkHttp 的实例例 创建 Request 创建 Call 并发起⽹网络请求 tips: execute() 为同步方法, Android中常用的enqueue...使用自签名证书 需要自己处理证书校验。( 可以选择信任所有证书 或者 自定义证书校验 ) a. 信任所有证书(处理比较粗暴,忽略安全问题,不建议使用) 处理方式可以google查询。有很多介绍 b.

    51510

    okhttp之OkHttpClient

    创建单个OkHttpClient实例并将其用于所有HTTP调用时,OkHttp的性能最佳。 这是因为每个OkHttpClient都拥有自己的连接池和线程池。 重用连接和线程可减少延迟并节省内存。...相反,为每个请求创建一个OkHttpClient会浪费空闲池上的资源。 当需要多个OkHttpClient时,我们可以使用newBuilder()自定义共享的OkHttpClient实例。...重定向 followSslRedirects(boolean followProtocolRedirects) followRedirects(boolean followRedirects) 是否可以重定向...) sslSocketFactory(SSLSocketFactory sslSocketFactory, X509TrustManager trustManager) 设置相关的socket工厂。...cache(@Nullable Cache cache) 设置响应缓存以用于读取和写入缓存的响应。 dns(Dns dns) 设置用于查找主机名 IP 地址的 DNS 服务。

    1.6K20

    【OkHttp】OkHttp 源码分析 ( OkHttpClient.Builder 构造器源码分析 )

    | 同步 Post 请求 | 异步 Post 请求 ) 【OkHttp】OkHttp 上传图片 ( 获取 SD 卡动态权限 | 跳转到相册界面选择图片 | 使用 OkHttp 上传图片文件 ) 【OkHttp...} 分析 OkHttpClient.Builder 创建者中可以设置的成员 : 调度器 : 处理 Get / Post 请求线程的调度 ; Dispatcher dispatcher; 代理 :...进行缓存 , 根据 url , 请求方法 , 请求头 , 验证是否使用某个缓存 ; ( 只支持 Get 请求的缓存响应方式 ) @Nullable Cache cache; 内置缓存对象 : @Nullable...HTTPS 协议时 , 约束可以信任的证书 , 防止不受信任的证书的攻击行为 , 如果没有受信任的证书 , 报异常 ; CertificatePinner certificatePinner; 身份认证器...1 个客户端与 1 个服务器之间的连接是 1 个 Connection 连接 ; 这些连接都放在该连接池中 , 统一管理 ; 如果有相同的 HTTP 请求 , 则可以使用连接池中的连接 ; ConnectionPool

    86520

    美图App的移动端DNS优化实践:HTTPS请求耗时减小近半1、引言2、相关文章3、内容概述4、LocalDNS VS  HTTP DNS5、美图APP的DNS 优化策略探索5、美图APP无侵入的 S

    DNS 服务作用于网络连接之前,将域名解析为 IP 地址供后续流程进行连接(原理详见:《TCP/IP详解 卷1:协议 - 第14章 DNS:域名系统》)。...WEB 服务器发起 HTTP 请求,这个 HTTP WEB 将返回域名解析后的 IP 地址。...能够直接获取到用户的 IP 地址,从而实现准确导流; 3)扩展性强:本身基于 HTTP 协议,可以实现更强大的功能扩展。...上述这个 SNI 场景下的问题,我们是否有办法解决呢?  可以解决,需用客户端重新定制 SSLSocketFactory , 不过修改的代码相对较多,这里就不列举了。...那么在这里,我们是否可以手动修改这个映射表内容,把 getaddrinfo 的内存地址替换成我们的 my_getaddrinfo 地址呢?

    1.4K20

    Android与服务端使用Https加密通信

    Https证书 现在网络安全越来越受重视,通用做法是采用https加密通信,使用https需要数字证书,只有合法的证书才能被浏览器、操作系统默认支持,而所谓的合法证书是在CA公司那购买的(原来我们的合法性是花钱从别人那买来的...服务端使用https 生成https证书 JDK自带的keytool工具可以很方便生成https证书,可以查看它的使用方法: 比如这条命令就可以生成一个有效期10年的证书: keytool -genkey...Android端通常使用 Retrofit 做网络请求,Retrofit底层就是OKhttp,OKhttp实现自定义https校验并不难,主要分三步。...设置OkHttpClient校验证书 然后使用上面的trustManager构建OkHttpClient SSLSocketFactory sslSocketFactory = null; try {...(sslSocketFactory, trustManager) .build();复制代码 使用这个配置好的OkHttpClient与服务端交互,就可以支持自定义https证书加密通信了,如果服务端证书不符

    73920

    Android技能树 — 网络小结之 OkHttp超超超超超超超详细解析

    我们知道在使用okhttp的时候可以使用同步请求,也可以使用异步请求,所以肯定不同的请求,在分发的时候有不同的处理。...我们以前网络系列的文章提过,发送到后台,肯定是一个完整的请求包,但是我们使用okhttp的时候,只是转入了我们需要给后台的参数,甚至我们如果是get请求,只是传入了相应的url网络地址就能拿到数据,说明...参考文章:Java SSLSocket的使用 用SSLSocketFactory 连接https的地址 CertificateChainCleaner:不是很了解,所以还是老样子,通过谷歌翻译...ip地址。...我们来看我们的拦截器和拦截器链条: 电话拦截器: ? 地址拦截器: ? 拦截器链: ? Activity.java: ? 最后我们可以看到我们的result结果为: ?

    92410

    深入OKHttp之网络连接

    其中包含了一套路由,每个路由有自己的地址和代理。 在拥有这组 ip 地址后,会再次尝试从 Pool 中获取连接对象。如果仍然获取不到,就自己创建一个。...具体 http2 的满足条件,我们后面再继续探究。 我们还可以发现:每次我们使用连接的时候,都会调用 StreamAllocation 的 acquire 方法。...,如果 http 连接不支持 ssl 的话,就认为他是 http 1.1, 虽然理论上 http2 也可以是非 ssl 的,但是一般在使用中,http2 是必须支持 https 的。...HTTP2 需要满足这些条件可以进行连接复用: •路由共享 ip 地址,这要求我们为两个 host 都有一个dns地址,代理除外。...现在,我们了解了 OKHTTP 对 HTTP 请求进行的连接, UML 图可以清晰的展示每个类的关系:我们也可以对 隧道代理,SSL,HTTP2具体的帧格式等特性,进行进一步的网络知识的深入学习和分析

    2.3K10

    Java封装OkHttp3工具类

    Java封装OkHttp3工具类,适用于Java后端开发者 说实在话,用过挺多网络请求工具,有过java原生的,HttpClient3和4,但是个人感觉用了OkHttp3之后,之前的那些完全不想再用了...怎么说呢,代码轻便,使用起来很很很灵活,响应快,比起HttpClient好用许多。当然,这些是我个人观点,不喜勿喷。...准备工作 Maven项目在pom文件中引入jar包 com.squareup.okhttp3 okhttp...{ // get请求,方法顺序按照这种方式,切记选择post/get一定要放在倒数第二,同步或者异步倒数第一,才会正确执行 OkHttpUtils.builder().url("请求地址...} }); } 结语 封装的明明白白,使用的简简单单,简单的几下就能做请求,用建造者模式是真的舒服。

    4.4K31

    基于 RxJava2+Retrofit2 精心打造的 Android 基础框架 XSnow

    如何将响应结果通用处理就成为该模块的重点,项目中采用泛型转换方式,将响应结果ResponseBody通过map操作符转换成需要的T,具体实现参考项目中http包下的func包,如果需要Http响应码,也可以将响应结果包装成...全局配置支持CallAdapter.Factory、Converter.Factory、okhttp3.Call.Factory、SSLSocketFactory、HostnameVerifier、ConnectionPool...局部请求配置支持主机URL、请求后缀、请求头、请求参数、拦截器、本地缓存策略、本地缓存时间、本地缓存key、连接超时时间、读写超时时间的一系列配置。...使用示例: 配置:需要通过gradle添加greendao的相关插件配置,还有需要在当前应用module中的android配置下添加如下配置信息,具体可以参考demo的示例 greendao{...==网络访问的API调试采用的是moco服务进行处理的,项目中有提供开启该服务的命令,需要在使用时调用命令开启该服务,还有需要将应用初始化的baseurl设置为本地电脑的IP地址。

    1.2K70
    领券