本代码仅供学习交流!

文章目录

  • 前言
  • 一、post失败
  • 二、转向模拟浏览器
    • 2.运行结果
  • 总结

前言

尝试一下程序提交问卷星的可能。本来想的是post提交,小伙伴们有没有发现问卷星的加密难度是螺旋式升天,对于我这种小白来说极为的不友好。

一、post失败

个人感觉最难的是jqparm参数,百度到一位大佬破解成功了,不过现在好像不行了。但是思路还是可以大致了解下的。传送门

二、转向模拟浏览器

本来是用的selenium,代码都即将完工,但是偏偏来了一个智能验证,相信试过的小伙伴都知道了,会跳出来一个智能验证,它能识别出我们使用了selenium,就算你是真人点击也无法通过验证,此刻我的心情就只能草和一种四腿动物来表示。
如下图

最终在网上发现了一个库pyppeteer可以较为舒服的解决问题,大致思路就是让浏览器打开网址,根据网页的源代码来判断并进行填写,由于最后还有一个未知的选时间段的,最后就自己选下并提交,解决战斗。

代码如下:

import asyncio
from pyppeteer import launch
from pyppeteer_stealth import stealth
from fake_useragent import UserAgent
from bs4 import BeautifulSoup
import re
import time
url = "https://www.wjx.top/m/91040160.aspx"  #测试网址name = "问卷星"
number = "11012011966"
QQ = "1111111111"
class_data = "摸鱼专业11-1班"
student_id="111111111"async def run():driver = await launch({# 谷歌浏览器的安装路径'executablePath': r'D:\360\Google\Chrome\Application\chrome.exe',# Pyppeteer 默认使用的是无头浏览器'headless': False,# 设置Windows-size和Viewport大小来实现网页完整显示'args': ['--no-sandbox', '--window-size=1024,768', '--disable-infobars'],'dumpio': True,})# 用 newPage 方法相当于浏览器中新建了一个选项卡,同时新建了一个Page对象page = await driver.newPage()#简称换头await page.setUserAgent(UserAgent().random)await page.setViewport({'width': 1024, 'height': 768})# 反爬虫跳入网页await stealth(page)await page.goto(url)   #问卷星网址page_text = await page.content()  # 获取网页源码'''下面的都是对文本的判断,大佬们直接忽略自己写就行了。'''Soup = BeautifulSoup(page_text, 'lxml')list_judge_email = []  # 位置list_ques = Soup.find_all(text=re.compile("姓名"))list_ques.extend(Soup.find_all(text=re.compile("学号")))list_ques.extend(Soup.find_all(text=re.compile("QQ")))list_ques.extend(Soup.find_all(text=re.compile("qq")))list_ques.extend(Soup.find_all(text=re.compile("号码" or "电话" or "联系方式")))list_ques.extend(Soup.find_all(text=re.compile("班级" or "专业")))list_judge_email.extend(Soup.find_all(verify=re.compile("Email")))print(list_ques)for i in list_ques:if len(i) > 20:        #有某些含有qq字眼但是却不是问题,直接排除continueprint(i + "----------------")if '姓名' in i:da_name = 'q' + i[0]if 'qq' in i or 'QQ' in i:da_qq = 'q' + i[0]if '班级' in i or '专业' in i:da_class = 'q' + i[0]if '学号' in i:da_studentid = 'q' + i[0]if '电话' in i or '手机' in i:da_number = 'q' + i[0]try:await page.type('[name="' + da_name + '"]', name)except:print('找不到姓名')try:await page.type('[name="' + da_number + '"]', number)except:print('找不到手机号码')try:if list_judge_email:  # 不为空要加@qq.comawait page.type('[name="' + da_qq + '"]', QQ + '@qq.com')else:  # 为空正常的qq号await page.type('[name="' + da_qq + '"]', QQ)except:print('找不到QQ')try:await page.type('[name="' + da_class + '"]', class_data)except:print('找不到专业班级')try:await page.type('[name="' + da_studentid + '"]', student_id)except:print('找不到学号')#定义在函数体内运行结束会直接退出浏览器,所以需要延时让我们完成时间段的选择,并提交time.sleep(200)asyncio.get_event_loop().run_until_complete(run())

2.运行结果

总结

又是很愉快的一次尝试呢!很多时候完成一件事情要考虑到它的时间成本以及收益,明显自己不会解js混淆,不过用浏览器也不赖啊。

2021最新版 问卷星模拟浏览器自动填写(快速提交)python相关推荐

  1. js实现问卷星根据答案自动填写2019年11月

    参考链接地址:https://www.cnblogs.com/FHC1994/p/11721723.html (过程需要翻墙,问卷星链接需要在浏览器打开,在微信直接打开的链接本脚本无法使用) ①安装脚 ...

  2. python爬取问卷星内容_Python 自动填写问卷星(适用问卷星的所有类型题目)

    为应付"上面"的需要,公司接了个帮助推广市政公益项目的问卷.整个问卷有单选题.多选题.填空题.日期框.地理位置框.矩阵多选和矩阵单选等几乎涵盖了问卷星所有类型问题的问卷,题目有近7 ...

  3. 关于如何自动填写并提交问卷星

    关于如何自动填写并提交问卷星 今天想要刷问卷,网上找了许多,遇到了两个比较大的问题,一个是不知道如何填写想要的内容(选择题)还有一个是不知道如何破解问卷星的点击验证 https://tp.wjx.to ...

  4. python问卷星模拟提交

    *一.前言 ** 笔者在家闲得无聊,突然想突破一下问卷星的反爬虫机制,顺便刷刷问卷,于是就开始分析了. ** 二.分析过程 ** 1.fiddler抓包 模拟提交首先当然是打开fiddler看看提交了 ...

  5. Python利用Selenium模拟浏览器自动操作

    概述 在进行网站爬取数据的时候,会发现很多网站都进行了反爬虫的处理,如JS加密,Ajax加密,反Debug等方法,通过请求获取数据和页面展示的内容完全不同,这时候就用到Selenium技术,来模拟浏览 ...

  6. python 模拟浏览器播放视频_使用python模拟浏览器实现登陆

    前言你有没有想过,当我们在某个网站上登陆时,网站是如何通过验证的,我们都提交给了网站哪些信息,浏览器都发起了哪些请求? 下图是某个网站的登陆界面,接下来就让我们通过命令行模拟浏览器实现登陆操作,看看一 ...

  7. 2021年新版CDA LEVELⅠ 模拟题(二)

    1 1分 一个BI项目由多个不同步骤构成,不同步骤又对应不同功能的工具,以下不属于BI工具组成部分的是A. ETLB. 可视化工具C. DWD. DB 正确答案:D , 你的答案:未作答 解析: D, ...

  8. python 模拟浏览器selenium 要求快速_Selenium模拟浏览器初识

    Seleniumd介绍 在写Python爬虫的时候,最麻烦的不是那些海量的静态网站,而是那些通过JavaScript获取数据的站点.Python本身对js的支持不好,所以就有良心的开发者来做贡献了,这 ...

  9. 搜狗浏览器下 禁止浏览器自动填写用户名、密码

    搜狗浏览器下,会出现把用户设置记住密码的表单(用户名和密码)乱放在,网站中其他成对出现的用户名及密码框中. 如何解决这种不负责任的可恨问题,网上有很多方案,但最终都未果. 一.先把网上搜到的方案放下: ...

最新文章

  1. java面试精典问答
  2. 并查集(disjoint set)的实现及应用
  3. BibTex (.bib) 文件的凝视
  4. 转://RMAN跨平台可传输表空间和数据库
  5. 小米立 Flag:要做年轻人的第一个深度学习框架
  6. ++++++++++++++++++++++++++++++++++++++++++++1076+++++++++++++++++++++++++++++++++++++++++++++++++++
  7. 静电场里非常有用的公式
  8. android安卓 通知notification
  9. python数组(矩阵)乘法(点乘、叉乘)
  10. Kepware三菱驱动连接轻松开启
  11. 微信对账单 java_微信支付-跨境支付开发者文档
  12. 淘宝省钱_如何省钱和组装自己的电路板
  13. 【转载】Confluence(wiki)配置数据库及修改数据库地址
  14. mysql大翻页limt 1700,100慢优化方案
  15. S参数三要素无源性(Passive),互易性(Reciprocoty)和因果性(Causality)
  16. 微信小程序实战(一)---实现登录界面
  17. JS作用域和自由变量
  18. 学会Squid之传统代理和透明代理一篇就够了!
  19. 用js计算12个月的社保缴纳总额-企业信息公示
  20. basler相机出现buffer不足的解决方案

热门文章

  1. .NET敏捷开发框架-RDIFramework.NET V5.1发布(跨平台)
  2. 二维海浪波数谱的matlab,常见海浪谱
  3. 二维海浪波数谱的matlab,一种海杂波图像下基于最小区间思想的海浪主波周期反演方法...
  4. 在家如何搭建个服务器
  5. 方舟端游刚进入服务器显示er,方舟生存进化:老外地穴建家以为万无一失,结果被主播一锅端...
  6. SQL语句之OR和AND的混合使用
  7. 漏洞扫描软件AWVS的介绍和使用
  8. python浮雕图片_python图片处理PIL
  9. php dhcp,dhcp是什么意思
  10. 剖析两个暴利项目偏门赚钱项目.