一、授人以鱼

如果想直接拿代码就用,不想了解具体设计思路,那看本节内容就够了。到文末复制代码,以下是使用教程:

需要在main函数给定3个参数,URL(问卷的链接)、answer(问卷答案),num(需要填写的份数)。

answer的格式是 题号+$+答案,如果是单选题,那答案就是选项序号,如果是多选题,用 | 作为分隔符将多个答案拼接,如果是填空题,那答案就直接是文本,多道题使用 } 进行分隔。例如,answer='1$1}2$2}3$3|4}4$问卷测试' ,表示第一题选第一个,第二题选第二个,第三题是多选题,选第3和4个,第五题是填空题,填入’问卷测试’。有没有感觉很复杂hhh,有简单的方法得到答案序列,用浏览器打开问卷链接,填写问卷,然后按F12进入调试模式,第一行选network项,然后提交问卷,左边选择第一行(或者name是这个的),右边拉到最下面,submitdata后面的就是参数answer应该填的值。顺序不要乱,填写问卷不提交→打开调试模式→提交问卷→查看submitdata项。

另外,运行代码后,控制台会有输出,输出的数据中,10开头的是填写成功,22开头的是填写失败,失败的概率不高。

二、授人以渔

这里我介绍代码的实现思路。很容易想到,我们应该通过某个URL,把数据发送给问卷星的服务器。所以要解决的问题是URL是哪个,数据的格式是什么。通过填写问卷不提交,打开浏览器的调试模式,然后提交问卷,可以查看提交问卷之后发送的请求。

解读这个发送请求:

  1. URL:https://www.wjx.cn/joinnew/processjq.ashx
  2. 传参方式:POST
  3. GET参数(以下参数通过get参数拼接方式拼接到URL后面):
submittype: 1
curID: 73771803
t: 1589691842642
starttime: 2020/5/17 13:02:42
ktimes: 110
rn: 1901991322
hlv: 1
sd: http://www.wjx.cn/
jqnonce: d29970a5-3308-46ea-b7f2-d510d8cc52dc
jqsign: e38861`4,2219,57d`,c6g3,e401e9bb43eb
jpm: 15

5.POST参数

submitdata:1$1}2$3}3$2|4}4$问卷测试

必要参数的含义

submittype:    问卷类型,一般的问卷应该是1curID:    可能是问卷ID,可以从response中获取t:    时间戳+三位随机数starttime:    打开问卷的时间,可以随机生成ktimes:    问卷填写时长吧,可以随机生成rn:    不知道,可以从response中获取hlv:    好像没啥用的一个参数,没有也行 jqnonce:    不知道,可以从response中获取 jqsign:    不知道,根据rn和jqnonce生成submitdata:    提交的答案

jqsign生成方式(JS代码),需要将其转为python代码

dataenc(a)
{
var b = ktimes % 10;
b == 0 && (b = 1);
for (var d = [], c = 0; c < a.length; c++) {var f = a.charCodeAt(c) ^ b;d.push(String.fromCharCode(f))
}
return d.join("")
}

关于IP的问题

同一IP多次提交会让你输入验证码,识别验证码并提交有点难,所以可以考虑每次换不同的IP,在请求头header里设置就行

好了,到这里,URL知道了,参数及获取方式也知道了,具体实现方式就看下面的代码吧

三、代码

# -*- coding: utf-8 -*-
"""
Created on Sun May 17 09:27:04 2020@author: Z
"""
import requests
import re
import time
import randomdef getJqsign(ktimes, jqnonce):result = []b = ktimes % 10if b == 0:b = 1for char in list(jqnonce):f = ord(char) ^ bresult.append(chr(f))return ''.join(result)def run(url,answer):ip = '{}.{}.{}.{}'.format(112, random.randint(64, 68), random.randint(0, 255), random.randint(0, 255))header = {'X-Forwarded-For': ip,'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',}response=response = requests.get(url=url, headers=header)cookie = response.cookiesktimes = random.randint(15, 50)jqnonce = jqnonce = re.search(r'.{8}-.{4}-.{4}-.{4}-.{12}', response.text).group()rn = re.search(r'\d{9,10}\.\d{8}', response.text).group()id = re.search(r'\d{8}', response.text).group()jqsign = getJqsign(ktimes, jqnonce)start_time = start_time = re.search(r'\d+?/\d+?/\d+?\s\d+?:\d{2}', response.text).group()time_stamp = '{}{}'.format(int(time.time()), random.randint(100, 200))postUrl = 'https://www.wjx.cn/joinnew/processjq.ashx?submittype=1&curID={}&t={}&starttim' \'e={}&ktimes={}&rn={}&jqnonce={}&jqsign={}'.format(id, time_stamp, start_time, ktimes, rn, jqnonce, jqsign)data = {'submitdata': answer}response = requests.post(url=postUrl, data=data, headers=header, cookies=cookie)print(response.content.decode())print()if __name__ == '__main__':url='https://www.wjx.cn/jq/73771803.aspx' #问卷链接answer='1$1}2$2}3$3|4}4$问卷测试' #答案num=10  #填写份数for i in range(0,num):run(url,answer)

python批量填写问卷星问卷相关推荐

  1. Python爬虫拓展应用——Selenium代刷问卷星问卷

    原始版本,升级版请见Selenium代刷问卷星问卷,升级版. 二更(2018年9月19日): 慎重考虑升级版也需要一定开发经验的同学才能自己完成.所以设置了仅vip可见,希望谅解. 感谢大家的光临,受 ...

  2. 问卷星问卷数据怎么快速导入SPSSAU?

    最近收到小伙伴询问问卷星导入的问卷数据怎么编码? 现在的问卷调查,很多都是通过网络问卷的方式进行,问卷星是一个专业的在线问卷调查.测评投票平台,如果你的问卷正好是在问卷星网站发放,填答,回收数据,那太 ...

  3. 【python】自动填写问卷星问卷及提交

    前言:问卷是很好的网络调查方式之一,近年来,问卷星被广泛应用于各方面的调查.本文介绍了利用python代码自动填写问卷星基本题目,拥有自动填写.解决智能验证.批量提交问卷等功能. 目录 1.下载浏览器 ...

  4. 问卷星python自动提交_GitHub - Awacky/WJX_Autosubmit: 问卷星问卷自动提交,Python3版本,2020年8月仍有效...

    WJX_Autosubmit 问卷星自动提交,Python3版本,2020年8月仍有效.采用构建随机答案,不支持验证码. 目前github上的可用版本并不多,同时个人接触较多问卷星的问卷,便萌生了用P ...

  5. 问卷星刷问卷python_Python+Selenium自动刷问卷星问卷

    importtimeimportrandomfrom selenium importwebdriverdefautoSelect():#将问卷星网站放在下面 driver.get('https://w ...

  6. python 批量填写word表格

    今天因为老爸下乡扶贫工作,要填很多word表格,一张表一张表填写显然太慢了,就简单写了一个python代码去处理.大体上就是使用docx库来批量填写word表格,至于word表格的数据来源是使用xlr ...

  7. Python笔记(六)--Python3实现批量提交问卷星问卷

    大概内容如下: 利用Fiddler抓包,对点击提交所传输的数据包进行分析:(划重点) 爬取免费代理ip网站(例如:西刺代理)发布的IP地址,构建ip地址池: 引用fake_useragent库的Use ...

  8. 问卷星/问卷管理系统的设计与实现,附源码+开发环境【优质毕设】

    文章目录 开发环境 功能模块 部分功能展示 总结.源码获取 开发环境 前后端:Java8 + SpringBoot + Vue 数据库:mysql 功能模块 系统分为管理员.教师.学生三个角色. 管理 ...

  9. 测试问卷星问卷公开的问题

    http://www.sojump.com/jq/1540481.aspx http://www.sojump.com/jq/1540485.aspx 转载于:https://www.cnblogs. ...

最新文章

  1. 用友登录控件Vbs脚本
  2. IT公司100题-27-跳台阶问题
  3. docker 端口映射 及外部无法访问问题:开启IP转发从而解决
  4. ASP.NET Core 网站运行时修改设置如何自动生效
  5. Spring和JSF集成:国际化和本地化
  6. 我把朋友圈关掉了235天
  7. Java集合对象详解
  8. xcode中使用正则表达式来搜索替换代码
  9. win7系统下装ubuntu系统
  10. [ExtJs6]随记--去除extjs trial水印
  11. 树莓派3B制作无线wifi(桥接模式)
  12. 计算机如何算幂函数,幂函数(乘方)|指数(函数)|对数(函数)|及其运算法则...
  13. javascript数组(array)的常用方法(shift/unshift/pop/push/concat/splice/reverse/sort/slice/join)
  14. 微信支付V3-下载交易账单
  15. IE浏览器上不了网的原因
  16. 第三章 LD3320语音识别模块的使用
  17. 谷歌浏览器获取计算机用户名,谷歌Chrome浏览器如何删除记住的账号和密码
  18. 【算法】旅行商A*算法
  19. 网络原理之TCP/UDP IP
  20. Cadence Orcad Capture 妙用Intersheet Reference页面指示图文教程

热门文章

  1. Cuba 获取当前登录用户
  2. RHEL下编译wireshark源码
  3. 进入Recovery模式方法
  4. 如何最大效率压缩视频文件(ffmpeg)
  5. 数据结构与算法之美 32 字符串匹配基础(中):如何实现文本编辑器中的查找功能
  6. DDN4.9实践 - Source版的安装
  7. 智能手机低价成潮,vivo为何执念高端?
  8. js一天、两天倒计时定时器实现方案
  9. 深度学习准备之安装双系统
  10. hls.js下载m3u8视频播放hls.js