在一般的网页中,为了防刷,都会在提交请求之前让用户输入动态的验证码:
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/1e21b63a306bac2a381dd458d7209642.jpeg)
动态验证码有效防止了绝大多数 JS 脚本的自动提交行为。如果它的干扰线和扭曲效果实现得足够好,即使用 OCR 图像文字识别技术也很难破解。动态验证码的生成和验证流程如下:
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/b6f8bab9478f6fc0e76a0f2f693b30ff.jpeg)
由于每次看到的抢购页面里的验证码(web 后台随机生成验证码)都不相同,所以很难用自动化脚本攻克。可是,如果抢购页面的开发人员偷懒,只是在抢购页面里引用了固定不变的验证码图片,那么请求和验证流程就变成了下面的样子:
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/6e3acbf97ba0bf095bcd3423961301bf.jpeg)
这样一来,只要知道静态的验证码是什么,脚本就可以轻松填写正确的验证码。
这正是前段时间(中秋前夕)闹得沸沸扬扬的阿里员工抢月饼事件;