漫画:如何用脚本抢月饼?

举报
feichaiyu 发表于 2019/10/24 17:44:07 2019/10/24
【摘要】 中秋节前夕,公司为内部员工提供了在线抢月饼的活动......公司里,恰好有一位调皮的程序员.....随后,这位调皮的员工埋头研究了一下下......很快就到了抢月饼活动开始的时间,脚本的效果出人意料的好......可是,事情已经没那么简单了。很快,员工被叫去约谈......这位调皮员工的经历被传到网上,引起了很多人的关注。小灰和同学之间也在饶有兴致地谈论这件事......首先,让我们来模拟一...

中秋节前夕,公司为内部员工提供了在线抢月饼的活动......

1.jpg

公司里,恰好有一位调皮的程序员.....

2.jpg

3.jpg

4.jpg

随后,这位调皮的员工埋头研究了一下下......

5.jpg

很快就到了抢月饼活动开始的时间,脚本的效果出人意料的好......

6.jpg

可是,事情已经没那么简单了。很快,员工被叫去约谈......

7.jpg

8.jpg

9.jpg

10.jpg

这位调皮员工的经历被传到网上,引起了很多人的关注。小灰和同学之间也在饶有兴致地谈论这件事......

11.jpg

12.jpg

13.jpg

14.jpg

15.jpg

首先,让我们来模拟一下当时的内部员工抢月饼活动页面。当然,真正的活动页面肯定不会这么简单,在此只是做个简化的示例:

屏幕快照 2019-10-24 下午5.27.21.png

如何每隔一段时间让抢购按钮自动被点击呢?很简单,原生Javascript当中有一个定时器函数 setInterval,该函数有两个参数,第一个参数是想要执行的回调函数,第二个参数是触发执行的间隔时间(单位毫秒)。

因此,抢月饼脚本简单的实现如下:

屏幕快照 2019-10-24 下午5.27.42.png

屏幕快照 2019-10-24 下午5.27.57.png

如何在页面中嵌入自己写的Javascript脚本呢?下面分别介绍一下在Chrome和Firefox两种浏览器上的操作步骤:

Chrome:

1. 打开chrome扩展程序页 - chrome://extensions

2. 将刚才的自定义脚本保存为以user.js为后缀的 .js文件,例如test.user.js,拖入扩展程序页。

3. 重启浏览器。

4. 进入月饼抢购活动页面。此时脚本已自动执行。

17.jpg

FireFox:

1. 下载并安装用户脚本管理插件 greasemonkey (中文翻译成“油猴子”)。

2. 重启浏览器。

3. 将刚才的自定义脚本保存为 .js文件,例如test.user.js,拖入页面空白处。

4. 进入月饼抢购活动页面。此时脚本已自动执行。

18.jpg

屏幕快照 2019-10-24 下午5.28.51.png屏幕快照 2019-10-24 下午5.29.02.png



关于验证码:

在一般的网页中,为了防刷,都会在提交请求之前让用户输入动态的验证码:

19.jpg

动态验证码有效防止了绝大多数JS脚本的自动提交行为。如果它的干扰线和扭曲效果实现得足够好,即使用OCR图像文字识别技术也很难破解。动态验证码的生成和验证流程如下:

20.jpg

由于每次看到的抢购页面里的验证码都不相同,所以很难用自动化脚本攻克。可是,如果抢购页面的开发人员偷懒,只是在抢购页面里引用了固定不变的验证码图片,那么请求和验证流程就变成了下面的样子:

21.jpg

这样一来,只要知道静态的验证码是什么,脚本就可以轻松填写正确的验证码。

屏幕快照 2019-10-24 下午5.29.30.png

喜欢本文的朋友们,欢迎长按下图关注订阅号梦见,收看更多精彩内容

22.jpg


转载声明:本文转载自公众号【程序员小灰】

原文链接:https://mp.weixin.qq.com/s/dYZXGm4ZDUyrCjM9akOYCA


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。