HTML5页面被运营商DNS劫持问题及解决方案,app中h5页面源码的获取

本文探讨了App中HTML5页面遭遇运营商网络强制插入广告及悬浮层的问题,详细介绍了通过HTTPS来解决这一问题的方法,以及HTTPS相较于HTTP的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

App应用的html5页面经过运营商的移动网络(非wifi网络),被强制插入广告和手机管家的多余信息,在有些场景严重干扰用户的操作,也产生在美丽的页面上加入了不协调的悬浮层。并且这个手机管家类的悬浮层有时间出现,有时间不出现,神出鬼没,虽然你可以通过点击关闭,关键是突然出现,有时候还关闭不了。总之用户不喜欢这种用户不需要的选择,所以干掉它吧!
在app中h5页面源码,可以通过下面代码获得,其中url就是h5页面的源码,简单吧!
分析app收到WebViewJavascriptBridge的页面加载-(void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString *url = [NSString stringWithContentsOfURL:webView.request.URL encoding: NSUTF8StringEncoding error:nil];
if (webView.canGoBack)
{
self.exitButton.hidden=NO;
}else
{
self.exitButton.hidden=YES;
}
}
通过分析,一个普通的页面,经过Wi-Fi网络,webViewDidFinishLoad只响应一次就能显示出页面。
经过移动手机网络,需要经过三次webViewDidFinishLoad调用,并且三次的h5源码都相同。
基本上从app无法很好的解决方案,除非你的页面只有一层,只让它成功调用次。若你的应用有二级页面很难控制了。
所以最终的解决方案是h5页面。只需要你访问的h5页面采用的是https不是http就能很好的解决这个问题,完美的解决DNS劫持。当然https需要你购买证书或者服务器自己做一个证书,具体https是后台开发的问题我是外行。
2017年1月1日,苹果商店禁止使用http的新应用上架,现在还允许包含http的应用上架,看来也没有一棍子打死。https是比http安全的多,虽然也有破解方案,但是对于防一般人窃取信息就够了。软件安全是相对的,防一般外行,不是防止一切"钻家"(黑客)的。很多人都会感觉黑客都是写软件很好的人,其实并非都如此,很多只对写代码了解皮毛,能简单写代码利用软件漏洞的人不在少数。
谷歌也将要拿http访问的网站开刀了,见文章《洒泪告别 神秘代码终被谷歌逼上绝路》
这里写图片描述
WKWebView的h5页面(js页面)的源码获取和UIWebView皆然不同,需要协议拦截,但造成js的post请求的参数被清空的严重问题,所以只能在测试时使用或不需要发送带参数的post请求的js页面使用。具体参照文章《WKWebView采用HybridNSURLProtocol协议拦截图片等资源预加载》。代码片段如下:

- (void)viewDidLoad {
    [super viewDidLoad];
    [self registerNSURLProtocolScheme];
}
- (void)registerNSURLProtocolScheme
{
    [NSURLProtocol wk_registerScheme:@"https"];
    [NSURLProtocol wk_registerScheme:@"http"];
}
-(void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{
    
    NSString *url = [NSString stringWithContentsOfURL:webView.URL encoding: NSUTF8StringEncoding error:nil];
    NSLog(@"webView.URL:%@",url);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值