python问卷星模拟提交

*一、前言

**
笔者在家闲得无聊,突然想突破一下问卷星的反爬虫机制,顺便刷刷问卷,于是就开始分析了。
**

二、分析过程

**
1、fiddler抓包
模拟提交首先当然是打开fiddler看看提交了什么包啦。
fiddler抓包数据
2、分析不变参数
我们先来看不变的参数,这样的话我们把它作为一个常量就可以了。经过多次提交之后发现,submittype(答卷类型?),curID(答卷ID),rn(一个随机数random,但是在同一份问卷中是固定的),hlv(这个猜不出来)
3、分析变量
1、t参数
提交结束时间,因为这个时间总是比starttime晚,而且转化为时间戳就是一个具体的时间。
2、starttime参数
开始时间,见名知意,调查问卷也统计这个参数
3、ktimes
这个一开始也是百思不得其解,后来在提交按钮的Event Listeners的click事件中找到了ktimes关键字
在这里插入图片描述
在这个js文件中,ktimes被做了多次自增运算,我怀疑就是故意来坑刷题的人。(▼ヘ▼#),但是最后我直接放了一个随机数好像就蒙混过关了。。。
4、jqnonce参数
这个参数在问卷页面直接搜索关键字直接可以搜到,利用正则表达式截取就可以了。
5、jqsign参数
我更加加深了我的怀疑,这个参数也是故意来坑刷题的人的。他先是做了代码混淆,然后又做了一个莫名其妙的运算。。不过还好我为什么要和他硬碰硬呢?直接利用python库执行js代码,绕开他的签名算法。
在这里插入图片描述

三、网站的反爬措施

 暂时知道的有两个吧,一个是单IP提交30次左右直接标记为可疑IP,填问卷的时候疯狂弹验证码,解决这个问题我用了代理IP。另一个是不同IP20秒内提交11次左右问卷被标记为可疑问卷,此时所有填写IP都会疯狂弹验证码,解决这个问题我用了程序sleep的方式来使问卷退出黑名单。

四、代码如下

import random
import time
import requests
import urllib3
import execjs
import reurllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
requests.adapters.DEFAULT_RETRIES = 5
TARGET_URL = 'https://www.wjx.cn/jq/***.aspx'
headers = {'Connection': 'keep-alive','Content-Length': '24','Origin': 'https://www.wjx.cn','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36','Content-Type': 'application/x-www-form-urlencoded','Accept': '*/*','Referer': TARGET_URL,'Accept-Encoding': 'gzip, deflate, br','Accept-Language': 'zh-CN,zh;q=0.9','Cookie':'*****'
}# 代理服务器
proxies = {"http": proxyMeta,"https": proxyMeta,
}main_session = requests.session()
def get_jqnonce():response = requests.get(TARGET_URL, verify=False, timeout=5)html_text = response.textjq_list = re.findall('jqnonce.*";', html_text)jq_value = jq_list[0].split('"')time_list = re.findall('starttime.*";', html_text)time_value = time_list[0].split('"')return jq_value[1], time_value[1]def get_jqsign(jqnonce, ktimes):jsencrpt = """function dataenc(a,ktimes) {var c, d, e, b = ktimes % 10;for (0 == b && (b = 1), c = [], d = 0; d < a.length; d++) e = a.charCodeAt(d) ^ b, c.push(String.fromCharCode(e));return c.join("")}"""jsfunc = execjs.compile(jsencrpt)jqsign = jsfunc.call('dataenc', jqnonce, ktimes)return jqsignsubmittype = '1'
curID = re.findall('/[0-9]+', TARGET_URL)[0].replace('/', '')
(jqnonce, starttime) = get_jqnonce()
timeArray = time.strptime(starttime, "%Y/%m/%d %H:%M:%S")
rn = '1739566547'
hlv = '1'
print('--------------开始提交--------------------')
for i in range(0, 100):t = str(int(time.mktime(timeArray)) + random.randint(5, 30)) + str(random.randint(100, 999))  #模拟作答时间,同时补齐时间戳ktimes = random.randint(10, 100)jqsign = get_jqsign(jqnonce, ktimes)payload = {'submittype': submittype,'curID': curID,'starttime': starttime,'t': t,'rn': rn,'hlv': hlv,'ktimes': ktimes,'jqnonce': jqnonce,'jqsign': jqsign}submitdata = {'submitdata': '1$' + str(random.randint(1, 2)) + '}2$' + str(random.randint(1, 2))}  #作答结果随机response = main_session.post('https://www.wjx.cn/joinnew/processjq.ashx', verify=False, params=payload,data=submitdata,headers=headers, proxies=proxies)main_session.keep_alive = Falseprint(response.text)if re.findall('^7', response.text):print('发现验证码,我要睡一会')time.sleep(20)print('我醒了')print(f'提交到第{i}次')
print('--------------提交结束--------------------')

五、存在问题

首先还是效率比较慢,因为要长时间sleep而且没有采取协程或者多线程,还有就是存在一个严重的问题,header必须强制加入cookie否则会报错误,这个我很纳闷,我之前用第一次请求来传cookie竟然失效了,这个问题希望大佬可以解决一下。以及有其他问题都可以指出来,欢迎技术交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/44958.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用python实现问卷星自动答题功能——基础篇

题主在学习的过程中&#xff0c;老是有人来让填问卷星&#xff0c;就觉得人填的很麻烦&#xff0c;于是就自己动手写了一个python脚本来实现自动填写问卷星 1.首先我们得学会使用python里面的一个库&#xff0c;selenium&#xff0c;这个库是用来专门面对浏览器的一个库&#…

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

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

自动填写问卷星并提交

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

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

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

利用GoogleTampermonkeyModify Headers实现问卷星调查问卷的自动填写提交

前言 首先一个月没有更新博客&#xff0c;是因为去苏州尝试了一下暑假工&#xff0c;然后对于大家在博客留下的评论和问题也没有来得及回复&#xff0c;实在不好意思。不得不说&#xff0c;暑假工挺累的&#xff0c;而且基本上在消磨时间&#xff0c;说实话也不算后悔&#xf…

Python实现问卷星调查问卷自动填写

文章目录 前言一、配置环境1.1 下载依赖selenium1.2 安装chrome驱动1.3 引入库 二、简易版快速上手教程1.自定义变量2.自定以函数3 主函数编写 三 逐步解析1 基础代码2 实现步骤 四 代码总结 前言 如何使用python实现对问卷的自动填写提交任务并且还能解决智能验证问题。 一、…

Mac 软件出现「意外退出」及「打不开」解决方法

解决方法 方法其实有很多种&#xff0c;这里介绍常用的几种 终端法需先安装Xcode或Apple命令行工具 如未装Xcode可以使用下列命令安装Apple命令行工具&#xff08;如安装有Xcode可忽略&#xff09; xcode-select --install 1.终端法 sudo codesign --force --deep --sign -…

postman能正常打开但不显示窗口

1.最近使用postman偶尔出现以下问题 postman在任务栏能正常打开&#xff0c;如下图&#xff0c;使用AltTab也能看到&#xff0c;但是窗口就是显示不了 2.解决方案 将鼠标放在任务栏上&#xff0c;使用快捷键Alt空格&#xff0c;弹出小窗口&#xff0c;然后点击弹框中的最大化…

MPAndroidChart的HorizontalBarChart数值显示不全问题

现在使用的版本是&#xff1a;v3.1.0 方案一&#xff1a; private HorizontalBarChart hor_bar_chart; hor_bar_chart(HorizontalBarChart) findViewById(R.id.hor_barchart); YAxis leftYAxishor_bar_chart.getAxisLeft(); // 设置y轴边距&#xff0c;解决数值过大显示不全问…

解决 echarts 图中 tooltip 文本内容太长导致显示不全

问题&#xff1a; 使用 tooltip 的 extraCssText&#xff0c;高效方便 tooltip: {show:true,trigger: "axis",confine: true, // 文本太长自动换行extraCssText: white-space: normal; word-break: break-all;, // 文本太长自动换行效果&#xff1a;

CoordinatorLayout显示不全问题

问题一 <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"android:layout_width"match_parent"android:layout_height&…

在html中页面不全,网页显示不全,教您网页显示不全怎么办

当我们在电脑系统中使用IE浏览器浏览网页时&#xff0c;偶尔会出现是否只查看安全内容的提示&#xff0c;甚至有可能会出现页面显示不全的情况。一般遇到这种情况会选择继续查看网页内容&#xff0c;怎么去处理&#xff1f;下面&#xff0c;小编给大家介绍网页显示不全的解决步…

CSS问题:导航栏设置通栏后,放大页面背景显示不全

问题描述&#xff1a; 正常显示时&#xff1a;将网页放大到150%后&#xff1a; 解决办法&#xff1a; 当导航栏设置为width:100%或不给宽&#xff0c;是相当于当前文档流而言的&#xff0c;也就是浏览器窗口的大小。 此时假设浏览器窗口大小为1000px&#xff0c;那么这个通栏…

关于小程序 input 组件内容显示不全(显示的长度不满 input 宽度)问题

今天在做表单的提交&#xff0c;其中input框出现了一个诡异的问题&#xff0c;就是内容显示不全&#xff08;显示的长度不满 input 宽度&#xff09;&#xff0c;用前愆訾的文章解决&#xff0c;地址http://www.cnblogs.com/miu-key/p/7168933.html。感谢博主~ 转载自&#xff…

wkwebview html5页面,WKWebView h5 页面显示不全问题

WKWebView h5 页面显示不全问题 首先先来看一下效果图如下所示: 1.png 2.png 图 1 下面的分享按钮只显示出一点, 当时想出现这样的 bug 无外乎两点 1.h5 那边设备兼容问题 2.ios 这边显示问题, 问了 h5, 说是直接加载底部的 CSS 样式, 安卓那边显示 OK, 最后看了 h5 的代码也没…

html玩游戏显示不全,客户端登录界面显示不全解决办法

《新天堂II》客户端登录界面显示不全解决办法 在登录《新天堂II》游戏过程正&#xff0c;如果您出现客户端TCLS 界面显示不完全问题&#xff0c;请按照以下步骤设置&#xff0c;进行解决。 双击游戏图标后&#xff0c;出现登录界面显示不完全&#xff0c;如下图&#xff0c;玩家…

layUI的页面显示不全解决方法

在做项目时页面显示不全 可以在layui的css中直接改属性 layui-tab-item 找到这个属性&#xff0c;直接修改高度&#xff0c;如果是谷歌浏览器的话记得清缓存。 还有就是在嵌入时修改属性 <iframe scrolling"no" frameborder"0" src" " wid…

昆仑万维CEO方汉:AIGC以低成本达到80分水平,腰部工作者将大概率被淘汰 | 中国AIGC产业峰会...

丰色 发自 凹非寺量子位 | 公众号 QbitAI “如果人类的水平达不到80分&#xff0c;就会被AI淘汰。” 在中国AIGC产业峰会现场&#xff0c;昆仑万维CEO方汉抛出这样一个大胆预测。 在他看来&#xff0c;目前AIGC对存量知识的理解与表达已经达到80分的水平&#xff0c;行业从业者…

《扬帆优配》交易拥挤度达历史极值 当前A股TMT板块性价比几何?

上周&#xff0c;A股商场企稳&#xff0c;但盘面风格分歧再度加深&#xff1a;很多资金涌入以ChatGPT、数字经济为代表的TMT板块&#xff0c;而新能源以及前期强势的“中字头”种类都呈现了回调。兴业证券计算显现&#xff0c;3月24日&#xff0c;TMT及电子板块的商场成交金额占…