Python填写问卷星

2023-11-06

主要使用python实现问卷星的自动填写和提交。
主要使用了https://www.jianshu.com/p/34961ceedcb4的代码,使用了X-Forwarded-For自动修改ip,我测试的时候是可以使用的。
PS:我是在linux下面跑的程序,
要修改的地方:

    def set_data(self):
        """
        这个函数中生成问卷的结果,可根据问卷结果,随机生成答案,答案根据个人需要进行修改
        :return:
        """
        self.data = {
            'submitdata': '1$'+str(random.randint(1,2))+'}2$'+str(random.randint(1,4))+'}3$'+str(random.randint(1,3))+'}4$'+str(random.randint(1,2))+'}5$'+str(random.randint(1,2))+'}6$'+str(random.randint(1,4))+'}7$'+str(random.randint(1,4))+'}8$'+str(random.randint(1,2))+'}9$'+str(random.randint(1,4))+'}10$'+str(random.randint(1,2))+'}11$'+str(random.randint(1,3))+'}12$'+str(random.randint(1,3))+'}13$'+str(random.randint(1,3))+'}14$'+str(random.randint(1,3))+'}15$'+str(random.randint(1,3))+'}16$2|3}17$最好的意见就是没有意见,哈哈哈哈哈哈哈'
        }

PS:里面的submitdata需要修改,我没实现自动填写,大佬们可以搞一下。里面的数据我是通过发送一次正常的请求获得的,然后修改这个数据。用random.randint()生成随机的选项,submitdata前面的数字是题号,后面的数字是选项,例如1&3,1是题号,3的选项。
在这里插入图片描述

if __name__ == '__main__':
    w = WenJuanXing('https://www.wjx.cn/jq/xxxxxx.aspx')
    w.mul_run(100)

PS:里面填写问卷的地址,w.mul_run(100)里面100是指运行一百次,可以根据需要修改。
代码如下:

#-*- encoding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
#!/usr/bin/python3
import requests
import re
import time
import random


class WenJuanXing:
    def __init__(self, url):
        """
        :param url:要填写的问卷的url
        """
        self.wj_url = url
        self.post_url = None
        self.header = None
        self.cookie = None
        self.data = None

    def set_data(self):
        """
        这个函数中生成问卷的结果,可根据问卷结果,随机生成答案,答案根据个人需要进行修改
        :return:
        """
        self.data = {
            'submitdata': '1$'+str(random.randint(1,2))+'}2$'+str(random.randint(1,4))+'}3$'+str(random.randint(1,3))+'}4$'+str(random.randint(1,2))+'}5$'+str(random.randint(1,2))+'}6$'+str(random.randint(1,4))+'}7$'+str(random.randint(1,4))+'}8$'+str(random.randint(1,2))+'}9$'+str(random.randint(1,4))+'}10$'+str(random.randint(1,2))+'}11$'+str(random.randint(1,3))+'}12$'+str(random.randint(1,3))+'}13$'+str(random.randint(1,3))+'}14$'+str(random.randint(1,3))+'}15$'+str(random.randint(1,3))+'}16$2|3}17$最好的意见就是没有意见,哈哈哈哈哈哈哈'
        }

    def set_header(self):
        """
        随机生成ip,设置X-Forwarded-For
        ip需要控制ip段,不然生成的大部分是国外的
        :return:
        """
        ip = '{}.{}.{}.{}'.format(112, random.randint(64, 68), random.randint(0, 255), random.randint(0, 255))
        self.header = {
            'X-Forwarded-For': ip,
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko\
                        ) Chrome/71.0.3578.98 Safari/537.36',
        }

    def get_ktimes(self):
        """
        随机生成一个ktimes,ktimes是构造post_url需要的参数,为一个整数
        :return:
        """
        return random.randint(15, 50)

    def get_response(self):
        """
        访问问卷网页,获取网页代码
        :return: get请求返回的response
        """
        response = requests.get(url=self.wj_url, headers=self.header)
        self.cookie = response.cookies
        return response

    def get_jqnonce(self, response):
        """
        通过正则表达式找出jqnonce,jqnonce是构造post_url需要的参数
        :param response: 访问问卷网页,返回的reaponse
        :return: 找到的jqnonce
        """
        jqnonce = re.search(r'.{8}-.{4}-.{4}-.{4}-.{12}', response.text)
        return jqnonce.group()

    def get_rn(self, response):
        """
        通过正则表达式找出rn,rn是构造post_url需要的参数
        :param response: 访问问卷网页,返回的reaponse
        :return: 找到的rn
        """
        rn = re.search(r'\d{9,10}\.\d{8}', response.text)
        return rn.group()

    def get_id(self, response):
        """
        通过正则表达式找出问卷id,问卷是构造post_url需要的参数
        :param response: 访问问卷网页,返回的reaponse
        :return: 找到的问卷id
        """
        id = re.search(r'\d{8}', response.text)
        return id.group()

    def get_jqsign(self, ktimes, jqnonce):
        """
        通过ktimes和jqnonce计算jqsign,jqsign是构造post_url需要的参数
        :param ktimes: ktimes
        :param jqnonce: jqnonce
        :return: 生成的jqsign
        """
        result = []
        b = ktimes % 10
        if b == 0:
            b = 1
        for char in list(jqnonce):
            f = ord(char) ^ b
            result.append(chr(f))
        return ''.join(result)

    def get_start_time(self, response):
        """
        通过正则表达式找出问卷starttime,问卷是构造post_url需要的参数
        :param response: 访问问卷网页,返回的reaponse
        :return: 找到的starttime
        """
        start_time = re.search(r'\d+?/\d+?/\d+?\s\d+?:\d{2}', response.text)
        return start_time.group()

    def set_post_url(self):
        """
        生成post_url
        :return:
        """
        self.set_header()  # 设置请求头,更换ip
        response = self.get_response()  # 访问问卷网页,获取response
        ktimes = self.get_ktimes()  # 获取ktimes
        jqnonce = self.get_jqnonce(response)  # 获取jqnonce
        rn = self.get_rn(response)  # 获取rn
        id = self.get_id(response)  # 获取问卷id
        jqsign = self.get_jqsign(ktimes, jqnonce)  # 生成jqsign
        start_time = self.get_start_time(response)  # 获取starttime
        time_stamp = '{}{}'.format(int(time.time()), random.randint(100, 200))  # 生成一个时间戳,最后三位为随机数
        url = '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)
        self.post_url = url  # 设置url
        print(self.post_url)

    def post_data(self):
        """
        发送数据给服务器
        :return: 服务器返回的结果
        """
        self.set_data()
        response = requests.post(url=self.post_url, data=self.data, headers=self.header, cookies=self.cookie)
        return response

    def run(self):
        """
        填写一次问卷
        :return:
        """
        self.set_post_url()
        result = self.post_data()
        print(result.content.decode())

    def mul_run(self, n):
        """
        填写多次问卷
        :return:
        """
        for i in range(n):
            time.sleep(0.1)
            self.run()


if __name__ == '__main__':
    w = WenJuanXing('https://www.wjx.cn/jq/xxxxxx.aspx')
    w.mul_run(100)

PS:如果不是linux下跑的程序的话#!/usr/bin/python3应该可以不要。
运行结果如下:在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python填写问卷星 的相关文章

  • Windows 中的 Python 多处理池奇怪行为

    Python 多处理池在 Linux 和 Windows 之间有不同的行为 当按工作人员数量运行方法映射时 在 Linux 中 它会在您作为参数提供的特定函数的范围内运行该进程 但在 Windows 中 每个工作进程都在父进程的范围内运行
  • 从 asyncio 子进程获取实时输出

    我正在尝试使用 Python asyncio 子进程来启动交互式 SSH 会话并自动输入密码 实际用例并不重要 但它有助于说明我的问题 这是我的代码 proc await asyncio create subprocess exec ssh
  • Pandas ParserError:标记数据时出错。 C 错误:字符串内有 EOF

    我的数据超过 400 000 行 运行此代码时 f pd read csv filename error bad lines False 我收到以下错误 pandas errors ParserError Error tokenizing
  • Django 营业时间

    我想添加诊所的营业时间 我已经对此进行了调查在 Django 中实现 开放时间 的任何现有解决方案 https stackoverflow com questions 8128143 any existing solution to imp
  • 如何使用 tkinter 使用网格功能显示不同的图像?

    我想使用显示文件夹中的图像grid 但是当我尝试使用以下代码时 我得到了迭代单个图像的输出 My code def messageWindow win Toplevel path C Users HP Desktop dataset for
  • 在Python中,如何通过去掉括号和大括号来打印Json

    我想以一种很好的方式打印 Json 我想去掉方括号 引号和大括号 只使用缩进和行尾来显示 json 的结构 例如 如果我有一个像这样的 Json A A1 1 A2 2 B B1 B11 B111 1 B112 2 B12 B121 1
  • Python SQLite3 SQL注入漏洞代码

    我知道下面的代码片段由于 format 的原因很容易受到 SQL 注入的攻击 但我不知道为什么 有谁明白为什么这段代码容易受到攻击以及我从哪里开始修复它 我知道这些代码片段使输入字段保持打开状态 以便通过 SQL 注入执行其他恶意命令 但不
  • 关于具有自定义损失的 3 输出 ANN 的加权

    我正在尝试定义一个自定义损失函数 它在回归模型中接收 3 个输出变量 def custom loss y true y pred y true c K cast y true float32 Shape batch size 3 y pre
  • Python正则表达式替换引号中的文本(引号本身除外)

    例如 我有一个测试字符串 content I opened my mouth Good morning I said cheerfully 我想使用正则表达式删除双语音标记之间的文本 但不删除语音标记本身 所以它会返回 I opened m
  • 如何停止 PythonShell

    如何终止 停止 Node js 中 PythonShell 执行的 Python 脚本的执行 我在交互模式下运行 输出通过 socket io 发送到给定的房间 如果没有更多的客户端连接到这个房间 我想停止 python 脚本的执行 这是我
  • python 硒 按名称查找元素

    查找电子邮件输入的正确代码是什么https accounts google com ServiceLogin html 是
  • python os.fork 使用相同的 python 解释器吗?

    据我所知 Python 中的线程使用相同的 Python 解释器实例 我的问题是与创建的流程相同os fork 或者每个进程创建的os fork有自己的翻译吗 每当你 fork 时 整个 Python 进程都会在内存中复制 包括Python
  • 使用最新值进行采样

    考虑以下系列 created at 2014 01 27 21 50 05 040961 80000 00 2014 03 12 18 46 45 517968 79900 00 2014 09 05 20 54 17 991260 636
  • 如何在 tkinter 后台运行函数[重复]

    这个问题在这里已经有答案了 我是 GUI 编程新手 我想用 tkinter 编写一个 Python 程序 我想要它做的就是在后台运行一个可以通过 GUI 影响的简单函数 该函数从 0 计数到无穷大 直到按下按钮为止 至少这是我想要它做的 但
  • 在 Keras 中使用有状态 LSTM 训练多变量多级数回归问题

    我有时间序列P过程 每个过程的长度各不相同 但都有 5 个变量 维度 我试图预测测试过程的估计寿命 我正在用有状态的方法来解决这个问题LSTM在喀拉斯 但我不确定我的训练过程是否正确 我将每个序列分成长度的批次30 所以每个序列都是这样的形
  • numpy 向量化而不是 for 循环

    我用 Python 写了一些代码 运行良好 但速度很慢 我认为是由于 for 循环 我希望可以使用 numpy 命令加速以下操作 让我定义目标 假设我有一个 2D numpy 数组all CMs尺寸row x col 例如考虑一个6x11数
  • PySpark DataFrame 上分组数据的 Pandas 式转换

    如果我们有一个由一列类别和一列值组成的 Pandas 数据框 我们可以通过执行以下操作来删除每个类别中的平均值 df DemeanedValues df groupby Category Values transform lambda g
  • 从函数在 python 3 中创建全局变量

    我想知道为什么在函数结束后我无法访问变量 variable for raw data 代码是这样的 def htmlfrom Website URL import urllib request response urllib request
  • python 中“重载”函数的最佳方法? [复制]

    这个问题在这里已经有答案了 我正在尝试在 python 中做这样的事情 def foo x y do something at position x y def foo pos foo pos x pos y 所以我想根据我提供的参数数量调
  • Python 中的可逆 STFT 和 ISTFT

    有没有通用的形式短时傅立叶变换 https en wikipedia org wiki Short time Fourier transform与内置于 SciPy 或 NumPy 或其他什么中的相应逆变换 这是pyplotspecgram

随机推荐

  • mysql提示表不存在的解决方法error: 1146: Table doesn't exist

    如果表真的不存在就新建对应表 如果存在 则 1 这种情况一般只要重启下数据库就能解决 2 或者把原来mysql安装目录data里的 ibdata1 文件也拷贝过去 不确定是否会影响MySQL里的原有数据库 请先备份ibdata1文件
  • HTML5是什么与什么合作推出的语言,H5和Html5是一回事吗?-- -H5和Html5问答

    经常有人问何为H5 或发个网页问是不是H5 真让回答 一两句也讲不清楚 所以先聊聊我理解的H5广告究竟如何定义 H5广告是什么 广告在生活中可是不新鲜了 不管你乐不乐意 带这个符号的传播物每天都在消耗着你的时间 你的精力 甚至还有你的情感
  • 内存数据库解析与主流产品对比(三)

    作者 实验室小陈 大数据开放实验室 在上一篇文章 内存数据库解析与主流产品对比 二 中 我们从数据组织和索引的角度介绍了内存数据库的特点和几款产品的技术实现 本文将继续解析内存数据库 从并发控制 持久化和查询处理的角度介绍几款技术 带来更多
  • Unity提高工作效率的终极指南

    本套课程指南通过关于如何更快 更智能地工作的最新技术 帮助Unity创作者节省时间并提高工作效率 你会学到 Unity的创建者节省了时间 提高了生产力 关于如何更快地使用程序员和艺术家工具集的技巧 无论是个人还是团队 Unity应该是一种快
  • 什么是布隆过滤器?如何使用?

    欢迎搜索 文章目录 一 布隆过滤器简介 二 布隆过滤器的结构 三 布隆过滤器应用 四 布隆过滤器的优缺点 五 布隆过滤器实战 六 总结 Redis缓存穿透可以通过布隆过滤器进行解决 那么什么是布隆过滤器呢 请往下看 通常你判断某个元素是否存
  • 在Unity中编写Shader的编译器环境配置(支持CG和HLSL)

    Unity默认使用的编译器VisualStudio带有扩展插件ShaderLabVS 但功能很差 所以还是选用VisualStudioCode作为编写Shader的编译器 一方面其能自动识别Shaderlab语法 并且还有丰富的Shader
  • vue脚手架中创建自定义指令

    局部自定义指令直接在组件内部创建
  • 使用tee命令 将bash -x 输出的内容保存到文件中

    tee 命令语法 tee ai help version 文件 参数 a或 append 附加到既有文件的后面 而非覆盖它 i或 ignore interrupts 忽略中断信号 help 在线帮助 version 显示版本信息 示例 ba
  • java -jar 启动脚本

    ccue sh 需 chomd x ccue sh 启动使用 ccue sh start bin sh ccue sh start 启动 stop 停止 restart 重启 status 状态 AppName ccue server ja
  • 【一分钟解决】Python报错ImportError: attempted relative import with no known parent package

    文章目录 报错关键词 常见问题汇总及排查 1 在脚本中使用相对导入 详细解决方案 1 看这段基本够了 使用相对导入的时机 2 扩展 如果你真的需要在包平级目录以外的位置调用包 参考链接 扩展 名词解释 脚本 script 模块 module
  • 【Python 3.7】分子运动:修改 rw_visual.py,将其中的 plt.scatter() 替换为 plt.plot() 。为 模拟花粉在水滴表面的运动路径

    Python 3 7 分子运动 修改 rw visual py 将其中的 plt scatter 替换为 plt plot 为 模拟花粉在水滴表面的运动路径 向 plt plot 传递 rw x values 和 rw y values 并
  • 前端canvas绘制水波球

    效果如下图 代码
  • 创建软链接(symbolic link)

    Linux ln命令是一个非常重要命令 它的功能是为某一个文件在另外一个位置建立一个同步的链接 类似windows下的快捷方式 Linux文件系统中 有所谓的链接 link 我们可以将其视为档案的别名 而链接又可分为两种 硬链接 hard
  • 计算机视觉学习总结:基本的图像操作和处理(一)

    PIL Python图像处理类库 PIL Python Imaging Library Python 图像处理类库 提供了通用的图像处理功能 以及大量有用的基本图像操作 比如图像缩放 裁剪 旋转 颜色转换等 基本操作 1 读取图片及灰度转换
  • acwing模板整理(第一讲)(基础算法)

    目录 一 归并排序模板 二 二分 需要满足单调性 整数二分和小数二分 三 高精度加减乘除 2 减法 3 乘法 4 除法 四 1 一维前缀和与差分数组 2 子矩阵的前缀和与差分矩阵 二维前缀和与二维差分矩阵 五 双指针算法 找单调性优化 双指
  • 测试——Web网站测试主要测试那些内容

    一般的网站的主要测试内容就分为以下几点 目录 功能测试 性能测试 安全测试 稳定测试 兼容性测试 压力测试 功能测试 功能测试常用到的有效方法 等价划分法 等价划分法就是把输入空间划分为几个 等价区间 在每个等价区间中只需要测试一个典型的数
  • 六、代理模式

    六 动态代理模式 1 模式结构和结构图 1 抽象主题 Subject 类 通过接口或抽象类声明真实主题和代理对象实现的业务方法 1 2 真实主题 Real Subject 类 实现了抽象主题中的具体业务 是代理对象所代表的真实对象 是最终要
  • Linux Power Supply架构及代码解析

    一 概述 电源管理整体上可以分为两个部分 一个是电池监控 fuel gauge 另外一个是充放电管理 这两部分在内核中也是分为两个驱动来管理 fuelgauge驱动的功能主要是负责向上层Android系统提供当前电池的电量和健康信息等等 同
  • redis学习总结

    文章目录 redis数据结构原理 简单字符串SDS 叫Simple dynamic string 链表 字典 跳跃表 redis持久化 RDB持久化 AOF持久化 redis集群三种模式 主从模式 实现主从分离 提高吞吐 多机备份 哨兵模式
  • Python填写问卷星

    主要使用python实现问卷星的自动填写和提交 主要使用了https www jianshu com p 34961ceedcb4的代码 使用了X Forwarded For自动修改ip 我测试的时候是可以使用的 PS 我是在linux下面