PHP--用curl完成问卷星答卷

本文介绍了如何使用PHP的curl库来自动化完成问卷星的答卷过程。通过分析问卷页面的HTTP请求,获取必要的参数如rn、jqnonce、jqsign等,并模拟提交,实现了脚本自动提交问卷的功能。虽然测试中成功提交了100次,但后续提交可能需要验证。

文章目录

原因

由于公司订餐系统选用的问卷星系统,有时候工作忙忘记订餐导致没饭吃,终于下定决心研究一下怎么能更方便的吃饭,于是开始研究怎么用curl来自动化处理问卷星答卷。

实现

首先我们需要了解问卷星页面。
打开一个问卷星页面。
这里是我的一个测试页面。(https://www.wjx.cn/jq/80375841.aspx)
尝试提交。
发现当点击提交的时候会向此地址发送数据。
在这里插入图片描述
发送的数据格式如下:
在这里插入图片描述

submittype: 1
curID: 80375841
t: 1591198942624
starttime: 2020/6/3 23:42:14
ktimes: 38
rn: 1878089202
hlv: 1
jqnonce: e38ac63f-83c4-433c-8b61-3e1c41b467ae
jqsign: m;0ik>;n%0;k<%<;;k%0j>9%;m9k<9j<>?im

form中包含用户输入的答案

submitdata: 1$3}2$test

这里form比较好理解,表示的第一个空选择的是第三个选项,第二个空填写的是test

主要是param携带的东西。
根据多次的实验。
submittype,hlv是不变的
curID表示当前的页面ID,就是问卷星后面跟的数字。

那么接下来要解开其余ID的迷。

t: 1591198942624  //表示当前时间戳 毫秒 这里表示的是提交时间!!
starttime: 2020/6/3 23:42:14 //当前打开页面时间
ktimes: 38  //答题时间,猜测
rn: 1878089202  //目前暂且不知
jqnonce: e38ac63f-83c4-433c-8b61-3e1c41b467ae //不知
jqsign: m;0ik>;n%0;k<%<;;k%0j>9%;m9k<9j<>?im  //不知,但是是一个签名认证

这时候迷惑的主要是几个很奇怪的ID。
rn,jqnonce,jqsign,ktimes的获取。只要搞到这几个ID怎么来的就可以了。
我们抓一下答题页面。

在这里插入图片描述
在这里插入图片描述

此时,就剩rn和ktimes,jqsign不知道怎么来的。
我们看到其中有一个rndnum和rn一样,那么基本可以确定。rn,jqnonce,starttime都可以获取页面中原有的。

那么jqsign到底怎么来的呢。
我们看一下页面点击事件触发的js。
在这里插入图片描述
看代码,在代码中搜索jqsign

window.jqnonce &&
(e += "&jqnonce=" + encodeURIComponent(window.jqnonce), 
k = dataenc(window.jqnonce), 
e += "&jqsign=" + encodeURIComponent(k)), 

jqsign是调用了dataenc方法根据jqnonce计算出来的。

function dataenc(a) {
   
   
    var c, d, e, b = ktimes % 10;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值