推荐理由

ATS(App Transport Security),是苹果在WWDC 15提出的,苹果将收紧http的访问,这样会造成我们周边的许多站点和应用均不能正常访问,这里就对ATS进行了简单分析。和如何利用TBS解决ATS问题。

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,网络劫持的问题。

文章出自腾讯云技术社区

https://www.qcloud.com/community/article/164816001481011909

推荐大家关注腾讯云技术社区微信公众号:QcloudCommunity

ATS来了,网页HTTP访问怎么办?的更多相关文章

  1. 利用html5中的localStorage获取网页被访问的次数

    利用html5中的localStorage获取网页被访问的次数 <!DOCTYPE html> <html> <head> <meta charset=&qu ...

  2. 易语言关于使用CURL,网页_访问,网页_访问S,网页_访问_对象,鱼刺(winHttpW)发送Get性能测试

    易语言关于使用 CURL,网页_访问,网页_访问S,网页_访问_对象,鱼刺(winHttpW)发送Get性能测试 测试模块情况: |-精易模块5.8  |-鱼刺类Http  |-libCURL +++ ...

  3. IIS 无法显示网页 目前访问网站的用户过多

    最近把一个服务部署到XP系统的IIS上,供其他程序调用,在访问了几个页面后,会出现“无法显示网页 目前访问网站的用户过多”的提示. 网上找了,果然有解决方法: 1.打开IIS,在网站上右键,选择“属性 ...

  4. 网页计时访问器application对象

    网页计时访问器 application对象代表Web应用本身,整个Web共享一个application对象.开始于服务器打开结束与服务器关闭.在不同的浏览器打开j计时器仍然有作用.除非把服务器关闭 & ...

  5. mvc项目controller重命名了,用原网页url访问不了了,怎么办?

    如题.MVC项目,手机网站. 公司的官方微信上,用户关注之后,点击相应菜单就可以使用相关的功能. 最近项目重构,有些不规范的命名方式给予了重构.上线后,微信上发现一些网页访问不了了. 联系微信的维护人 ...

  6. IIS6.0配置正常,但是显示“网页无法访问”,Httperr.log中显示全是“Connections_refused”,问题总结

    转自:http://blog.csdn.net/foxeatapple/article/details/21983869 最近部门的Web服务器突然无法访问! 加班解决! 问题症状: 1.“Inter ...

  7. Windows Server 2003 asp网页不能访问的常见问题

    1. [开始]--[程序]--[管理工具]--[Internet信息服务管理器],在服务器名下的“web服务扩展”的右窗口,单击active server pages -> 单击[允许].2. ...

  8. 禁止通过网页URL访问文件夹 asp.net

    我们可以通过如下的两种办法,禁止用户通过浏览器的URL地址直接访问网站服务器的文件夹. 一.通过类和配置文件限制 ①NET C#代码 新建一个类,继承IHttpHandler using System ...

  9. (26)基于cookie的登陆认证(写入cookie、删除cookie、登陆后所有域下的网页都可访问、登陆成功跳转至用户开始访问的页面、使用装饰器完成所有页面的登陆认证)

    获取cookie request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age ...

随机推荐

  1. java字节数组格式化为十六进制字符串

    /** * 格式化byte * * @param b * @return */ public static String byte2hex(byte[] b) { char[] Digit = { ' ...

  2. java异常的一些小知识

    异常,我们软件都需要面对的一个问题.如何让你的软件更加健壮呢?这是一个值得我们考虑的问题.这里主要为大家介绍一下异常是什么,异常是如何产生的,如何将异常抛出,如何捕获异常,对于异常应该如何处理的个人一 ...

  3. shell编程其实真的很简单(五)

    通过前几篇文章的学习,我们学会了shell的基本语法.在linux的实际操作中,我们经常看到命令会有很多参数,例如:ls -al 等等,那么这个参数是怎么处理的呢? 接下来我们就来看看shell脚本对 ...

  4. java类初始化,使用构造方法

    public class test { /** * java类的初步学习: *   学会使用和类名相同的两种构造方法,对公共类方法的调用: */ public static void main(Str ...

  5. Azure 基础:使用 powershell 创建虚拟网络

    什么是虚拟网络 虚拟网络是您的网络在 Azure 云上的表示形式.您可以完全控制虚拟网络的 IP 地址.DNS 的设置.安全策略和路由表.您还可以更进一步,把虚拟网络划分为多个子网.然后用它们连接您的 ...

  6. Spring的bean管理(注解)

    前端时间总是用配置文件  内容太多 下面认识一下注解 注解是什么? 1代码里面的特殊标记,使用注解可以完成功能 2注解写法@XXX 3使用注解可以少些很多配置文件 Spring注解开发准备 注解创建准 ...

  7. PPT中翻书动画的制作

    一.新建一个空白的PowerPoint文档.   二.制作两个页面:   1.点击“自选图形”右边的小三角,选择“基本图形”下的“折角形”图形,在PowerPoint中画出一个书页样的图形,宽度最好小 ...

  8. 从CMOS到触发器(一)

    作为一个学微电子专业的IC learner,这个学期也有一门课:<微电子器件>,今天我就来聊聊基本的器件:CMOS器件及其电路.在后面会聊聊锁存器和触发器. 今天的主要内容如下所示: ·M ...

  9. 从HTML5规范弄清i、em、b、strong元素的区别

    为了语义化,HTML5增加了不少新标签.其中i.em和b.strong这两组标签是最容易弄混的,不好好去探究一下,还真说不清.这个也是前端面试中经常会问的问题.今天从源头上,也就是从HTML5的文档( ...

  10. 什么是Git?

    其实我在写这篇随笔的时候连Git是什么都不知道,只是听说过,也注册了一个GitHub的账号,但并不会玩. 我也是查看了半天的网页才明白一个大概,但我觉得以后肯定会经常用到它. 简单的来说, Git 是 ...