为什么写这个?
最近想买个小米手机,结果没抢到,感觉这个抢购是不是有问题,网上一搜,发现有抢购器之类的东西,就分析一下
一、自动抢购需求分析:问题域
1.1 背景:当前网站经常出现秒杀、限时抢购的活动。
举例子:电子商务、购物网站类、小米手机抢购
抢购者往往话费了大量的时间资源在抢购网站中,结果往往却不尽如人意,很多抢不到。浪费了时间,却没有收获。
假如能够有一个软件能够自动的按网站抢购要求登录网站、进行抢购,并将抢购的结果通知给用户是不是更好呢?
1.2 一般抢购流程:
抢购网站用户注册(省略:一般要绑定邮箱,需要先自动注册一个邮箱,然后自动激活功能)
用户填写登录信息(用户名、密码、验证码信息)
进入到抢购页面(若干个页面跳转)
根据抢购需求,自动填写抢购信息:如选中被抢购产品、选中型号、填写抢购的一些信息,如抢购人、抢购时间、抢购送货地址
抢购成功下一步,抢购失败间隔一定时间继续上面一个操作,
抢购成功,将抢购成功结果信息通知抢购人(邮件、短信、声讯、电话… …)
进入下一步,在线支付,填写好自动支付信息,自动支付成功(通知抢购人自动支付成功)
1.3 支持多人抢购流程:
[1] 抢购系统能够模拟一个抢购用户 抢购一个商品
[2] 抢购系统能够模拟一个抢购用户 抢购多个商品
[3] 抢购系统能够模拟并发多个抢购用户 抢购 多个相同商品
[4] 抢购系统能够模拟并发多个抢购用户 抢购 多个不同商品
1.4 联合抢拍器:
1.提前60分钟输入验证码
2.三种抢拍模式:定时、随机、孤品抢拍模式,其中手动模式可以连续监控宝贝动态长达60分钟且不耗费CPU。
3.修改价格上架抢拍功能,在商城常见的抢拍模式,一般抢拍器无法胜任。
4.自动支付,比引擎的自动支付更合理,哪件需要自动支付可以单独设置。
5.开一个软件可以同时抢拍多件宝贝。
6.自动更新,让用户更省力。
7.支持颜色、尺码、VIP、匿名、留言等功能。
8.相互协助抢拍,增加成功率。
9.即将增加功能:自动探测店主是否更换了尺码颜色等信息,防止这类花招造成抢拍失败。
1.5 “秒杀”,是网络卖家发布一些超低价格的商品,让所有买家在同一时间通过网络进行抢购的一种促销方式。由于商品性价比很高,往往活动一开始就被抢购一空,所需时间甚至以秒计算。
也正是这种僧多粥少的状况,一种能够高频率点击页面的微型软件——秒杀器应运而生。淘宝网此前举行的“一元秒杀”活动,网友就认为部分人使用抢拍器等软件作弊,破坏了活动的公平性。为此,淘宝网进行了紧急处理,全面禁售此类恶意软件。但事实仅仅是禁止,但淘宝暂时没有办法完全屏蔽这种程序。
1 服务器压力:在秒杀活动开始的前5分钟内,访问流量会放大到3-5倍,甚至10倍以上,平时设计的压力容量,在这里根本发挥不了作用,如数据保存不了,服务不响应。比如商场的Nike专柜搞活动,所有鞋1元销售,20:00开始,服务员只有3位,大家蜂拥而上,大多数人压根就看不到鞋。
2 抢拍器:很多人说,我点下去就没有啦,一点不奇怪,抢拍器在活动开始的前2-5分钟启动,每秒钟可以想淘宝发几十次请求,所有商品一上架,秒杀器在0.1秒钟不到就知道上架啦,接下来马上执行下单操作,应该在0.05秒就可以完成,所以抢拍器基本在0.15秒钟就可以将商品拍下。普通人使用浏览器(浏览器加载一个页面就需要2-3秒钟),根本做不到,抢拍器是基于http协议做的,完全可以做到,目前最好用的仍然是安百网的联合抢拍器。
3 关于验证码问题:绝大多数站点都很难解决,其实验证码可以通过提前访问而获取到的。
秒杀活动,本意是好的,但是普通人你不使用秒杀器你基本不会买到商品的。不少站点说封杀抢拍器,但是知道HTTP的人都知道,服务器端不会知道是人还是抢拍器在做这个事情,对付低级的抢拍器是可以的,但是高级点的抢拍器是没有办法的,就比如说安百网联合抢拍器。不少人在发牢骚,其实很多使用抢拍器的人在偷笑。当然如果这些活动不会惠及到普通人,让少部分人得益,重在参与,乐在其中。
二、自动抢购解决方案:人机交互领域:用程序模拟人机交互过程 设计域
思路一:找现成的:抢购器 抢拍器 秒杀器 秒杀软件 抢购软件
http://goolexyz.blog.sohu.com/
思路二:runloader或录屏软件、性能测试软件、人机测试软件等。
思路三:研发解决思路:
2.1 将抢购人信息写入到抢购系统的数据库User表中的信息包括:用户名、密码、抢购的产品名称型号、邮箱、电话、邮寄地址、抢购开始时间和抢购结束时间、抢购频率、抢购最大次数、抢购数量、是否子线支付等。
2.2 根据抢购人,批量启动抢购用户登录抢购网站
关键技术:验证码识别技术:验证码自动识别技术 http://www.skycn.com/soft_intro.php?id=55424
2.3 网站内跳转、设置值、http请求相关 抓包分析
2.4 抢购动作:http post操作
每一个页面提交都是一个http请求,可以通过抓包工具,抓到请求的协议和参数,返回的协议和参数,
用httpclient之类的工具模拟发送请求即可
如模拟登陆、模拟填写抢购订单、等等
尤其注意:sessionId,每次向服务器发送请求时,一定要带上上次将返回的sessionId,保证session验证能够通过
2.5 抢购成功 –> 发短信、邮件、声讯通知抢购者
2.6 计费功能:抢购成功一个收取一定费用
2.7 配置自动在线支付,可以在线支付
三、自动抢购实施解决:实现域、实施域
3.1整理出http交互协议:httpclient
获取验证码协议:请求、响应
登陆协议: 请求、响应
抢购订单: 请求、响应
支付协议: 请求、响应
3.2数据库设计:MySQL
用户表:用户名、密码、抢购的产品名称型号、邮箱、电话、邮寄地址、抢购开始时间和抢购结束时间、抢购频率、抢购最大次数、抢购数量、是否子线支付,用户并发抢购线程数,抢购次数,抢购状态、抢购结果等。
3.3UI原型:html/jsp/php/python
录入用户信息界面
启动抢购流程登陆获取认证码界面
抢购主界面:抢购用户任务进度情况界面:包括一些信息:用户、开始抢购时间、用户当前执行的操作,返回的结果… …
增加抢购、停止抢购、暂停抢购、删除抢购
统计报表:多少用户抢购,抢购成功的数量、失败的数量
3.4 技术架构:
分层架构:UI(html/jsp) + spring + spring jdbc/ibatic/hibernate + mysql + OS(Linux/Windows)
后台多线程:concurrent包、spring job、spring batch、timers等
应用服务器:tomcat jvm
四、自动抢购验证总结:测试、验证域
苹果抢购、小米抢购、火车票抢购、淘宝抢购、京东抢购、苏宁、国美、….测试验证
http://bbs.xiaomi.cn/thread-6480236-1-1.html
http://www.xiaomi.com/index.php
转载自原文链接, 如需删除请联系管理员。
原文链接:抢购器 抢拍器 秒杀器 秒杀软件 抢购软件 设计思路,转载请注明来源!