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