通过Python实现自动填写调查问卷


Posted in Python onSeptember 06, 2017

0X00 前言

快开学了,看到空间里面各种求填写调查问卷的,我才想起来貌似我也还没做。对于这种无意义的问卷,我是不怎么感冒的,所以我打算使用”特技”来完成,也就是python,顺便重新复习一下python,真的好久没用了。下面,表演开始……

0X01代码编写思路

首先先创建一份问卷

通过Python实现自动填写调查问卷

我们随便填写一个问卷并提交,在提交之前开启Burpsuite截获数据包

通过Python实现自动填写调查问卷

对于截获的数据包进行分析,有的被url编码了不利于分析,可以使用Burpsuite编码模块解码替换,这样就好分析了

通过Python实现自动填写调查问卷

通过Python实现自动填写调查问卷

通过Python实现自动填写调查问卷

通过观察可以发现,post了一串奇怪的数据submitdata=1$2}2$3}3$3}4$4}5$3}6$2}7$4}8$2}9$3}10$3。仔细分析可看出数据大概是这个意思submitdata=题号$选项号}题号$选项号}题号$选项号}……..

利用这些信息就可以开始编写python程序了

通过Python实现自动填写调查问卷

运行结果如下

通过Python实现自动填写调查问卷

貌似网站还有其他反爬虫机制,在连续提交几个表单之后,就出现了验证码。难道此时我们还要给程序添加上识别验证码的功能?其实不必,我们可以先分析一下刚刚Burpsuite截获的header信息,来看看到底网站是通过什么方式,识别出我们是用爬虫来提交问卷的。

通过Python实现自动填写调查问卷

通过Python实现自动填写调查问卷

通过一番测试,我发现当我连续提交3份问卷,再换一个IP提交3个问卷,也就是连续提交了6份问卷,并没有触发网站的反爬虫机制。所以我们可以猜测对方基于IP提交问卷的频率来识别爬虫程序的。看到这里,大家可能会想,我们可以通过网上的免费代理来提交问卷。例如这些

通过Python实现自动填写调查问卷

那是不是意味着我们还要往python代码中添加提取免费代理IP的功能呢?NO NO NO!换个思路,在CTF比赛中会遇到一种题目,例如你的IP是来自德国的才可以拿到flag。所以,我们的思路就是进行数据包头欺骗,伪造我们的IP,骗过服务器。下面来说说伪造IP的几种方式。

X-Client-IP:1.1.1.1
X-Remote-IP:2.2.2.2
X-Remote-Addr:3.3.3.3
X-Originating-IP:4.4.4.4
X-Forwarded-For:5.5.5.5

我们每个都尝试一下,然后在后台统计那里可以看到我们的问卷来源

通过Python实现自动填写调查问卷

这里我们发现用X-Forwarded-For可以绕过,按我们就用这种方法在header信息中添加X-Forwarded-For字段,所以修改后的脚本如下

通过Python实现自动填写调查问卷

运行结果如下

通过Python实现自动填写调查问卷

再到后台看看统计信息

通过Python实现自动填写调查问卷

通过Python实现自动填写调查问卷

至此,我们算是完美的解决任务了。如果大家想去掉调查问卷中国外的IP地址,可以收集一下中国的IP地址段,然后添加进程序,处理一下即可。

0X02总结

大家平常可以把学到的东西用到实际生活中,遇到困难的时候不要慌,多思考,找到最优的解决方法。例如上面,我并没有在代码中添加验证码识别模块,也没有通过走代理的方式来绕过网站的反爬虫机制,而是通过分析网站的反爬虫机制,并且使用所学的安全知识(HTTP头欺骗)轻松解决问题,使用最短的代码完美完成任务。

Python 相关文章推荐
Python抓取Discuz!用户名脚本代码
Dec 30 Python
python实现mysql的单引号字符串过滤方法
Nov 14 Python
python读取文本中数据并转化为DataFrame的实例
Apr 10 Python
Python实现的多进程和多线程功能示例
May 29 Python
python实现简单的文字识别
Nov 27 Python
用Python将Excel数据导入到SQL Server的例子
Aug 24 Python
python 字典有序并写入json文件过程解析
Sep 30 Python
Pytorch 实现冻结指定卷积层的参数
Jan 06 Python
Python如何访问字符串中的值
Feb 09 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
Apr 08 Python
Django视图、传参和forms验证操作
Jul 15 Python
Python天气语音播报小助手
Sep 25 Python
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
Sep 06 #Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
Sep 05 #Python
Python基于回溯法子集树模板实现图的遍历功能示例
Sep 05 #Python
Python数据结构与算法之图结构(Graph)实例分析
Sep 05 #Python
利用Python将时间或时间间隔转为ISO 8601格式方法示例
Sep 05 #Python
python进程管理工具supervisor的安装与使用教程
Sep 05 #Python
基于Django模板中的数字自增(详解)
Sep 05 #Python
You might like
php 更新数据库中断的解决方法
2009/06/05 PHP
谈PHP生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
多个PHP中文字符串截取函数
2013/11/12 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
2014/06/17 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
JavaScript实现动态增加文件域表单
2009/02/12 Javascript
围观tangram js库
2010/12/28 Javascript
jQuery右键菜单contextMenu使用实例
2011/09/28 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
关于javascript event flow 的一个bug详解
2013/09/17 Javascript
nodejs实现获取当前url地址及url各种参数值
2015/06/25 NodeJs
js编写贪吃蛇的小游戏
2020/08/24 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
javascript超过容器后显示省略号效果的方法(兼容一行或者多行)
2016/07/14 Javascript
jQuery常见的选择器及用法介绍
2016/12/20 Javascript
详解js几个绕不开的事件兼容写法
2017/08/30 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
微信小程序出现wx.navigateTo页面不跳转问题的解决方法
2017/12/26 Javascript
VUE Elemen-ui之穿梭框使用方法详解
2021/01/19 Javascript
[01:00:26]Ti4主赛事胜者组第一天 EG vs NEWBEE 1
2014/07/19 DOTA
python模拟登陆Tom邮箱示例分享
2014/01/13 Python
Python中的列表知识点汇总
2015/04/14 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
2018/04/28 Python
Django项目开发中cookies和session的常用操作分析
2018/07/03 Python
Django实战之用户认证(用户登录与注销)
2018/07/16 Python
Python判断是否json是否包含一个key的方法
2018/12/31 Python
Django用数据库表反向生成models类知识点详解
2020/03/25 Python
通过代码实例解析Pytest运行流程
2020/08/20 Python
美国眼镜网站:EyeBuyDirect
2017/04/13 全球购物
美国在线和移动免费会员制批发零售商:Boxed(移动端的Costco)
2020/01/02 全球购物
简单说说tomcat的配置
2013/05/28 面试题
二年级数学教学反思
2014/01/21 职场文书
2014年教研工作总结
2014/12/06 职场文书
经典哲理警句:志不真则心不热,心不热则功不贤
2019/11/14 职场文书
QT与javascript交互数据的实现
2021/05/26 Javascript