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 re

urllib3.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',
    &#
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值