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

这种防盗链有点牛 x

  •  
  •   yaotian · 2016-09-09 16:15:16 +08:00 · 7354 次点击
    这是一个创建于 3000 天前的主题,其中的信息可能已经有所发展或是发生改变。
    24 条回复    2016-09-11 22:16:26 +08:00
    soulteary
        1
    soulteary  
       2016-09-09 16:39:15 +08:00
    if ($http_user_agent ~ "curl") {
    return 404;
    }
    yaotian
        2
    yaotian  
    OP
       2016-09-09 17:00:49 +08:00
    @soulteary 这么简单就不贴出来了,看证据
    curl -A "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5" -H "referer:http://img2.weixinqun.com/20160902/663511/50dab2278081488f35fe5fd3c13291cd.jpeg?h=202&w=202" -I http://img2.weixinqun.com/20160902/663511/50dab2278081488f35fe5fd3c13291cd.jpeg?h=202&w=202

    Date: Fri, 09 Sep 2016 08:57:58 GMT
    Content-Type: text/html
    Connection: keep-alive
    Cache-Control: no-cache, no-store
    Server: YUNDUN
    annielong
        3
    annielong  
       2016-09-09 17:15:51 +08:00
    1024 看到有个图床, url 直接访问是原图,但是下载就变成了小图,
    pangliang
        4
    pangliang  
       2016-09-09 19:10:31 +08:00
    抓包看一下呗; 封包都一样还能防盗链 那就真是牛 xx 了
    popok
        5
    popok  
       2016-09-09 20:04:53 +08:00
    没有完美的防盗链,只有不完美的模拟技术
    bin456789
        6
    bin456789  
       2016-09-09 20:19:47 +08:00
    curl -o 1.jpg \
    -A "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 OPR/39.0.2256.71" \
    http://img2.weixinqun.com/20160902/663511/50dab2278081488f35fe5fd3c13291cd.jpeg?h=202&w=202
    yaotian
        7
    yaotian  
    OP
       2016-09-09 22:25:48 +08:00
    @bin456789 not work. 打开 1.jpg 看看,是破损的
    URgoy
        8
    URgoy  
       2016-09-09 22:28:00 +08:00 via Android
    图太小这是干嘛的
    crab
        9
    crab  
       2016-09-09 22:46:32 +08:00
    referer useragent cookies 通常都第一个吧
    bin456789
        10
    bin456789  
       2016-09-09 23:43:13 +08:00
    @yaotian 我这边用 bash on windows ,得到一张 900+k 的大图
    tinyproxy
        11
    tinyproxy  
       2016-09-09 23:47:31 +08:00
    @yaotian 也就是检查多几样而已,真爬起来没啥用。不过你为啥手动弄个 curl 的语句?我都是 chrome 打开网址,然后看网络审查,右键 copy as curl 搞定
    https://gist.github.com/anonymous/8f67ba3e9c13c40727bda83900eac2f6
    ashchen
        13
    ashchen  
       2016-09-10 07:46:31 +08:00
    我做过一个防盗链系统,每个 ip 来访问的 url 地址都是不一样的, url 有一串 md5 做验证。
    yaotian
        14
    yaotian  
    OP
       2016-09-10 09:01:11 +08:00   ❤️ 1
    @tinyproxy
    @bin456789 想简单了。真正会出现这样的结果。下载的不是图片,而是一下内容。

    <html><body><script language="javascript"> window.onload=setTimeout("cv(246)", 200); function cv(QM) {var qo, mo="", no="", oo = [0xbf,0x4b,0x87,0xec,0xae,0xb6,0x0c,0xde,0x40,0x81,0x8d,0xe2,0x78,0xe9,0xb0,0x74,0x65,0xba,0x20,0x4e,0xa5,0x47,0x98,0x37,0xb5,0xe3,0x52,0x31,0xb3,0xa1,0xba,0x39,0xdb,0x29,0x0c,0xda,0xb9,0x4c,0xfa,0x69,0x96,0x05,0x56,0x05,0x87,0x96,0x5c,0xcd,0x73,0x12,0x1d,0xbf,0x8e,0x90,0x0f,0x53,0x51,0xc3,0x82,0x84,0xee,0xf0,0xd2,0x61,0x14,0x5e,0x44,0xf5,0xa8,0x8a,0x10,0xd1,0x64,0xf5,0x68,0x76,0x05,0xa7,0x95,0x08,0x9d,0x33,0xf8,0x56,0x7b,0x07,0x89,0x3f,0x11,0x63,0x9b,0xa0,0xce,0x6d,0xef,0x04,0xa2,0x84,0x57,0x85,0x17,0xb5,0x38,0xd6,0xb8,0x11,0x07,0xb9,0x1f,0xe4,0x51,0x08,0x69,0x9b,0x4d,0xc5,0x7b,0x3a,0xec,0xbb,0x11,0xf6,0x75,0x48,0x2a,0x6c,0xda,0xb9,0x4f,0xcd,0x85,0x48,0x27,0x95,0x18,0xa1,0x67,0xe5,0x87,0x22];qo = "qo=138; do{oo[qo]=(-oo[qo])&0xff; oo[qo]=(((oo[qo]>>2)|((oo[qo]<<6)&0xff))-155)&0xff;} while(--qo>=2);"; eval(qo);qo = 137; do { oo[qo] = (oo[qo] - oo[qo - 1]) & 0xff; } while (-- qo >= 3 );qo = 1; for (;;) { if (qo > 137) break; oo[qo] = ((((((oo[qo] + 117) & 0xff) + 70) & 0xff) << 6) & 0xff) | (((((oo[qo] + 117) & 0xff) + 70) & 0xff) >> 2); qo++;}po = ""; for (qo = 1; qo < oo.length - 1; qo++) if (qo % 5) po += String.fromCharCode(oo[qo] ^ QM);po += "\""; eval("qo=eval;qo(po);");} </script> </body></html>
    lslqtz
        15
    lslqtz  
       2016-09-10 10:54:59 +08:00
    大小是因为使用了 h 和 w 参数。
    图片在此, work !
    http://233.dog/f_37432861.png
    lslqtz
        16
    lslqtz  
       2016-09-10 10:58:13 +08:00
    @crab User-Agent 无疑
    lslqtz
        17
    lslqtz  
       2016-09-10 11:01:52 +08:00
    C:\Users\lslqtz>curl -H "User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36" -I http://img2.weixinqun.com/20160902/663511/50dab2278081488f35fe5fd3c13291cd.jpeg
    HTTP/1.1 200 OK
    Date: Sat, 10 Sep 2016 03:01:47 GMT
    Content-Type: image/gif
    Content-Length: 940780
    Connection: keep-alive
    Etag: "6d73d55b4b473460815c9753bbb94ae2f2717d2a"
    Expires: Mon, 10 Oct 2016 02:23:51 GMT
    Cache-Control: max-age=2592000
    X-Cache: HIT from YUNDUN
    Server: YUNDUN
    Cache-Control: max-age=1800


    C:\Users\lslqtz>
    yaotian
        18
    yaotian  
    OP
       2016-09-10 13:29:13 +08:00
    @lslqtz 找一台没访问过的机器再执行一下就能看到我的现象。
    zhs227
        19
    zhs227  
       2016-09-10 13:48:39 +08:00
    第一次 chrome 打开,打开了网络控制台,未开启保留日志。注意到网络面板里有两条请求,第一条访问地址和输入的地址不一样,多带了一个什么 ID 。第二次访问,这个带了 ID 的地址再跳转回来不带 ID 的地址。感觉在这一步做了 ID 和 IP 的绑定,然后记录了 IP 。由于没有开启网络记录且第一次的访问地址和输入的地址不一样,可以认为是做了三次跳转。第一次跳转也许是做了 javascript 的混淆,然后用 js 重定到到第二次访问。

    由于用 CURL 时缺少了关键第二次访问,没有办法得到这个图片。

    所以我认为对于一个全新的访问来说,大概是使用了三次跳转。推测使用 phanthomjs 配合 agent 修改应该可破。
    lslqtz
        20
    lslqtz  
       2016-09-10 15:09:18 +08:00 via iPhone
    @yaotian 太高级系列,试试看执行 js
    crab
        21
    crab  
       2016-09-10 15:42:35 +08:00
    @yaotian 这个是云盾,有 cookies 检测。要先跑下那 JS 得到 cookies ,携带这个 cookies 再去访问就可以。
    tmplinshi
        22
    tmplinshi  
       2016-09-10 16:23:58 +08:00   ❤️ 1
    测试结论:
    “第一次”访问该地址是返回含有 js 代码的网页。如果下载图片成功了,那么下次用同一“身份”则是直接下载图片的。
    这个“身份”是基于 IP 和 User-Agent 来判断的。

    比如说用浏览器访问那个地址后,三种 curl 测试结果如下:
    1. 下载成功 --> curl 带上浏览器的 "User-Agent"
    2. 下载失败 --> curl 带上浏览器的 "User-Agent",但是换一个 IP (比如 -x 58.176.46.248:80 )
    3. 下载失败 --> curl 不带或者带上乱写 "User-Agent"
    yaotian
        23
    yaotian  
    OP
       2016-09-11 17:05:47 +08:00
    19 楼以下是正解
    ClassicOldSong
        24
    ClassicOldSong  
       2016-09-11 22:16:26 +08:00
    @lslqtz 点开图片然后感觉怪怪的然后才发现咱 Chrome 主题是同一个。。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5446 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 07:31 · PVG 15:31 · LAX 23:31 · JFK 02:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.