以https://www.wjx.cn/jq/35713991.aspx这个问卷页为例

填完问卷打开控制台,转到network并且勾选preserver log(不然等会儿提交的请求看不到),点提交,找到此次提交请求如下:

是post请求,转到下面查看请求参数和post表单提交携带的参数(问卷答案):

发现请求url里面带了9个参数。经过多次请求对比发现submittytype,curld,hlv没有变,其中不难发现curlid就是我们第一次请求https://www.wjx.cn/jq/35713991.aspx这个问卷页面的一个值,即代表了问卷id。

先说t和starttiem,爬虫参数多半是设置和时间有关,经过换算下当前时间毫秒数,基本接近t,因此判定t要么是出站时间要么是进站时间,经过下一次的对比(记录好进入问卷调查页面时间和点击提交的时间),确定了t是问卷提交时间的毫秒数,而starttime则是进入问卷调查页面的时间。

再说rn和jqnonce,我先爬取问卷页面,用jsoup解析返回的问卷html,在html中搜索得到了这两个值(在js中)。

最后一个jqsign,这个参数在js文件里面加密了。先来到问卷调查页面,打开控制台,选择提交按钮,定位到页面元素如下:

这是一个表单提交按钮,再次在控制台定位到右边资源,选择事件监听,打开click标签,发现了提交触发的js:

接着点进js文件,全部选中复制到站长这儿(http://tool.chinaz.com/Tools/jsformat.aspx)格式化之后在保存进自己的编辑器便于查看。接着在js文件里面搜关键字jqsign,如下图:

发现在拼接字符串,就是在拼接提交表单的url,jqsign的值是b经过url编码的,在java可以使用如下方式进行编码解码:

URLEncoder.encode("S","UTF-8");
URLDecoder.decode("S","UTF-8");

那么再看上图的3,发现b是经过dataenc这个函数得来的,传入的参数正是之前获取到的jqnonce。

接着在js文件搜关键字dataenc得到如下函数:

这即是jqsign参数加密的函数,先将ktime值取模,第二步我查了下优先级,发现是如果b为0那么就赋值为1,否则直接就使用b的值,然后紧接着for循环,charCodeAt和fromCharCode都是js的函数,分别是将字符串转为unicode编码和将unicode编码转为字符串。for循环第一步是将传入的a(即已知的jqnonce)每个字符转为unicode值之后再与b进行位运算,第二部是将位运算的结果转为字符串并且添加到d中,最后返回加密的字符串。在java中实现如下:(命名有点乱,测试用的)

public static String dataenc(String jqnonce) {int ktime = 365;// 模拟js算出jqsignStringBuffer g = new StringBuffer();String d[] = new String[]{};for (int c = 0; c < jqnonce.length(); c++) {int b = ktime % 10;if (b == 0) b = 1;char[] temp = jqnonce.toCharArray();String unicodeValue = getUnicode(temp[c]);int f = Integer.valueOf(unicodeValue.toString()).intValue() ^ b;if (c != 0) {g.append(",");}g.append(String.valueOf(f));String h = asciiToString(g.toString());}String jqsign = d.toString();System.out.println("rn   " + rn + "jqnonce  " + jqnonce + "  jqsign  " + jqsign);
}//getUnicode函数
public static String getUnicode(char c) {String returnUniCode = null;returnUniCode = String.valueOf((int) c);return returnUniCode;}
/**
* Ascii转换为字符串
*
* @param value
* @return
*/
public static String asciiToString(String value) {StringBuffer sbu = new StringBuffer();String[] chars = value.split(",");for (int i = 0; i < chars.length; i++) {sbu.append((char) Integer.parseInt(chars[i]));}return sbu.toString();
}

最后再模拟个表单提交,基本上就能完成自动答卷了(注意ip最好轮换)

以上内容仅做学习用途

java爬虫---问卷星自动提交问卷请求参数(jqsign,jqnonce等)解密相关推荐

  1. 学习python实现问卷星自动填写问卷

    学习python实现问卷星自动填写问卷 文章目录 学习python实现问卷星自动填写问卷 任务一:找帖子 思路一: 配置环境: 利用CSS选择器对页面进行解析 我们发现,我们所有的题目的回答的选项的标 ...

  2. PHP实现小型问卷星,JS实现问卷星自动填问卷脚本并在两秒自动提交功能

    脚本只使用问卷星,多选题目前为选中任意选项数量!!!!!!! 最近看到很多群里都在发问卷连接,各种求帮忙,正好这两天没任务,尝试写了自动填问卷的脚本,类似的脚本网上已经有了,但是后来问卷星加了验证,并 ...

  3. 问卷星自动提交-js脚本测试

    今天坐下js脚本分享,以问卷星的表单提交为例: 附上地址: https://sojump.com/jq/15569074.aspx var script = document.createElemen ...

  4. 【JavaScript】【ChormeDav】问卷星自动填写问卷

    problem 如题:钉钉在家考试,用的问卷星,只需要先提交一遍就可以获得答案,然后再填写自己的问卷. solution 单选题用XPath查找填写,random生成随机数选择选项 多选题,取出页面中 ...

  5. Python爬虫拓展应用:最新版本问卷星自动刷,包括解决智能验证、滑块等问题

    Python爬虫拓展应用: 最新版本问卷星自动刷,包括:解决智能验证.滑块等问题 Python爬虫自动刷"问卷星"网站问卷 爬虫运行准备 爬虫运行代码 代码解释 参考博客 Pyth ...

  6. JAVA、Python、selenium、问卷星自动脚本

    项目地址 https://gitee.com/Hardy1/questionnaire-star-script 前期准备 配置jdk 安装python 下载安装mitmproxy 代码实现 项目中se ...

  7. 自动填写问卷星并提交

    自动填写问卷星并提交 鉴于好多小伙伴要做数据分析的时候发放大量的问卷,但收回来的却寥寥无几,还受到其他小伙伴的冷眼,所以在下决定通过代码的方式,来实现问卷星的自动填写并提交. 以谷歌浏览器为例 1.随 ...

  8. python问卷星自动填写

    疫情期间闲着无聊,每天都要填写问卷星来报告健康情况,于是就拿python爬虫写了一个问卷星自动填写系统,一起来看看吧_ import requests import re import time im ...

  9. python问卷星 自动答题_问卷星自动答题神器

    问卷星自动答题神器,由易语言编写的一个问卷星自动答题软件,输入答题界面地址即可实现多IP提交答题功能,可以设置提交份数,系统会模拟不同的IP进行作答并将答题内容上传到问卷星官方.可以进入问卷星官网界面 ...

最新文章

  1. esxi里面安装openwrt和其他虚拟机
  2. wps 模拟分析 规划求解_入行十年,我是如何解决模流分析准确性问题的
  3. chosen ajax获取数据,Jquery Chosen插件 - 由Ajax动态填充列表
  4. 对几个submission文件迅速做voting操作
  5. 【second】Flatten Binary Tree to Linked List
  6. 【软考】[信息安全工程师]
  7. bootstrap 滚动 进度条_bootstrap动态进度条怎么搞
  8. android 改机型玩王者,安卓手机改机型华为nova 8 Pro体验《王者荣耀》90帧超高帧率模式...
  9. Python爬虫之小说信息爬取与数据可视化分析
  10. LeetCode 探索初级算法-数组:10 有效的数独-20200321
  11. SDN交换机在云计算网络中的应用场景
  12. Ubuntu 22.04 ‘Jammy Jellyfish‘ 的新功能
  13. ArcGIS计算面状河流的长度(河流中心线)
  14. 账号管理html,个人账号管理.html
  15. 管理知识型员工:德鲁克日志之五月一日
  16. 域名系统几类服务器,域名系统
  17. 老司机人手必备xxlive 仅供学习交流 勿传播以及商业用途
  18. 怎样开启服务器网页压缩,网站怎么启动GZIP压缩方法(DZ,WP网站开启)
  19. 苹果创始人乔布斯去世:传奇CEO谢幕
  20. 排名第四!京东云IaaS稳居中国云计算第一梯队

热门文章

  1. 在Unity中获得一个物体的所有子物体包括孙物体。
  2. 转自kuangbin的AC自动机(赛前最后一博)
  3. 2022.05 ESP32 空中升级 OTA
  4. 2022亚太数学杯数学建模竞赛C题(思路、程序......)
  5. vue-element-admin花裤衩项目,关于下载 svg 并放到文件夹之中,修改Icon字体图标的颜色样式问题
  6. xp系统没有服务器时间,XP系统里时区没有北京时区
  7. 一种全新的指令集架构RISC-V
  8. 世界需要简化第五篇:阅读本文需要有基础,仅一文教你快速应用FOC的SVPWM实现三相异步电机调速?快速学会使用著名的电机SVPWM调速控制算法——史上最简单易懂,算法经高度抽象简化,所有下标经仔细核对
  9. 技术分享,如何使用图数据库构建网站后台数据库?
  10. iphone 6分辨率