H5工作背景
最新在做公司的项目,因为是定制化地图开发,需求不断变更,并且会在多种场景使用(Web,Android,IOS),需求和成本问题,H5更加适合这3端的页面嵌入,开发成本较低,需求变动大的情况下,项目也不会烂掉。
H5初析和认识
H5全称是Html5,这是不是一项技术,而是一个标准,Html5就是Html的第5个版本,哈哈哈,具体的可以自己百度,以下HTML5我简称为H5。为什么一开始说成本低呢,因为H5是web网页开发,项目需求变更后的应用页,访问web地址不变,Android,IOS端便会自动更新(当然也有缓存存在的情况,清理缓存后就会是最新的,当然也可以控制不使用缓存,看自己项目需求)。BS架构有BS架构的优势,Android/IOS里嵌入的H5页,就是一个BS架构的页面,因为他得运行机制就类似浏览器打开页面一般。H5相比原生APP,更加灵活的变动,页面功能变更不需要发布新版本包,上线应用商店,作为用户是不是很苦恼软件更新的苦恼,大家都会懒一点。。。Android和IOS原生开发都是客户端开发,作为我更喜欢原生开发(因为自己是java开发出身,h5页基本和Android很少关系,其实就是前端。。),结尾再聊一下。扯了下BS和CS,要是还不懂的小伙伴可以在书本和百度中查查学习一下。
出现的问题
一个刚做完3个月的APP项目,我认为我解决了整个APP的所有BUG,毕竟维护了2个月,代码不断的排查。除了用户提出了1-2,2-1的无赖需求,我都满足并解决了。可今天用户却向产品反映,在使用我做的APP后,底部H5页出现了抽奖广告,这让我第一反应就是网页被劫持了,因为之前自己手机XX浏览器里也出现了,当时就怀疑这东西的真实性,这会又出来闹了。用户体验很不好,反应到我的时候已经怀疑我们公司的技术实力和安全性了,毕竟是政府部门,安全表面语言说的很重要。那只能认真排查原因,杜绝现象的再次发生。
分析问题
当时收到产品第一时间反馈后,我们第一时间看到了似曾相识,第二时间猜测了以下可能性:
1.DNS劫持 。
2.HTTP劫持 。
3.第三方jar包植入广告。
如果这个广告的问题会用户的每个手机都会出现,我的测试机也会出现,那样最好,我可以调试找出问题所在,可问题是,只有一个客户机出现了问题。那我有了下一步的猜想,客户用的是3G/4G/WIFI哪一个,才出现广告植入的问题。经过一系列的测试,3G/4G/WIFI都出现了 2.出现的位置都是H5页面,Android/Ios都会出现。
问题排查
我们项目中使用的第三方jar包只有百度地图和极光推送,我宁可相信他没有做捆绑,毕竟就算捆绑,那你也没办法,谁让是免费的呢。
那基本可以定位是网络劫持(DNS/HTTP劫持)
1.什么是DNS劫持:
首先DNS是什么。DNS是在作为域名(www.baidu.com)和IP地址(192.168.1.1)相互映射的一个分布式数据库,就是我们的浏览器,会将域名拿到DNS去解析出ip地址来访问,DNS劫持是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能反应或访问的是假网址。
通俗讲,DNS帮我们指向了另一个地址,或者让我无法访问。典型的DNS劫持百度一下吧。。。
2.什么是HTTP劫持: