V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pysama
V2EX  ›  程序员

网页被劫持,如何破?

  •  
  •   pysama · 2015-08-16 00:17:01 +08:00 · 7299 次点击
    这是一个创建于 3388 天前的主题,其中的信息可能已经有所发展或是发生改变。

    要不是前几天浏览常用网页时右下角弹出莫名其妙的广告图,我还不知道我的网页被劫持,打开chorme控制台,看到一个大大的iframe横在那里,瞬间醉了。ISP服务商真是恶心,每月交那么多宽带费,还要搞这种勾当。

    想请教:

    • 如何方便的检测网页是否被劫持?(我总不能一直开着developTool浏览网页吧)
    • 对于被劫持,如何解决?我也没法去要求我的目标网站都启用https

    个人思路:

    • 弄个chrome插件,检测当前网站是否有iframe(假定我的目标网站都是没有iframe的),如果有iframe,则将顶层的DOM内容替换为真实网站的DOM.

    希望有更好的解决方案。谢谢了

    43 条回复    2015-09-22 20:49:50 +08:00
    wd0g
        1
    wd0g  
       2015-08-16 00:33:30 +08:00
    不知能否可以用JS来检查,先匹配出广告,在删掉!
    DIYgod
        2
    DIYgod  
       2015-08-16 01:00:19 +08:00
    投诉啊。。。。。。
    lotuslotus
        3
    lotuslotus  
       2015-08-16 01:05:51 +08:00
    @wd0g 以前写过一个油猴的脚本,只要检测到加载了openV4.js或者openV5.js就重新加载页面。后来电信插广告插得太频繁了,脚本完全架不住,直接打电话投诉……
    Twinkle
        4
    Twinkle  
       2015-08-16 01:07:39 +08:00
    屏蔽加载脚本的ip
    andy12530
        5
    andy12530  
       2015-08-16 01:12:02 +08:00
    https
    Feobe
        6
    Feobe  
       2015-08-16 01:48:52 +08:00
    坚决的反复投诉ISP即可。
    ljbha007
        7
    ljbha007  
       2015-08-16 02:05:29 +08:00 via Android
    做个插件 直接document的load之后 把灌广告框的Dom元素删除就可以了
    LioMore
        8
    LioMore  
       2015-08-16 02:41:36 +08:00
    自己写一个chrome扩展用content scripts搞定,十分钟就搞定了
    emric
        9
    emric  
       2015-08-16 02:49:01 +08:00
    直接修改页面的没有什么好办法, 只能用 ABlock 之类的屏蔽掉.
    如果是 302 或者 JS 置入, 可以在路由器直接 Block 掉抢答包和屏蔽 DNS 解析.
    clino
        10
    clino  
       2015-08-16 08:28:00 +08:00
    https ?
    clino
        11
    clino  
       2015-08-16 08:28:42 +08:00
    搞错了原来不是自己的网站
    cattail
        12
    cattail  
       2015-08-16 08:50:26 +08:00 via Android
    写脚本自动投诉而不是写脚本过滤内容?
    asp
        13
    asp  
       2015-08-16 09:17:56 +08:00
    看看广告源,禁他IP,话说好久都没有遇到过这种了,上次还是在2个月前吧!
    wxt2005
        14
    wxt2005  
       2015-08-16 09:46:59 +08:00
    不要试图用技术方式解决,必须投诉。
    pysama
        15
    pysama  
    OP
       2015-08-16 12:45:16 +08:00
    打客服电话,一直是人工作息忙
    氧化钙。
    gamexg
        16
    gamexg  
       2015-08-16 14:44:51 +08:00
    楼主可以提供劫持代码吗?
    最近正在做一个代理,计划增加过滤劫持功能。
    xbb7766
        17
    xbb7766  
       2015-08-16 15:19:55 +08:00   ❤️ 1
    投诉(虽然没多久就会死灰复燃)

    把广告ip和域名加入hosts
    pysama
        18
    pysama  
    OP
       2015-08-16 15:24:19 +08:00
    @gamexg 留下个email呗,我发你
    zhaogoodluck
        19
    zhaogoodluck  
       2015-08-16 15:56:45 +08:00
    楼主哪里的,什么网络,IP多少,如果在我能查的省份,可以帮你查一下具体情况。
    qucklay
        20
    qucklay  
       2015-08-16 16:11:52 +08:00
    PublicLawsuit
        21
    PublicLawsuit  
       2015-08-16 16:42:03 +08:00
    "把广告ip和域名加入hosts"

    如果是ip和域名可以加入hosts的,那么也可以别的方法-------在你的路由器填入黑名单直接阻塞即可。这类苯贼当然仍很多。

    但是,问题在于,ISP 内贼变得更狡猾、更流氓,他们在ISP路由网络端劫持网页重新打包、插入了外部脚本和下载地址的网页语言、通过这外部脚本使得用户的浏览器自动下载预先插入的地址的服务器上的非法广告(无备案、无登记)。

    我这里上海电信流氓劫持多发生在国内主要热门购物网站各商品页面浏览时,能使用SSL连接的购物站点页面可阻止上海电信流氓劫持行为,但国内主要热门购物网站大多不能使用https连接,比如JD, yixun, 等等,可以使用或可以部分使用https 连接商品页面仅限于amazon.cn, taobao.

    电信流氓的这些内贼比以前狡猾了,他们在路由网络拦截购物网页并重新打包整个网页、插入非法广告的外部脚本和地址连接,比如象:
    <script>url={a:"http://58.215.179.159/svr/sflow/a0f4b18f",m:"http://item.jd.com/1450740.html",s:"undefined"};var _iaui=true;var _xus="N0ljUzI0a1Mrd3VseUJIbGozeGgxQT09";var _xai="a0twUE9GSDJXczhjdnF5QUJGUENaZz09";</script>

    这个58.215.179.159就是这些电信流氓内贼存放广告内容的地址,是电信流氓内贼重新打包插入页面的脚本语句。

    <script>extCallback=function(ad){setAdVisiable(true)}</script>
    流氓内贼插入的这段脚本语句就是导致用户浏览器自动下载上述58.215.179.159 的非法广告内容(无登记、无备案的广告和发布)。

    用Chrome 浏览器通过右击网页上的“审查元素”发现上述流氓行径,不过很多用户可能未注意到这个弹出窗口的非法广告,容易误以为是电商的页面广告,而且这个弹出广告窗口约15秒后自动关闭,你如果想抓住贼手,必须在15秒内操作。

    电信流氓的这种劫持行经对用户购物安全是非常危险的,他们也可以拦截并可能借此盗窃用户金融信息,实际上用户已经不是直接访问购物网站页面,发生了中间劫持。

    你可以在路由器上阻塞 58.215.179.159 地址,但要过滤电信内贼插入的网页脚本语句就麻烦得多,参考:
    https://github.com/UserScript/Traffic-Hijack-Buster/issues/1
    http://quotation.github.io/web/2015/04/15/china-telecom-isp-hijack.html
    ezreal
        22
    ezreal  
       2015-08-16 17:00:43 +08:00
    投诉吧,直到被加入白名单。
    PublicLawsuit
        23
    PublicLawsuit  
       2015-08-16 17:02:52 +08:00
    “坚决的反复投诉ISP即可”

    投诉可能暂时解决某些问题,不是解决全部。伴随投诉上海电信极为恶劣的国际出口连接问题,前几日刚还另外投诉过劫持和非法广告问题,电信的电话回访人员强词夺理说不是电信的广告,我说已保留了全部证据可以告你电信,于是她说:把你加入没有电信推送通知的组,请重新启动的路由器。

    虽然暂时解决问题,但不是真正完全解决了问题。现在山寨国网络上流氓何其之多!
    此外,“把你加入没有电信推送通知的组”之后会有其他什么不良影响,尚未知。

    山寨国网络是流氓横行之地,要真正过滤大量的各种流氓广告,需要自己建立一个小型服务器连接路由器,过滤各种流氓广告。有没有人去经营这一业务?用Atom 做一款过滤用微型服务器出售,过滤名单需要持续更新。
    gamexg
        24
    gamexg  
       2015-08-16 19:02:33 +08:00
    @pysama gamexg gmail邮箱。
    qq651438555
        25
    qq651438555  
       2015-08-16 19:16:43 +08:00
    @PublicLawsuit 这个也有办法?不能吧?
    pysama
        26
    pysama  
    OP
       2015-08-16 19:29:32 +08:00
    @gamexg 格式化了一下,已发送
    PublicLawsuit
        27
    PublicLawsuit  
       2015-08-16 20:25:35 +08:00
    “qq651438555:这个也有办法?不能吧?”

    http://www.williamlong.info/archives/4181.html
    “可以在本地架设一个代理服务器,在代理服务器将浏览器的HTTP请求进行拆包,浏览器设置本地的代理服务器即可。我这里经过测试,默认设置的情况下对三大运营商(电信、联通、移动)的HTTP劫持现象都有很好的抑制作用”。

    http://maskv.com/technology/289.html

    还可以查到更多的相关信息,几乎都是中国特有的。

    很愿意看见有人用Atom 去做一款过滤用微型服务器作为商品出售,过滤名单需要可以持续更新,如果品质和价格都合适,我会愿意买。
    PublicLawsuit
        28
    PublicLawsuit  
       2015-08-16 20:28:23 +08:00
    对于商业网站经营者:

    http://quotation.github.io/web/2015/04/15/china-telecom-isp-hijack.html

    第一个可行的办法是HTTPS化,HTTPS请求无法简单的伪造。目前由于网络安全的形势不好,很多网站都做了全站HTTPS化。虽然有一些开销,这毕竟是个最有效的办法。
    xfspace
        29
    xfspace  
       2015-08-16 20:45:57 +08:00 via Android
    @PublicLawsuit 除了扣门的公司外,现在没什么人用几年前的老古董了吧。。。
    lanlanlan
        30
    lanlanlan  
       2015-08-16 20:58:46 +08:00
    @emric hi 请教下 OpenWRT的如何屏蔽抢答包?
    PublicLawsuit
        31
    PublicLawsuit  
       2015-08-16 21:05:46 +08:00
    xfspace,

    不明白你想说什么。

    国内主要热门购物网站大多不能使用https连接,比如JD, yixun, 等等,可以使用或可以部分使用https 连接商品页面仅限于amazon.cn, taobao

    JD 这样的最热门的B2C居然输入https就无法连接商品页面。
    taobao 同一商品页面地址http 和https 均可用。

    你自己试一下不就清楚了?

    是指Atom是“老古董”?那你最好先访问intel 产品数据库 ark
    pirex
        32
    pirex  
       2015-08-16 21:21:29 +08:00
    pysama
        33
    pysama  
    OP
       2015-08-16 22:13:41 +08:00
    一起感谢上面各位的建议和发散~

    有个回复中链接的文章提到自驾个代理服务器,将http请求分包传输的方法倒是可以试试
    KCheshireCat
        34
    KCheshireCat  
       2015-08-16 23:24:46 +08:00
    方便检测的方法是没有了,一般是开好Wireshark,tcpdump之类的软件等抓包,然后,观察劫持包有什么特点

    比如 劫持握手包的话,一般是不带mss协商的,而一般通过路由器上网的话都是有mss协商的,有mss协商的包头部会大一些

    然后是301跳转包,一般会劫持包会标记ACK,FIN,PSH,或是只标记其中几个。然后以你还会在这个劫持包之后看到正确的包。。。。

    一般常见的多是不带某些标志,但是带着这个标志数据的这种不符合结构的包

    屏蔽方法一般用iptables的U32来过滤。

    或者用iptables标记然后用TC对包暂扣,增加延时,加个5000毫秒,这招对移动小墙的单向RST比较适用
    emric
        35
    emric  
       2015-08-17 01:56:00 +08:00
    @lanlanlan 用 iptables 的 string 模块.
    例如: iptables -A FORWARD -p tcp --sport 80 -m string --algo bm --string "Location: http://xxx.com or ip" -j DROP
    ryd994
        36
    ryd994  
       2015-08-17 02:04:04 +08:00 via Android
    @PublicLawsuit 1.atom服务器还不如树莓+openwrt,一般家用够了
    2.买国内vpn不是更好?
    sjwuny
        37
    sjwuny  
       2015-08-17 08:28:22 +08:00
    @Twinkle 这个确实是一个不错的思路,我用abp然后把运营商的广告ip加入黑名单,现在已经没有这个问题了。
    lanlanlan
        38
    lanlanlan  
       2015-08-17 12:19:29 +08:00
    @emric Thanks 等下次被从白名单移出来后我试一下
    Khlieb
        39
    Khlieb  
       2015-08-17 14:42:34 +08:00 via Android
    DNSCrypt
    zlylong
        40
    zlylong  
       2015-08-17 16:00:16 +08:00
    直接 ping www.wocaoisp11111.com 看返回的 ip 地址。加入 hosts 黑名单。。 ping 出来几个屏蔽几个就行了。
    lanlanlan
        41
    lanlanlan  
       2015-09-22 20:15:36 +08:00
    @emric 唔..如果是劫持 JS 文件的这种 而不是直接 302 或者篡改为 Location 这种的捏..就是说 能否匹配 JS 内的源码 匹配后 DROP 掉 QWQ
    emric
        42
    emric  
       2015-09-22 20:32:02 +08:00   ❤️ 1
    @lanlanlan 能, 不过太费事.
    一般置入 JS 的都是插广告, 直接把它引入的广告 JS 屏蔽掉就好.
    lanlanlan
        43
    lanlanlan  
       2015-09-22 20:49:50 +08:00
    @emric 主要是他劫持了正常的 JS 后 整个网页因为该 JS 原因部分功能是异常的..比如秒拍等 被劫持的几乎都是播放的 JS 不刷新的话 自动 /手动点击播放 均失效了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2643 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 04:27 · PVG 12:27 · LAX 20:27 · JFK 23:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.