ATS来了,网页HTTP访问怎么办?

导语: ATS来了,不要慌,浏览器iOS-TBS帮你解决。

2017年1月1日以后,所有iOS需要访问网页的app都要面临一个问题:ATS。

ATS(App Transport Security),是苹果在WWDC 15提出的,Apple 在推进网络通讯安全的一个重要方式,按照苹果的要求非https的网络访问是被禁止的;当然现阶段我们可以通过在info.plist里面中添加 NSAppTransportSecurity 字典并且将 NSAllowsArbitraryLoads 设置为YES 来禁用 ATS。

不过在WWDC 16中,Apple明确表示将收紧http的访问,从2017年1月1日起,所有提交的app默认不允许使用NSAllowsArbitraryLoads 来绕过ATS的限制,这样对于浏览器、手Q、空间等需要访问大量第三方http站点的应用来说,提前解决ATS的问题就迫在眉睫。

ATS是怎么让你访问不了HTTP的?

要完美解决ATS的问题, 需要找到一个方法既能够访问http站点,又能不使用NSAllowsArbitraryLoads 来绕过苹果的审核;

首先我们看Apple是通过什么办法让app不能使用http的,我们打开ATS进行尝试;发现ATS打开之后通过NSURLSession和NSURLConnection都不能使用http请求,因此我们怀疑是Apple通过自己的网络组件NSURLSession和NSURLConnection来控制http的访问。

因此我们进一步验证这个想法,我们用了浏览器的TBS组件,打开ATS之后通过spdy协议访问http请求,发现能够成功访问http网站。

最后我们确定Apple 是通过自己的网络组件来控制HTTP访问的,因此只要能自己实现http协议或者不用HTTP协议就能绕过ATS的限制。

但是怎么应对苹果的这个策略呢?不到两个月的时间重写一个并且稳定下来几乎就是一个不太可能完成的任务,而我们QQ浏览器TBS组件已经在QQ浏览器线上稳定运行好几年,灰常成熟和稳定,得到过千万级别用户的验证,是一个快速接入和上线的理想选择。下面我们介绍一下浏览器的TBS组件;

QQ浏览器 iOS-TBS解决ATS问题

iOS– TBS通过接管webview的网络层请求,将请求通过SPDY协议发送到浏览器的后台代理服务器;后台代理服务器再通过骨干网络去对方服务器抓取数据;

TBS的架构图如下:

这种实现方式有如下几个优势:

1.解决ATS的问题:

浏览器使用的SPDY协议是基于底层socket自己实现的网络通信组件,没有使用任何Apple提供的网络组件,并且也不是http协议,所以能够完美解决ATS防止http的问题,并且SPDY协议本身是二进制协议,安全性强于HTTP;

2.省流加速:

  • 通过TBS和浏览器后台的长链接减少延时;
  • HTTP Header也压缩减少数据传输;
  • 并发网络请求提高效率;
  • 指定请求优先级加快网页展示;
  • 后台还做了就快接入、图片压缩、资源缓存、广告过滤

3.解决运营商http网页劫持;

TBS和浏览器后台代理之间是SPDY协议通道,运营商劫持代价很高,所以不会劫持;后台的代理服务器和网站的server之间是通过骨干网络访问也避免了运营商劫持;

4.解决httpDNS的劫持

TBS和浏览器后台代理通过IP连接,HTTP请求到了后台的代理服务器才进行DNS解析,不给运营商DNS劫持机会;

5.集成了浏览器多年来对UIWebView解决的bug

6.spdy协议本身是支持加密的,相对http来说,安全性也是可以得到保障的;

前进后退缓慢问题、crash bug修复等等,后续还会增加WKWebview的过网络层hook,cookie等问题的修复;

现在已有手Q、京东、微云、空间等APP接入了TBS,为他们解决了ATS,网络劫持的问题。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

周大鑫的专栏

1 篇文章1 人订阅

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏社区的朋友们

iOS 中的 Promise 设计模式

无论是代理模式,还是闭包,在处理单一任务的时候,都出色的完成了任务。可是当两种模式要相互配合,一起完成一系列任务,并且每个任务之间还要共享信息,相互衔接,雇主就...

2.5K10
来自专栏张耀琦的专栏

iPhone 摄影中的深度捕捉 ( WWDC2017-Session 507 ) 下篇

在 iOS 11中, 了解如何利用深度信息为创意成像开辟新的可能性。 获得对高层次深度概念的更广泛的了解,并学习如何从相机中捕获流式传输和静态图像深度数据。

55100
来自专栏腾讯移动品质中心TMQ的专栏

腾讯 TMQ 团队10 年巨献: iOS 测试实践

开始敲这篇“软”文,我觉得颈肩都好硬,转转头抖抖肩,许多事情如开闸水般涌入脑海,整个人顿时放松了下来。也烦请读者朋友耐心读下来,看一看这千千万万测试人的一些共鸣...

49520
来自专栏地方网络工作室的专栏

打造黑苹果(四)安装MACOS系统

打造黑苹果(四)安装MACOS系统前情回顾打造黑苹果(一)组装硬件的选择与组装打造黑苹果(二)制作黑mac系统安装U盘打造黑苹果(三)COMS(BIOS)设置前...

1.6K00
来自专栏腾讯玄武实验室的专栏

让 iPhone “崩溃” 又有了新方法:只需要一个视频

玄武实验室在 10 月 15 日就发现了视频样本,在深入分析后,我们在微信后台对能够触发这种漏洞的恶意视频进行检测和拦截,保护了大量用户免遭攻击。

61320
来自专栏地方网络工作室的专栏

打造黑苹果(五)设置 MACOS 系统盘引导,以及安装驱动

经过前面的一系列工作,我们已经把系统安装在我们的硬盘上了,但是我们启动的时候还必须通过U盘启动,那是因为我们还没有给我们的系统设置引导,另外看上去貌似不正常,甚...

1.1K00
来自专栏林焕彬的专栏

iPhone X 适配手Q H5 页面通用解决方案

对于手Q 中的各业务来说,受 Phone X 影响的 H5 页面挺多,应该采取什么快速有效的办法来应对呢?

7.6K60
来自专栏云加头条

微信小程序的编程模式

在进行「轻芒小程序+」和其他小程序应用开发的过程中,本文作者与其团队对当前正火热的小程序开发有了更为深度的理解与认识,进而有了本文。文章从从编程模式入手,看在小...

2.6K10
来自专栏陈泽滨的专栏

关于 iOS 证书,你必须了解的知识

从事iOS开发几年,越来越发现,对iOS应用开发到发布过程中必不可少的一环,证书签名相关部分,却只是一知半解。本文从iOS证书体系的基本构成模块 入手,一步步解...

2.6K10
来自专栏郭艺帆的专栏

到底有多强?苹果的增强现实框架:ARKit

本篇文章重在 workShop 上苹果工程师的解惑和我对 ARKit 的理解, 最后会简单介绍一下相关技术。

80900

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励