手把手教你写一个抢讲座的脚本

利用js脚本来帮你抢到一个表单提交类型的各种活动,这里以讲座为例~

准备

注册一个麦克表单

创建一个自己的表单

数据探索

首先自己提交一个表单,同时打开f12中的network,看一看自己提交的东西包含了什么。

比如这里我们发现了d这个对象


之后我们尝试着按照它这种格式,自己提交一下,看看能不能成功。

这里我选用了restlet这个工具。


可以发现,成功了o(* ̄▽ ̄*)o

分析

可以看出,我们发送的所有数据都在那个d对象中了,只要能够伪造一个d对象就可以了。当然,还有一个信息也非常重要,那就是我们要发送到的url。

首先,我们来仔细研究下这个表单中提交的这个数据d中的内容:

d: 
{
    "cvs":
    {
        "i":200161277,
        "t":"qC46nGG",
        "s":200451541,
        "acc":"rwazMfH366xixYAPA6VwsFhRdKvlRkRi",
        "r":"http://www.mikecrm.com/form.php",
        "c":
        {
            "cp":
            {
                "201664030":"超超",
                "201664031":"123456"
            }
        }
    }
}

这些字段都是哪里来的呢?

我们再次打开刚才的表单填写页面,通过查看源码可以看到有这样一段脚本。


至此,我们就发现了所有秘密的答案,全部在SOUL这个变量中:

var SOUL = 
{
    "w":800,
    "h":
        {
            "t":"2018年全球智能工业大会",
            "ly":2,
            "lys":1
        },
    "t":null,
    "st":
        {
            "h":{"bgl":{"h":3,"v":9},"yof":0,"bg":"_header_bg_duRuo.png","bgc":"#3B67A0","bgo":1,"tc":"#FFFFFF","dc":"#FFFFFF"},
            "bgc":"#EDF0F8",
            "thc":"#2D8FD9",
            "b":{"bgc":"#FDFDFE","bgo":1,"tc":"#000000","dc":"#666666","oc":"#000000"},
            "s":{"bgc":"#FAFBFC","bgo":1,"btc":"#3B67A0","btct":"#FFFFFF","btw":2}
        },
    "se":null,
    "ext":null,
    "cpo":"201664030;201664031",
    "cpl":"--",
    "cp":{"201664030":[6,1,{"t":"姓名"},null,0],"201664031":[6,1,{"t":"学号"},null,0]},
    "cp_ctcf":null,
    "_m":
        {
            "FRS":200451541,
            "ACC":"rwazMfH366xixYAPA6VwsFhRdKvlRkRi",
            "T":"qC46nGG",
            "I":200161277,
            "U":"\/ugc_5_c\/pub\/6p\/6ppq91m74tg2ln2lb4o22670qjcm9naf\/form\/image\/",
            "CLN":"个人"
        }
};
这里的FRS对应提交的s字段,I对应i字段,ACC对应acc,T对应t。 cpo字段中 "201516568;201516569" 正是提交的字段中cp的key,value则是填写的值。

操作方法

我们在抢课开始前几分钟的时候,要用电脑浏览器打开“阅读全文”的网址,并把这个网址复制下来。然后F12打开Console,复制以下代码进去,回车。

function exec(url){
    $.get(url,function(data){
        data.split("\n").forEach(it=>{
            if(it.indexOf("SOUL")>=0){
                eval(it);
                var d = deal(SOUL,url);
                $.post("http://cn.mikecrm.com/handler/web/form_runtime/handleSubmit.php",{d:d},function(data){
                    console.log(data)
                })
        }})}
    )
}
function deal(SOUL,url){
    var i = SOUL._m.I;
    var t = SOUL._m.T;
    var s = SOUL._m.FRS;
    var acc = SOUL._m.ACC;
    var cp = SOUL.cpo.split(';')
    var r = url;
    var c = {};
    c[cp[0]]="你的名字";//姓名
    c[cp[1]]=123213;//学号
    var c = {cp:c}
    var d ={"cvs":{i,t,s,acc,r,c}};
    return JSON.stringify(d);
}

然后exec(window.location.href)就是选课一次了。

(额,这个演示有点失误...不要在意这些细节!)


如果想要每秒帮忙选一次则可以

setInterval(
    function(){
        exec(window.location.href)
    },1000
)

写在最后

由于表单往往是定时开放的,因此在正式开抢的时候页面会刷新,导致之前粘贴的代码会失效。因此,建议在其它网页上粘贴代码运行。此时注意要window.location.href改成当天新推的表单的网址。

当然,还有一种更加舒服的用法,就是使用油猴脚本(这个插件很强大,详细的用法我就不多说了吧...)


注意其中最上面的@match要匹配你的表单网址

总之:
按照最原始的方法,在一个旧表单页面F12在console复制上面的脚本。记得修改三个地方:姓名/学号/window.location.href。回车运行,然后就可以泡壶茶静静地等待啦~ o(* ̄▽ ̄*)o


  • 12
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值