垃圾评论也用上了「人工智能」

in 那美克星 with 14 comments

我的博客使用typecho,评论用了滑动验证插件,一段时间后插件莫名失效,一番搜索发现有极验滑动验证的插件,安装后无卵用,插件有bug,只能在前端阻挡一下,抓接口直接提交评论可以提交成功,因此这个插件==无。

想去作者博客反馈下,发现很久之前就有人反馈了,作者并未回复,但我测试了下作者博客的评论就没问题,作者公开的代码和自用的不一样啊,遂放弃此插件,最终使用了一个图片验证码的。

自己抓包测试,不填验证码无法提交,说明插件没问题。

有趣的事情来了,当我换上验证码插件后,发现垃圾评论还在陆续到来,此时的我有点懵,难道是对方发现了typecho的bug?

去nginx看看日志就清楚了,nginx默认是不记录post参数的,修改nginx配置文件,在http域里增加以下代码:

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                '"$http_referer" $status $body_bytes_sent $request_body '
                '"$http_user_agent" "$http_x_forwarded_for"';

其中main是为后面的格式自定义的名字,你也可以叫my_format,然后在网站的日志路径后面加上这个名字,比如我的是access_log /www/wwwlogs/sssis.me.log main;

此时就能在日志里显示访客的post信息,灵异的是,post信息里竟然有...captcha=nncuts...,此时脑中浮现出印度人工刷流量的画面……

Snipaste_2019-11-22_14-48.png

(图片来自《硅谷》)

这评论机器人还自动打码了?还有一点说不通,原先我的博客没有评论验证,可以直接post评论,加上插件后,post信息里也自动加上了验证码,难道是被人盯上了?然后瞬间否定了这想法,首先,盯我这小破网站还不够浪费精力的,其次,垃圾内容显然是为SEO,因此判断,绝对是机器人。

随后我把验证码input标签的name改为captcha2,再看,惊了,post提交的信息也变成了captcha2,这机器人也太智能了吧?

再把name改为一个与验证码无关的词时,机器人还是准确地找到了新名称。

再加上一个input标签,post参数成了captcha_0=xxxx&captcha_1=,第二个参数为空,说明机器人会遍历form里的所有input,且自动将验证码填充到验证码下第一个input的参数。

知道了套路,反套路就很容易了,可以使用以下方式:

我们能做的只是防御吗?当然不,还可以利用下,比如,将验证码的图片链接替换为其他网站的验证码链接,修改下评论模块,可将验证码图片和对应值保存,几个月后,用这些数据应该能训练出个模型吧 : )

Responses

captcha
请输入验证码

  1. I'm a robot.

    Reply
    1. @Robot

      可别闹

      Reply
  2. gdfr

    good idea

    Reply
  3. 从v2来看超火的网红博客

    特地来打卡

    Reply
    1. @Mai1me

      网...网红?

      Reply
  4. I'm a Googlebot.

    Reply
  5. I'm not a robot.
    I'm human.

    Reply
    1. @山野愚人居

      Yes, I know.

      Reply
  6. Bot

    听说有人要薅我训练模型?

    Reply
    1. @Bot

      你好,是的 :)

      Reply
  7. I’m a robot,too.
    另:在线打码平台了解一下,全人工识别验证码。谁鸟你nginx不nginx

    Reply
  8. 渣渣废

    博主试试这个插件看看,
    https://github.com/mierhuo/Typecho-SimpleCommentCaptcha
    好奇有没有点效果

    Reply
    1. @渣渣废

      好的,谢谢

      Reply
  9. I am a Robbot

    Reply