V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
clippit
V2EX  ›  问与答

有什么办法可以规避运营商篡改下载URL吗?

  •  
  •   clippit · 2013-07-28 15:16:23 +08:00 · 4480 次点击
    这是一个创建于 4121 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这些帖子 http://v2ex.com/t/73807 http://v2ex.com/t/53288 里都提到过这个问题,我现在也遇到了。做Cache确实能减少运营商的出口带宽,但是这样让我非常不爽,一是担心下载回来的文件被恶意篡改,二是运营商的proxy经常响应速度特别慢,下载经常失败。

    比如我向dldir1.qq.com发送的HTTP GET请求,返回的包会自动被篡改成一个302重定向。如果它是透明代理我倒就算了,可是下载地址全变成http://119.80.188.6这种的,实在看不下去。有什么办法可以绕过这一层吗?

    curl -v http://dldir1.qq.com/qqfile/qq/QQ2013/QQ2013/7681/QQ2013.exe

    * Adding handle: conn: 0x232aa30
    * Adding handle: send: 0
    * Adding handle: recv: 0
    * Curl_addHandleToPipeline: length: 1
    * - Conn 0 (0x232aa30) send_pipe: 1, recv_pipe: 0
    * About to connect() to dldir1.qq.com port 80 (#0)
    * Trying 182.118.37.19...
    * Connected to dldir1.qq.com (182.118.37.19) port 80 (#0)
    > GET /qqfile/qq/QQ2013/QQ2013/7681/QQ2013.exe HTTP/1.1
    > User-Agent: curl/7.31.0
    > Host: dldir1.qq.com
    > Accept: */*
    >
    * HTTP 1.0, assume close after body
    < HTTP/1.0 302 Found
    < Location: http://119.80.188.6:80/1Q2W3E4R5T6Y7U8I9O0P1Z2X3C4V5B/dldir1.qq.com/qqfile/qq/QQ2013/QQ2013/7681/QQ2013.exe
    < Connection: Close
    <
    * Closing connection 0
    13 条回复    2015-01-30 21:10:01 +08:00
    alexrezit
        1
    alexrezit  
       2013-07-28 15:19:17 +08:00
    VPN?
    est
        2
    est  
       2013-07-28 15:22:43 +08:00
    我有办法,也做出来东西了。简单说就是重包欺骗。不过放出来就没用了。
    phuslu
        3
    phuslu  
       2013-07-28 15:26:54 +08:00 via iPhone
    试下
    curl -v http://dldir1.qq.com/qqfile/qq/QQ2013/ QQ2013/7681/QQ2013.exe?

    如果奏效的话可以考虑做成iptables模块。
    clippit
        4
    clippit  
    OP
       2013-07-28 15:58:03 +08:00
    @phuslu 你的意思是URL后面加一个问号?还是返回302,估计它做匹配不是看结尾是不是exe的
    efi
        5
    efi  
       2013-07-28 19:27:08 +08:00
    @est 放出来当然有用。跟ISP斗一下还是可以的。

    @clippit 打开wireshark看看,这个302是不是假TCP包,dldir1.qq.com有没有给你返回HTTP OK。如果是ISP抢在qq.com之前给你发个假TCP包,这个可以办,就是iptables字符串匹配给扔掉就行iptables -m string --string ':80/'之类。如果qq.com没给你发来HTTP OK,说明你被透明代理包了,根本到不了qq.com,那就得在HTTP GET里面再想点变形的办法。
    est
        6
    est  
       2013-07-28 21:45:41 +08:00
    @efi 放出来的话,国内做这些拦截软件的码农更加猖狂了。地下斗争是艰苦卓绝的。如果谁自己手写过TCP协议栈,我就PM给它。
    efi
        7
    efi  
       2013-07-29 00:21:56 +08:00
    @est 这又不是火箭科学
    est
        8
    est  
       2013-07-29 07:44:10 +08:00
    @efi 就算不是脑手术,也是立鸡蛋了哈哈。说破就没意思咯
    xdeng
        9
    xdeng  
       2013-07-29 08:29:39 +08:00 via iPhone
    301 是没法硬改的
    xdays
        10
    xdays  
       2013-07-29 15:02:04 +08:00
    没办法,你的所有流量都在他的网络里跑还有什么安全可言呢。
    c4tn
        11
    c4tn  
       2013-10-28 15:57:44 +08:00
    很简单,我们公司的缓存, 在头部加nocache 缓存不会服务,
    @est
    est
        12
    est  
       2013-10-28 16:02:31 +08:00
    @c4tn 这个比较良心了。有的那啥,按照下载文件大小来的。比如超过50M一定缓存。我了个艹。
    xinhugo
        13
    xinhugo  
       2015-01-30 21:10:01 +08:00
    屏蔽 IP 地址。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5168 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 09:32 · PVG 17:32 · LAX 01:32 · JFK 04:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.