V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
wongyusing
V2EX  ›  Python

关于前后端分离的项目,如何使用验证码进行机器人验证

  •  
  •   wongyusing · 2019-07-06 14:05:43 +08:00 · 5130 次点击
    这是一个创建于 1756 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我现在在做一个电商网站项目。
    后端使用了,django-rest-framework 作为 api。 前端使用 angular-cli

    在关于注册这里遇到了一个问题。
    为了防止机器人恶意注册,我想调用验证码来防止机器人。
    前端中 angular-cli 接入了谷歌的 recaptcha。已经实现了。
    但是,后端该怎么实现呢?? 我阅读了阅读了谷歌的 recaptcha 的文档还是没有找到方法。

    12 条回复    2019-07-06 22:52:37 +08:00
    wongyusing
        1
    wongyusing  
    OP
       2019-07-06 14:47:35 +08:00
    我这里用的是 recaptcha V2 中的隐藏徽章类型。
    前端验证完成后,生成一段秘文 response。
    然后会连同 username,passwork、email 和 response 一起作为验证。
    现在问题主要是后端的该怎么处理。


    其实,撇开这个 recaptcha,我还有两种思路去处理这个**注册验证码问题**

    ## 自行生成验证码
    新建一个 captcha 表,
    里面给五个字段
    分别为:索引 ID、验证码答案、验证码图片地址、秘文 ,创建时间
    利用 python 验证码包生成一堆验证码图片,并存入数据库。
    用户访问时随机抽取一张验证码图片进行验证等操作。
    通过秘文来索引确认用户的验证是否正确。
    但是,这个思路缺陷很明显,我用之前练习**识别验证码的小 demo**都可以识别出这个验证码。
    所以,放弃。

    ## 通过邮箱发送验证码进行验证
    这个还是很好做的。
    不过用户体验很不好。
    binux
        2
    binux  
       2019-07-06 14:53:55 +08:00   ❤️ 1
    zhwithsweet
        3
    zhwithsweet  
       2019-07-06 15:02:46 +08:00 via iPhone   ❤️ 1
    有接口,后端拿到 authcode 去验证一下;还可以使用 accountkit
    Destiny97
        4
    Destiny97  
       2019-07-06 15:07:05 +08:00 via Android
    我用过腾讯防水墙,免费的,效果还不错,楼主可以试试
    wongyusing
        5
    wongyusing  
    OP
       2019-07-06 15:34:34 +08:00
    搞定了,
    Y 的,搞到我写了那么久。
    原来是 443 的原因。
    是"墙"的原因导致的错误
    wongyusing
        6
    wongyusing  
    OP
       2019-07-06 15:36:05 +08:00
    @Destiny97 这个项目是我接了加拿大的外包项目。
    尽量不用国内的服务。
    已经解决问题了。
    wongyusing
        7
    wongyusing  
    OP
       2019-07-06 15:36:48 +08:00
    怎么设置问题已解决啊??
    第一次提问。
    xuanbg
        8
    xuanbg  
       2019-07-06 16:33:17 +08:00
    防止恶意注册最有效的办法就是用短信验证码验证手机号,一个手机号只能注册一次就完了。
    mmtromsb456
        9
    mmtromsb456  
       2019-07-06 20:22:23 +08:00 via iPhone
    @wongyusing append 附言即可
    Jirajine
        10
    Jirajine  
       2019-07-06 20:36:26 +08:00 via Android
    @xuanbg 那是你天朝特色吧。
    国外要手机号的服务不多,强行要手机号很大可能劝退用户。
    不是每个国家的用户都习惯了被实名制和微信强 J 的。
    wongyusing
        11
    wongyusing  
    OP
       2019-07-06 21:46:56 +08:00
    @mmtromsb456 多谢。
    wongyusing
        12
    wongyusing  
    OP
       2019-07-06 22:52:37 +08:00
    下面是我解决问题的写法,
    主要原因是由于一开始没有设置全局的科学网络导致的 443 错误。
    https://github.com/wongjyusing/v2ex/blob/master/test.md
    等我完成手头上的两个项目后。
    会将整个过程写成博文放到我的博客上。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2876 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 11:40 · PVG 19:40 · LAX 04:40 · JFK 07:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.