黑帽联盟

 找回密码
 会员注册
查看: 1720|回复: 1
打印 上一主题 下一主题

[经验] 教你怎么屏蔽掉在移动端的宽带运营商的流量劫持,屏蔽无耻的广告

[复制链接]
yun 黑帽联盟官方人员 

920

主题

37

听众

1364

积分

超级版主

Rank: 8Rank: 8

  • TA的每日心情
    奋斗
    2019-10-18 11:20
  • 签到天数: 678 天

    [LV.9]以坛为家II

    自从住进了租房以来,在使用租房的宽带的时候总有个问题,已经几个月了,今天我实在无法忍受这些广告了。决定要整治这些劫持广告。
    一开始想到用socks5代理,需要自己租服务器,而且很麻烦,而且我研究了下劫持的页面,并且从网上也发现了一些其它用户遇到的问题。

    我主要遇到下面几个类型的劫持:
    类型一:输入百度的时候,后面会自动被加上尾巴然后进行跳转。尤其是输入www.hao123.com的时候,会跳转到http://www.hao123.com/?tn=94150859_hao_pg

    但是如果你使用https://www.baidu.com是没法跳转的,建议大家修改自己的chrome的浏览器的默认搜索引擎,加上https,还好百度开启了https,这时候我深感推广https的重要性。没有https的话,这些运营商想怎么改你的网页就怎么修改。

    类型二:就是常见的右下角广告了,这个还好解决,装上adblock plus就可以一劳永逸了。

    但是真正让我苦恼的是下面的类型三:

    类型三:手机访问网页的时候,运营商会根据你的UA来植入广告,这个广告是和pc上浏览器的是不同的。
    这个广告是类似于我们玩手游的时候,在网页中间插入一个广告悬浮窗达到目的。。。这移动端的广告还真是与时俱进啊

    下面自己感受一下这个广告,我有强迫症的简直无法忍受。
    21.png

    点开右侧那个悬浮广告,就会出现下面这个了:
    22.png


    再看一下下面的声明,多么无耻,没有下限啊。。。
    23.png

    还无毒,你知不知道你造成了骚扰啊。
    这个玩意的毒害真的太大了。
    主要是使用了WebView的app,app在用webview加载网页的时候,此广告都会识别浏览器中携带的ua信息,自动植入。。。
    我看的今日头条app在我租房的wifi下基本无法使用,今日头条很多h5的页面,被强行修改了页面内容。无法浏览。
    同时查看微信公众号的东西,中间同样出现悬浮窗,我不理解为什么微信不尽早使用https。

    后面我开始想办法解决这个毒瘤了。
    既然你是通过ua识别的,首先我通过chrome的device mode,设置为nexus7设备访问,刷新几次页面之后,如愿所偿的出现了广告。
    于是我修改ua(chrome在device 模式下的ua是可以修改的),将ua修改为f u c k。

    果然没有移动广告了,但是右下角广告就出现了。。。
    好吧我不修改ua,在ua后面加入足够多的乱码。经过一番测试,加到500多个没用字符之后,不再出现广告了。

    个人理解为:这个劫持商要劫持那么多用户,肯定对http header的长度有所限制,超出这个限制之后,它就不会再劫持了,否则他自己的服务器压力也很大的。

    到此,这个方案已经有效了,接下来是怎么运用到android平台上。
    这时候需要用到一个android上的神器框架xposed。不了解的读者可以自行百度一下。

    思路:使用xposed框架hook webView控件的loadUrl,在loadUrl之前将webView的ua修改为足够长。
    我的xposed代码很简单,几行就解决了这个劫持问题了。
    1. public static final String ua="Mozilla/5.0 (Linux; Android 4.3; Nexus 7 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2307.2 Safari/537.360123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199";
    2.         @Override
    3.         public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {
    4.                 // TODO Auto-generated method stub
    5.                 XposedHelpers.findAndHookMethod("android.webkit.WebView", lpparam.classLoader, "loadUrl", String.class,new XC_MethodHook() {
    6.                         
    7.                         
    8.                         @Override
    9.                         protected void beforeHookedMethod(MethodHookParam param)
    10.                                         throws Throwable {
    11.                                 // TODO Auto-generated method stub
    12.                                 Object thisObj=param.thisObject;
    13.                                 if(thisObj instanceof WebView){
    14.                                         ((WebView) thisObj).getSettings().setUserAgentString(ua);
    15.                                 }
    16.                         }
    17.                 });
    18.         }

    复制代码
    上面的ua,是找到一个移动端适用的ua,然后后面加上500多个没用字符。移动端ua是一定要的,我发现如果我没用移动端ua的话,有些app是会拒绝加载的,因为他们需要ua里面的Android这个关键字。

    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    4

    主题

    3

    听众

    302

    积分

    黑帽学员

    Rank: 3Rank: 3

  • TA的每日心情
    郁闷
    2019-5-8 02:08
  • 签到天数: 265 天

    [LV.8]以坛为家I

    看不出来你有强迫症哈
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部