1. 现象

     江西客户手机端连接wifi打开URL,页面上显示淘宝店铺广告,使用手机移动网络打开正常,其他地区正常。

二. 处理过程

  1. 初步分析:3g.club项目使用了CDN,目前只有江西异常,其他地区无异常,说明问题范围仅在江西地区,根据业务人员反馈的问题现象,以及以往类似问题处理经验,该问题原因是可能是页面某个js被污染,导致污染的原因可能是dns解析被劫持
  2. 检查江西dns对3gclub的解析情况:我们使用江西dns对3g.club进行解析,并让客户在本地ping 域名返回结果,检查解析的IP是否是云端CDN节点,发现我们解析的IP和客户ping结果均正常,节点正确,排除dns解析被劫持原因
  3. 向云端CDN技术反馈问题现象,协助排查问题
  4. 统计出现此问题的客户端类型,发现手机自带的浏览器和匀加速功能的浏览器均出现问题,排除第三方浏览器云加速导致的问题;由于江西只有一家客户,而且用的是电信网络,所以暂时定位为出现问题的均是电信用户
  5. 检查江西节点上页面文件,我们将请求江西节点返回的页面、请求北京地区返回的页面、请求内网服务器返回的页面进行比较,发现页面正常,排除了江西节点到源站之间链路原因,推测原因可能在客户移动端到节点之间链路问题
  6. 由于手机没有firbug,无法抓去页面元素,我们试着使用客户那边同局域网内的电脑访问URL,结果问题没有复现。推测可能在劫持时候对request header 里User-Agent有判断。最后使用firfox插件,修改request header里User Agent,模拟手机用户请求,问题依然无法复现
  7. 我们试着让客户在url上加了参数进行访问,发现页面正常,去掉参数之后,依然有问题。将此结果反馈给CDN技术,协助排查。发现节点缓存住了页面(默认是穿透CDN回源的),CDN技术清空缓存之后,让客户重新测试,发现问题依旧
  8. 最后我们使用博瑞移动端即使测试,复现了问题,拿到页面源码,查到原因是运营商机房去回上层有劫持,最后调整了联系CDN覆盖,问题解决,

三:劫持原因分析:

1.异常页面源码:

<!DOCTYPE html><html><head><meta charset="UTF-8">
<meta name="apple-mobile-web-app-capable"content="yes">
<meta content="telephone=no"name="format-detection">
<meta name="apple-mobile-web-app-status-bar-style"content="black-translucent">
<meta name="viewport"content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
<title></title>
<style type="text/css">html,body{padding:0;margin:0}</style>
</head><body>
<iframe id="content"src="http://3g.club.xywy.com/static/20170307/127326432.htm?jid=1"width="100%"frameborder="no"></iframe>
</body><script type="text/javascript"src="http://116.62.103.8/ads/adtb.js"></script>
<script type=“text/javascript">document.getElementById("content").height=window.innerHeight;</script></html>

说明:通过此段代码可以看出,用户请求http://3g.club.xywy.com/static/20170307/127326432.htm?jid=1的页面已经被替换,通过在页面中嵌入了一个iframe元素,使用src属性来请求正常页面,然后在重新生成页面,将异常广告植入到页面中

2.页面异常js 分析:http://116.62.103.8/ads/adtb.js

文件内容:

var cript= document.createElement("script");
var headcont=document.getElementsByTagName("head")[0];
cript.src="http://cdn.staticfile.org/jquery/1.7/jquery.min.js";
headcont.appendChild(cript);
document.onready=function(){
if($('#JDGPEOGJEO').length<){
$('body').append('<div id="JDGPEOGJEO" style="position: fixed; width: 100%;height:124px;left:0;bottom:0; z-index:9999999; "><div id="JFEOCL" style="font-size:16px; width:16px; font-weight:600; height:16px; background:#D6CFCF; text-align:center; line-height:16px; color:#6DBEE8; position: absolute; right:0; top:0;">×</div><iframe id="content" src="http://ali.7676.com/wap/tanx/69910363.html" width="100%" height="124px" style="margin:0px; padding:0px;" frameborder="no" ></iframe></div>')
$("#JFEOCL").click(function(){
$(this).parent().remove()
})
}
}

说明:此js 是判断页面上是否有植入的广告,如果没有的话,则重新生成广告页面,并植入页面,js中调用的方法通过ifram src属性请求http://ali.7676.com/wap/tanx/69910363.html页面,此页面显示空白,但是内部会使用script 元素加载其他js,最后加载的w.js中有各种定义的方法,如对ua判断等

下面的curl的结果

curl http://ali.7676.com/wap/tanx/69910363.html
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />
<style type="text/css"> html,body{margin:0; padding:0px;}</style>
</head><body>
<!-- AFP两段式代码-公用代码 -->
<script type="text/javascript" src="http://afpmm.alicdn.com/g/mm/afp-cdn/JS/w.js"></script> <!-- 69910363:测试 - 20170106 类型:移动网页 形式:通栏 尺寸:0x0-->
<script type="text/javascript">
_mmW.q({
aid:"mm_120329371_20560783_69910363",
serverbaseurl:"afpeng.alimama.com/"
})
</script>
</body></html>

解决一起web 页面被劫持的案例的更多相关文章

  1. 另类方法解决设计Web页面出现:Error Creating Control

    在B/S开发的过程中,经常会遇到这样的提示:Error Creating Control ,而这些页面明明之前是可以打开的,但还是出现如下图所示: 网上找到的方法是把控件初始化放在OnInit里去写, ...

  2. 基于python的websocket开发,tomcat日志web页面实时打印监控案例

    web socket 接收器:webSocket.py 相关依赖 # pip install bottle gevent gevent-websocket argparse from bottle i ...

  3. 解决微信web页面键盘收起不回弹,导致按钮失效

    在文本框失去焦点时加入以下代码 $('input,textarea').blur(function () { setTimeout(function(){ window.scrollTo(,docum ...

  4. 集群重启后启动ambari-server访问Web页面无法启动集群解决

    集群重启后启动ambari-server访问Web页面无法启动集群解决 使用ambari部署的集群重新启动后,必须手动重启ambari-server和所有集群主机上的ambari-agent. amb ...

  5. 解决VS2010打开Web页面时经常由于内存较低而导致VS2010自动关闭的问题

    在使用VS2010 开发Web应用程序的时候,经常打开一个Web页面进行编辑前台代码的时候要等待很久(甚至等了半天结果还挂掉,简直令人抓狂), 之前也在网上找了很多相关的方法,都没办法解决,今天无意中 ...

  6. ios访问web页面<div>点击事件不起效果,以及alert()显示url的解决办法

    ios访问web页面<div>点击不起效果,在其div上添加style=”cursor:pointer:“ jquery web页面动态append()事件调用方法:$(document) ...

  7. 记Outlook插件与Web页面交互的各种坑 (含c# HttpWebRequest 连接https 的完美解决方法)

    1) 方案一,  使用Web Service  基础功能没问题, 只是在连接https (ssh) 网站时, 需要针对https进行开发 (即http 和https 生成两套接口, 不太容易统一 ). ...

  8. Juniper SRX550防火墙web页面CPU达到100%的故障解决办法

    Juniper SRX550防火墙web页面CPU达到100%的故障解决办法 利用telnet远程连接主机,对web页面注销重新登录即可,在配置中输入命令:run restart web-manage ...

  9. Hadoop-1,web页面调用报无hbase.jar包【以解决】 2,报java.lang.NoSuchMethodError: org.eclipse.jdt.internal.compiler.CompilationResult.getProblems()[Lorg/eclipse/jdt/core/compiler/IProblem;【以解决】

    1:web页面调用报无hbase.jar包 本来java文件就没有问题,但是jsp一调用那个java文件里的方法就报错,报的无hadoop/hbase相关报的问题. 主要解决方法是: 复制hbase/ ...

随机推荐

  1. Mybatis系列(一):Mybatis入门

    一.Mybatis是什么 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改 ...

  2. 用js实现table内容从下到上连续滚动

    网上有很多用ul实现新闻列表滚动的例子,但是很少有直接用table实现列表内容滚动的例子,而Marquee标签滚动的效果不是很好,于是就自己写了一个,提供给攻城师朋友们参考 实现思路:由于table包 ...

  3. Yii2 响应部分 response

    当应用完成处理一个请求后, 会生成一个yii\web\Response响应对象并发送给终端用户 响应对象包含的信息有HTTP状态码,HTTP头和主体内容等, 网页应用开发的最终目的本质上就是根据不同的 ...

  4. maven中snapshot快照库和release发布库的区别和作用 (转)

    Maven介绍,包括作用.核心概念.用法.常用命令.扩展及配置 http://www.trinea.cn/android/maven/ 本文来源于铁木箱子的博客http://www.mzone.cc ...

  5. UITableView 顶部能够放大的图片

    UITableView 顶部能够放大的图片 现在有挺多的应用在 UITableView 顶部加入图片,通过拖拽 UITableView 来实现图片的放大. 对比一下腾讯出品的两款App QQ:可展示更 ...

  6. Mac PD虚拟机卸载删除

    MAC 10.12.6 从Application直接删掉PD Mac盘-->资源庫-->preference-->删掉parallels

  7. MongoDB 之 Capped Collection

    MongoDB 支持 Capped Collection,一种固定大小的集合,当集合的大小达到指定大小时,新数据覆盖老数据,MongoDB Replica set 中的 oplog 就是 Capped ...

  8. springMVC中如何访问WebContent中的资源文件

    一.问题: 我的工程目录如下: WebContent |-css |-js |-imgs |-META-INF |-WEB-INF |-jsp |-login.jsp 如何在login.jsp中引用i ...

  9. Line云端全自动加好友机器人

    一个 LINE 帐号可以加入 5,000 名好友,让这些 5,000 名好友收到 LINE 的主动提醒,好友会看到我的头像.主页照片.姓名与状态消息等,这种行为称为 LINE 的曝光. 如果我们要针对 ...

  10. linux 实时查看Tomcat日志信息

    cd /../tomcat/logs 进入tomcat/logs/文件夹下  # tail -f catalina.out