一、需求分析

  • 这两天有一个小伙伴出于论文的需要,请教我是否有办法可以给问卷星刷单。由于需要几百份的数据,人工刷起来比较麻烦,为此我便研究了一番。
  • 刚开始尝试py脚本,使用post表单的方式进行刷单。经过尝试后发现,在post的请求链接中包含有许多个参数需要进行对应的计算才能得到的。由于继续这个方式,需要研究网页的源码,感觉比较费劲,暂时搁置了。
  • 之后尝试了使用模拟操作的方式进行,过程使用油猴脚本进行模拟操作,最终也实现了想要的功能。
  • 贴一下原文地址:https://itxiaoye.top/article/10 [ [ 我的文章] ]

二、工具选取

  1. 油猴插件 [ 下载 ]:这个插件很好玩的,还可以找到各种浏览器的油猴脚本,例如:视频去vip等等;
  2. 代码编辑器:我用的vscode进行的代码编辑,按照个人的代码编写习惯,只要是能够进行文本编辑的软件就可以了;
  3. AutoHotkey [ 下载 ]:这是一个可以运行在电脑上进行模拟操作的脚本编译器,我也是第一次用,可以一块探讨学习,挺有意思的!

三、摸索过程

急切需要得知解决方案de小伙伴们,可以直接奔向==>【四、解决方案】

20220313

  1. 一开始直接使用 fiddler 抓包工具,监听问卷星填单完成后提交的请求,从中找到对应的请求链接和发送数据,使用py模拟相同的post请求:

    ua = UserAgent()
    def get_headers() -> json:return {"User-Agent": ua.random, #随机代理"Referer": "https://www.wjx.cn/jq/27644141.aspx","Origin": "https://www.wjx.cn",}url = "https://www.wjx.cn/joinnew/processjq.ashx?curID=27644131&submittype=1&t=1647062508952&starttime=2022%2F3%2F12%2013%3A21%3A28&ktimes=169&rn=2104031809&jqpram=HMLSiLXZb&hlv=1&sd=http%3a%2f%2fwww.wjx.cn%2f&jqnonce=df6a765a-2be7-47f9-97f2-94304e4138f2&jqsign=mo%3Fh%3E%3F%3Ch%24%3Bkl%3E%24%3D%3Eo0%240%3Eo%3B%240%3D%3A9%3Dl%3D8%3A1o%3B&jwt=6&nw=1&jpm=55"#请求链接
    data ="submitdata=1%243%7D2%241%7D3%241%7D4%241%7C2%7D5%243%7D6%243%7D7%243%7D8%242%7D9%242%7D10%246%7C7%7D11%243%7D12%243%7D13%242" #请求数据
    sleep_time = 12 # 休眠时间while True:try:r = requests.post(url, headers=get_headers(), data=data)print("------ "+datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]+" ,"+str(r.text)+"------")except Exception as e:logging.error(e)time.sleep(sleep_time)
    
  2. 经过测试发现,请求的时候会返回提示(------ 2022-03-14 17:57:33.678 ,7〒请点击智能验证码进行验证!------),经过分析发现是请求链接后边的一堆变量需要根据特定的规则进行刷新才行。如果要解决遇到的问题,需要分析网站的源代码,所以就暂时尝试其他的办法。

20220314

  1. 分析问卷星的提单操作:(1)填完题目后;(2)需要点击提交按钮;(3)点击弹出的智能验证按钮;(4)进行滑块操作。

  2. 点击浏览器中已经安装好的油猴插件,选择添加脚本
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HMM8LTU7-1647271049306)(https://api.itxiaoye.top/uploads/imgs/article/20220314/35e4af2628255b7dea2f61154a51fd23.png)]

  3. 输入问卷星刷的自动化操作脚本。我的油猴脚本代码,可以进行下载或者安装使用 [ 脚本 ]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kLBE6hnL-1647271049310)(https://api.itxiaoye.top/uploads/imgs/article/20220314/f38e0d7e42a941beca6b20505a8e4c9d.png)]

  4. 启动刚安装的油猴脚本,打开我对应的问卷网址 [ 问卷 ],便能够自动进行问卷刷单。当前只是简单做了一些单选题目,并且设置每个题目选项的概率,同时考虑到题目的关联性。更多的逻辑操作、更多的其他类型题目可以举一反三,修改油猴脚本进行完成(需要会JavaScript语言编程基础)。

  5. 在刷的次数比较多了之后会出现如下报错,这时候就是因为智能验证没有过关。经过分析,智能验证是会检测用户的点击是为脚本点击还是真实点击(会在click操作的时候获取对应的浏览器数据判断当前是否真的有鼠标点击),这个问题通过油猴脚本暂时没有解决方案。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5XNZwe7J-1647271049312)(https://api.itxiaoye.top/uploads/imgs/article/20220314/ec8a9cd2a2afd56eca9f56e7c2ebc062.png)]

  6. 上边遇到的智能验证问题,我找到了一个比较好的解决方法,可以算是通过降维打击进行解决。我们编写的油猴脚本是跑着浏览器上的,它并不能解决浏览器本身限制的问题,但是浏览器是在电脑上边的,所以可以通过电脑上边入手。
    不卖关子了,就是通过类似按键精灵的方式,使用电脑的自动脚本进行鼠标的操作,使得浏览器认为鼠标有真实的动作事件。

  7. 根据上边提到的,我便使用 AutoHotkey [ 官方教程 ] 进行对应的操作。
    在刷问卷的同时,我会启动鼠标定时移动一下并且点击一下,这样能确保浏览器在智能验证的时候识别到鼠标事件,判断点击有效。对应的 AutoHotkey 代码如下,需要先运行脚本,然后在启动了油猴脚本刷单之后,按下 ctrl+j 启动鼠标定时事件(需要将鼠标移动到旁边空白的位置,避免误点),在停止的时候,按下 ctrl+q 停止鼠标定时事件。

    stop := false^q::stop := true^j::Loop{MouseGetPos, xpos, yposMouseClick, , %xpos%, %ypos%MouseMove, 0, %ypos%MouseMove, %xpos%, %ypos%Sleep , 3000}Until stop
    
  8. 需要注意的一些问题:(1)使用同一个ip进行刷问卷,在刷了几十上百个的时候可能会出现提交不成功的问题,这个可能是问卷星后台限制了同一个ip的填单速度,我测试停止一小段时间后便能够再次快乐刷起来;(2)使用f12获取右键查看源码,会导致刷问卷失败的问题。

四、解决方案

  1. 在浏览器中安装油猴插件,然后安装对应的自动刷问卷星的代码 [ 脚本 ]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M9WHDxFx-1647271049314)(https://api.itxiaoye.top/uploads/imgs/article/20220314/f38e0d7e42a941beca6b20505a8e4c9d.png)]

  2. 使用 AutoHotkey [ 官方教程 ] 解决提交问卷之前的智能验证问题。
    对应的 AutoHotkey 代码如下,需要先运行脚本,然后在启动了油猴脚本刷单之后,按下 ctrl+j 启动鼠标定时事件(需要将鼠标移动到旁边空白的位置,避免误点),在停止的时候,按下 ctrl+q 停止鼠标定时事件。

    stop := false^q::stop := true^j::Loop{MouseGetPos, xpos, yposMouseClick, , %xpos%, %ypos%MouseMove, 0, %ypos%MouseMove, %xpos%, %ypos%Sleep , 3000}Until stop
    
  3. 启动刚安装的油猴脚本,打开我对应的问卷网址 [ 问卷 ],便能够自动进行问卷刷单。当前只是简单做了一些单选题目,更多的其他类型题目可以举一反三,修改油猴脚本进行完成(需要会JavaScript语言编程基础)。

  4. 需要注意的一些问题:(1)使用同一个ip进行刷问卷,在刷了几十上百个的时候可能会出现提交不成功的问题,这个可能是问卷星后台限制了同一个ip的填单速度,我测试停止一小段时间后便能够再次快乐刷起来;(2)使用f12获取右键查看源码,会导致刷问卷失败的问题。

五、总结

  • 完成时间:2022-03-14 23:02
  • 出于需求和好奇,进行并完成了这一次自动化操作脚本的开发。这一个小探索,只是简单完成了自动操作的流程,中间的详细逻辑和特定的功能需求还需要小伙伴们自己根据需要进行油猴脚本的修改。
  • AutoHotkey 这个电脑的自动操作脚本也是我第一次使用,感觉还是挺有意思的!
  • 在探索的过程中,使用py脚本进行post数据刷问卷的方法还没有完全走通,这个需要花些时间研究一下网页逻辑代码,感兴趣的小伙伴们也可以一块探讨探讨~

问卷星全自动填写脚本浅尝相关推荐

  1. 问卷星自动填写python selenium脚本(2021vim版,亲测有效,看这一篇就够了)

    目录 前言 一.前期准备 二.具体步骤 1.导入库与预定义变量 2.打开浏览器,防止识别为脚本 3浏览问题,选择问题 4提交按钮,验证 全部代码 前言 问卷星已经成为收集问卷的一个很重要的工具,有时可 ...

  2. Python实现问卷星自动填写和选择

    Python实现问卷星自动填写和选择 啊哈哈哈,我朋友叫我帮他填写问卷星,,我就直接写了个python脚本帮他一次性解决 全随机,全自动,一开始我用的是BP直接抓包发送,不过发送频率过快会让你验证,, ...

  3. JavaScript——问卷星自动填写

    一.前言: 我们学校要刷学术章,有些学术章又是指定在某个时间点填写问卷星的问卷报名的.但是由于我手速慢,导致总会有些时候报不上名,于是想着搞个代码实现自动填写问卷星的报名表.一顿操作后,在github ...

  4. 用Python实现问卷星自动填写(超详细!!!)

    用Python实现问卷星自动填写(超详细!!!) 前言 一.配置环境 1.1安装依赖 1.2安装驱动 二.实战处理 2.1.引入库函数 2.2.程序所需函数详解 (1)自定义单选函数 (2)自定义多选 ...

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

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

  6. python问卷星自动填写

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

  7. 问卷星自动填写JavaScrip脚本使用教程

    本文所用到的案例: https://blog.csdn.net/weixin_44343074/article/details/106133929?ops_request_misc=%257B%252 ...

  8. 问卷星自动填写,智能验证和滑动块

    之前在 这里 介绍了基本的问卷星填写方法,然而博主在之后自动填写时发现经常需要智能验证,而且还加一个滑动块拖动,于是今天继续研究一下添加这个功能. 下面的示例是电脑版的问卷星页面,博客里的 ff3.p ...

  9. python 实现问卷星自动填写多份

    问卷星的问卷填写 工具:burpsuit,python 问卷星亲测,可以用python的requests库对问卷访问填写.首先对访问的页面进行抓包,得到的header部分照抄到requests的hea ...

  10. python实现问卷星自动填写(可以跳过智能验证)

    最近有一个社会实践需要做问卷调查,突发奇想搞一个自动化脚本,省事省米 1 下载依赖selenium selenium是一款网页爬虫重要的工具. 2  安装chrome驱动 这里需要准备chrome浏览 ...

最新文章

  1. 用php写shell,php与shell实现多线程的简单例子
  2. 在SQL 语句批量替换数据库字符串的方法
  3. 使用SSH密钥对给你的阿里云ECS加把安全锁
  4. 组策略链接顺序优先级
  5. 简单介绍一下BSP中的dirs文件和sources文件(WinCE
  6. Java性能分析点滴
  7. vue 利用axios请求接口下载excel
  8. 《转》SAP RM07扩展
  9. java mojo是什么_java – 为什么Maven不能找到我的定制Mojo?
  10. 软考2022上半年真题笔记
  11. mysql答案_MySQL练习(一)参考答案
  12. VScode前进后退快捷键
  13. 【图】Excel快捷键大全+函数公式 职场必备
  14. Android 自定义锁屏_三星Key Cafe 2021最新版下载-三星Key Cafe自定义键盘输入app v1.0.00.26...
  15. 关于BufferedOutputStream的flush方法
  16. cad2016中选择全图字体怎么操作_cad教程分享CAD中如何删除顽固图层?
  17. linux 设置系统时钟,linux clock命令查看和设置硬件时钟
  18. 手动实现promise基础功能代码并测试自己写的promise库是否符合规范
  19. qs计算机专业排名2017,2017年qs计算机专业大学排名
  20. 专转本-计算机二级习题1

热门文章

  1. MySQL基础 — 常用命令
  2. python爬虫下载付费音乐包有什么用_听歌音乐还要我付费?看我用Python批量下载!...
  3. endnote中科大版区别_EndNote X7
  4. Win10操作系统备份与恢复篇·Windows10操作系统如何使用微PE实现备份与恢复
  5. Unity网络教程翻译(三)多人游戏大厅
  6. django for 前端_Django 前端Wbe框架
  7. 计算机专业里有服装设计吗,-------- 学服装设计有前途吗?
  8. 编程制作动态壁纸的思路_Android自定义动态壁纸开发详解
  9. UG NX 12 草图 (基础知识)
  10. ubuntu sftp服务器搭建