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

2019-07-06 14:05:43 +08:00
 wongyusing

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

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

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


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

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

## 通过邮箱发送验证码进行验证
这个还是很好做的。
不过用户体验很不好。
binux
2019-07-06 14:53:55 +08:00
zhwithsweet
2019-07-06 15:02:46 +08:00
有接口,后端拿到 authcode 去验证一下;还可以使用 accountkit
Destiny97
2019-07-06 15:07:05 +08:00
我用过腾讯防水墙,免费的,效果还不错,楼主可以试试
wongyusing
2019-07-06 15:34:34 +08:00
搞定了,
Y 的,搞到我写了那么久。
原来是 443 的原因。
是"墙"的原因导致的错误
wongyusing
2019-07-06 15:36:05 +08:00
@Destiny97 这个项目是我接了加拿大的外包项目。
尽量不用国内的服务。
已经解决问题了。
wongyusing
2019-07-06 15:36:48 +08:00
怎么设置问题已解决啊??
第一次提问。
xuanbg
2019-07-06 16:33:17 +08:00
防止恶意注册最有效的办法就是用短信验证码验证手机号,一个手机号只能注册一次就完了。
mmtromsb456
2019-07-06 20:22:23 +08:00
@wongyusing append 附言即可
Jirajine
2019-07-06 20:36:26 +08:00
@xuanbg 那是你天朝特色吧。
国外要手机号的服务不多,强行要手机号很大可能劝退用户。
不是每个国家的用户都习惯了被实名制和微信强 J 的。
wongyusing
2019-07-06 21:46:56 +08:00
@mmtromsb456 多谢。
wongyusing
2019-07-06 22:52:37 +08:00
下面是我解决问题的写法,
主要原因是由于一开始没有设置全局的科学网络导致的 443 错误。
https://github.com/wongjyusing/v2ex/blob/master/test.md
等我完成手头上的两个项目后。
会将整个过程写成博文放到我的博客上。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/580574

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX