关于最近举报CSDN博客文章侵权的一点点记录

陪她去流浪 桃子 2018年05月25日 编辑 阅读次数:5250

发现

今天在查看博客服务器的访问日志的时候,发现了大量的图片外链访问进来。

来源是CSDN博客,我顺着引用页(Referrer)打开了页面,发现是我几年前写的一篇关于「C++对象内存模型」的一篇文章。

令我很气愤的是,我至少发现有3位博主以原文复制粘贴并重新发表的方式侵权了这篇文章,同时没有任何来源说明。

好在我在博客后台限制了未知来源的图片外链,于是他们的图片全部挂了。即便他们已经把我原文中的相对链接改成了绝对链接,但还是全部挂了。

举报

于是我决定举报,然后,有趣的事情发生了。

在我点击页面右下角的「举报」按钮后,弹出了一个对话框:

看起来填写没有任何问题,但是在提交时,它提醒我:请输入正确的原创文章地址!

我有点不淡定了,因为我输入的原文地址绝对是个正确的URL。竟然不让我举报!

于是我打开了控制台,定位到了<form>提交的那段代码处,发现了以下代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
function() {
  var e = $("input[name=report_type]:checked").val();
  if (!e) return alert("请选择举报原因!"), !1;
  var t = "";
  switch (e) {
    case "3":
      if (t = $("#originalurl").val(), "" == t || "http://" == t) return alert("举报抄袭必须提供原创文章地址!"), $("#originalurl").focus(), !1;
      if (!checkeURL(t)) return alert("请输入正确的原创文章地址!"), $("#originalurl").focus(), !1;
      break;
    case "7":
      if (t = remark.val(), !t) return alert("请填写举报的具体原因!"), remark.focus(), !1
  }
  nowTime = {
    year: (new Date).getFullYear(),
    month: parseInt((new Date).getMonth()) + 1,
    day: (new Date).getDate(),
    hours: parseInt((new Date).getHours()) + 1,
    minutes: parseInt((new Date).getMinutes()) + 1,
    seconds: parseInt((new Date).getSeconds()) + 1
  };
  var i = {
    articleId: articleId,
    commentId: 0,
    reportType: e,
    originalurl: $("#originalurl").val(),
    report_other_content: remark.val(),
    report_description: remark.val(),
    currentUserName: currentUserName,
    updatetime: nowTime.year + "/" + nowTime.month + "/" + nowTime.day + " " + nowTime.hours + ":" + nowTime.minutes + ":" + nowTime.seconds,
    blogUser: username
  };
  return $.post(blog_address + "/common/report?id=" + articleId + "&t=2", i, function(e) {
    1 == e.result ? (hideReport(), alert("感谢您的举报,我们会尽快审核!")) : e.content && alert(e.content)
  }), !1
}

注:代码质量与美观度我就先不作评论了,这个太主观。

明显看得出来是 checkURL(t) 处失败了。我先打印出了 t 的值,发现:它竟然是个空的!

于是我在 DOM 树里面找这个 ID = originalurl 的元素,发现,并没有,只有以下这个表单元素:

1
<input class="ipt" name="originalurl" type="text">

于是确定问题所在。给该标签添加一个 id="originalurl" 的属性后成功提交举报。

群聊

我是在某Go语言开发群中一边讨论一边解决的问题,大概有以下对话。

  • 垃圾cdsn要登录才能看文章了??
  • 不会啊
  • 我不管打开啥都转到登录,什么破玩意儿垃圾。。(贴图:curl 显示重定向)
  • 嗯,肯定是某个程序员的bug.没有refer的,,统统会跳到登录页。。
  • 我怀疑csdn请了智障的前端。(贴图:显示 css 选元素错误)
  • 根本不给机会举报。
  • 产品就是这样设计的?
  • [表情][表情]我tm偏要举报。(改了属性显示提交成功)
  • 还是逃不过console 大法
  • [表情][表情]程序员何苦为难程序员。
  • [表情][表情]程序员何苦为难程序员。
  • 程序员要理解程序员
  • csdn 不行了 现在被喷的很惨
  • 主要是广告太多
  • 版权吧 文章全是复制黏贴的 基本上我都不会看了 全是副本
  • 刚才举报那个就是。完全复制粘贴,还不贴原链接。还tm直接引用我网址的图片,靠。全部拒绝,图片全部让他挂了。
  • 嗯 csdn根本不管 甚至隐藏着鼓励 这样的网站快凉了吧
  • [表情]我想到一个点子,我返回一些垃圾图片回去。[表情]
  • 但是源是你的 要注意这个问题
  • 不过你可以反弹一些porn的地址回去
  • 做好判断 别被seo爬到了
  • 程序员最理解程序员
  • 理解个屁 辛辛苦苦的写的东西 被人转了 还不带你的签名

现在,我已经返回了一些垃圾图片回去。已经没法看了。

侵权文在这里,不过可能已经被删除了,如果举报成功的话。

后续

  1. CSDN估计请了一些小学生程序员,代码质量跟美观度不容直观
  2. 破CSDN最好尽快凉了,随处可见侵权,官方完全坐视不管,甚至纵容
  3. 程序员最理解程序员,程序员何苦要为难程序员
  4. Console大法很好用

更新

2018年07月06日

评论中提到最早是在 PHP 中处理的,现在改到在 nginx 中处理:

1
2
3
4
5
location ~ ^/files/(.*) {
    if ($http_referer ~ "://blog.csdn.net") {
        rewrite ^ /1.jpg break;
    }
}

标签:CSDN