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

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

%e6%9c%88%e9%a5%bc

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

%e5%b0%8f%e4%bb%93%e9%bc%a0%e7%be%a1%e6%85%95

%e5%b0%8f%e4%bb%93%e9%bc%a0%e7%be%a1%e6%85%952

%e5%b0%8f%e4%bb%93%e9%bc%a0%e7%be%a1%e6%85%953

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

%e5%b0%8f%e4%bb%93%e9%bc%a0%e7%be%a1%e6%85%954

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

%e5%b0%8f%e4%bb%93%e9%bc%a0%e7%be%a1%e6%85%955

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

%e5%b0%8f%e4%bb%93%e9%bc%a0%e7%be%a1%e6%85%956

%e5%b0%8f%e4%bb%93%e9%bc%a0%e7%be%a1%e6%85%957

%e5%b0%8f%e4%bb%93%e9%bc%a0%e7%be%a1%e6%85%959

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

%e5%b0%8f%e4%bb%93%e9%bc%a0%e5%af%92%e6%9a%841

%e5%b0%8f%e4%bb%93%e9%bc%a0%e5%af%92%e6%9a%842

%e5%b0%8f%e4%bb%93%e9%bc%a0%e5%af%92%e6%9a%843

%e5%b0%8f%e4%bb%93%e9%bc%a0%e5%af%92%e6%9a%844

%e5%b0%8f%e4%bb%93%e9%bc%a0%e5%af%92%e6%9a%845

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

%e6%8a%a2%e6%9c%88%e9%a5%bc%e9%a1%b5%e9%9d%a2

页面的HTML代码如下:

%e9%a1%b5%e9%9d%a2%e4%bb%a3%e7%a0%81

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

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

%e8%84%9a%e6%9c%ac%e4%bb%a3%e7%a0%81

%e5%b0%8f%e4%bb%93%e9%bc%a0%e5%af%92%e6%9a%846

%e5%b0%8f%e4%bb%93%e9%bc%a0%e5%af%92%e6%9a%847

%e5%b0%8f%e4%bb%93%e9%bc%a0%e5%af%92%e6%9a%848

%e5%b0%8f%e4%bb%93%e9%bc%a0%e5%af%92%e6%9a%849

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

Chrome:

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

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

3. 重启浏览器。

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

chrome

FireFox:

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

2. 重启浏览器。

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

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

firefox

%e5%b0%8f%e4%bb%93%e9%bc%a0%e5%af%92%e6%9a%8410

%e5%b0%8f%e4%bb%93%e9%bc%a0%e5%af%92%e6%9a%8411

%e5%b0%8f%e4%bb%93%e9%bc%a0%e5%af%92%e6%9a%8412

%e5%b0%8f%e4%bb%93%e9%bc%a0%e5%af%92%e6%9a%8413

关于验证码:


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

%e9%aa%8c%e8%af%81%e7%a0%81

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

%e9%aa%8c%e8%af%81%e7%a0%81%e6%b5%81%e7%a8%8b1

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

%e9%aa%8c%e8%af%81%e7%a0%81%e6%b5%81%e7%a8%8b2

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

%e5%b0%8f%e4%bb%93%e9%bc%a0%e5%af%92%e6%9a%8415

%e5%b0%8f%e4%bb%93%e9%bc%a0%e5%af%92%e6%9a%8416

 

打赏支持我写出更多好文章,谢谢!

打赏作者

打赏支持我写出更多好文章,谢谢!

7 15 收藏 21 评论

关于作者:玻璃猫

互联网公司的码农一枚,喜欢算法和面向对象设计。个人微信号:13522239721 个人订阅号:dreamsee321欢迎一起交流讨论! 个人主页 · 我的文章 · 70 ·  

相关文章

可能感兴趣的话题



直接登录
最新评论
跳到底部
返回顶部