«

»

Oct 09 2018

防盗链真是件很难办的事情啊

上周发现自己图片服务器的流量有点奇怪,检查一下发现是博客的几篇文章被盗。署名被抹去,引用链接被删,纯粹的盗窃不说,问题是所有图片引用还是我的图片服务器,这缺德的有点过分了。

一怒之下自己写了 .htaccess 的 rewrite 规则,把所有 referer 不属于本域的请求都 301 到搜狐的一张敏感图片上。盗图盗链的,你们要爽了。

结果副作用真 TMD 大,RSS 崩了。

防盗链原理

防盗链的原理很简单,页面上引用资源的请求,都会带上 referer(referrer) 字段,这是浏览器行为。

referrer

服务器可以通过字段了解这些请求都是通过哪些页面引用的,并做相应的处理。最直接的方式就是 .htaccess 的 rewrite 规则了,这也是我一直喜欢使用 apache 而非 nginx 的理由,.htaccess 真的很方便。

301-csdn

副作用

简单明了的解决方式,但是副作用真大。

因为我是 非常鼓励 RSS 订阅的,而多数 RSS 订阅工具都是只保存 xml 的,这无可厚非。问题是这样的话,在线 RSS 工具的 referer 便会是工具的域,便会触发防盗链机制。

rss_referer

哎呦。

找寻解决办法

到网上一搜关键词 防盗链 rss ,结果搜出来的多数结果都是些什么的他妈的破玩意?

反防盗链!

缺德 JS 脚本,缺德 Chrome 插件,甚至还有缺德浏览器。

偷别人的文章,删别人的署名,竟然还进化到自己不出一分存储和带宽,直接盗别人的流量。可谓从吸血到剥皮到啃肉,终究要进化成剔骨才肯罢休。

这世上明显的坏人已经比好人多了。

再过一阵子就能开发出每次看陈佩斯小品就可以自动给陈佩斯的脸打马赛克的播放器了吧。

临时解决办法

RSS 是不能放弃的。虽然可以给 theoldreader 加到白名单中,还能屏蔽掉很多恶意 RSS 工具,但是优秀 RSS 工具我也没办法全都覆盖到。没办法,只能搞黑名单制度了。

也就是说,要面临的问题是,如何收集到恶意引用网站内容的域,同时不误伤任何一个善良的 RSS 工具。

首先想到的就是 access.log 了,只要有一个可靠的 Web日志 分析工具,这个问题就能迎刃而解。很可惜,接触建站超过10年,从 AWStats 到 Web Log Storming ,我就没遇到过一个可靠实用的分析工具。

没办法,只能先把 csdn 放进黑名单,等以后再给他找伴吧。

13 comments

Skip to comment form

  1. sqliuchang
    Yandex Browser 18.7.1.595.00 Yandex Browser 18.7.1.595.00 Android 7.1.1 Android 7.1.1
    Mozilla/5.0 (Linux; Android 7.1.1; vivo Xplay5S Build/NMF26F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.103 YaBrowser/18.7.1.595.00 Mobile Safari/537.36

    嘿嘿,沙发
    我就是订阅的RSS,撸腾讯学生机弄的ttrss
    说起RSS最近出了不少RSS服务,比如微信公众号的werss,还有rsshub,感觉有复苏的趋势啊

    1. 石樱灯笼
      Google Chrome 69.0.3497.100 Google Chrome 69.0.3497.100 Windows 7 x64 Edition Windows 7 x64 Edition
      Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36

      有不少都是恶意RSS服务:不遵守HTTP协议,持续恶意扫描,对一般站点带宽消耗非常严重。我黑名单里有一个货一天就能因为RSS消耗掉我3G的流量。
      另外从微信点进来的流量也都会被篡改很多东西。我的建议是如果是商业服务我可以接受,如果是个人使用就尽量远离国内服务。

      1. sqliuchang
        Google Chrome 69.0.3497.100 Google Chrome 69.0.3497.100 Windows 10 x64 Edition Windows 10 x64 Edition
        Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36

        嗯,rsshub是爬虫啦,抓那些不提供RSS的网站
        如果配合inoreader之类的服务问题不大,只有在发起请求的时候,rsshub才会去抓网站,而且还可以设定缓存时间
        werss提供微信公众号RSS源,一天一更

        如果自建RSS服务的话,就得看看使用者是否自觉了,设置的更新频率是否合理

  2. 陈大猫
    Google Chrome 68.0.3440.106 Google Chrome 68.0.3440.106 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36

    被CSDN这种大流量网站盗链确实很烦啊。
    要是我碰到的话,估计就只能屏蔽所有referrer了,至于RSS——我也是习惯RSS阅读,但一般能读得下去的,还是会点进原文读,顺便留个言。

    1. 石樱灯笼
      Google Chrome 69.0.3497.100 Google Chrome 69.0.3497.100 Windows 7 x64 Edition Windows 7 x64 Edition
      Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36

      主要是我并不是针对referrer做屏蔽,而是做301跳转,而且跳转的结果是非常诡异的图片,而不是啥“图片来自XX”那种提示性信息。
      如果是提示性的图片还好,部分读者还是能理解防盗链这种情况的(虽然从搜到的结果来看还是有大量用户很会骂的)。
      非提示性的图片则给人一种网站中毒被黑等非常不好的印象,减分太多。

  3. FROYO
    Google Chrome 69.0.3497.100 Google Chrome 69.0.3497.100 Windows 7 x64 Edition Windows 7 x64 Edition
    Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36

    哈哈,像我一样,多写一些没用的东西,就没人盗啦

    1. 石樱灯笼
      Google Chrome 69.0.3497.100 Google Chrome 69.0.3497.100 Windows 7 x64 Edition Windows 7 x64 Edition
      Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36

      论这个你绝对比不上土木坛子

      1. 灰狼
        WebView 4.0 WebView 4.0 Android 6.0.1 Android 6.0.1
        Mozilla/5.0 (Linux; U; Android 6.0.1; zh-CN; Redmi 4 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 Quark/2.4.2.986 Mobile Safari/537.36

        哈哈,看到这个忍不住笑了。真相

  4. 法律派
    Google Chrome 69.0.3497.100 Google Chrome 69.0.3497.100 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36

    我在inoreader订阅了你的博客,一般会点进原文看。
    我的图片大多是用微博图床,有些是直接在blogger后台上传,还有一些是在evernote上编辑好文字图片,邮件发送到blogger的邮箱发布,这样出来的图片是上传到blogger的图床。

    1. 石樱灯笼
      Google Chrome 69.0.3497.100 Google Chrome 69.0.3497.100 Windows 7 x64 Edition Windows 7 x64 Edition
      Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36

      不点进原文可能只是我的个人习惯。已经很多人说都会点进原文了。
      “困难时期”的时候我就开始用RSS订阅了,依靠RSS客户端,而非现在的在线RSS网站。后来手机也是一样的方法。当时上网不容易啊,蹭一下网赶紧把所有想要的东西全搞到本地,之后在没有网的本地慢慢啃。
      现在发达了,也宽松了,手机刷了个几M流量也是皮毛了。
      图片我现在用的自己的服务器,文章都是先在本地用 Markdown 写好,之后转成 Html 再贴到 WordPress 里,图片就用正则替换一下就 OK 了。工作量不大,难度不高,可以将时间和精力更多的放在写作上,而不是浪费在排版和上传文件。
      第三方图床我几年前也用过,百度的、盛大的、网易的、雅虎的、flicker的、poppo的。多数已经被墙或倒闭,造成的数据丢失非常严重。我是有定期备份的习惯的,放在第三方几乎没法备份,所以第三方图床我根本不用。

  5. 旧日的足迹
    Google Chrome 63.0.3239.132 Google Chrome 63.0.3239.132 Windows 7 x64 Edition Windows 7 x64 Edition
    Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36

    图片防盗链?我的服务器商就有这个功能..好像还挺管用的.至于通过RSS打开会不会失效没有测试。

  6. keykeys
    QQbrowser 10.3.2473.400 QQbrowser 10.3.2473.400 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6756.400 QQBrowser/10.3.2473.400

    哈哈哈,我是搜索北京租房搜到你去年那篇日志过来的,然后后期打开首页看到这篇比较感兴趣就点开了。真是刷新了我对那些搬运工的认知了。居然还有盗了人家孩子还盗口粮的。不过技术上的东西是看不懂。即将也到北京去漂泊一下,有点迷茫。

  7. jean
    Firefox 62.0 Firefox 62.0 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0

    透过博文都能感觉到一股好大的怨气,O(∩_∩)O
    不过确实提醒了咱防盗链的问题…… 虽然咱没写过什么东西……

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据