通过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实现带错误处理功能的远程文件读取方法
Apr 29 Python
python在控制台输出进度条的方法
Jun 20 Python
Python使用functools模块中的partial函数生成偏函数
Jul 02 Python
python 类详解及简单实例
Mar 24 Python
Python编写一个闹钟功能
Jul 11 Python
python3获取两个日期之间所有日期,以及比较大小的实例
Apr 08 Python
Python3导入CSV文件的实例(跟Python2有些许的不同)
Jun 22 Python
python实现二级登陆菜单及安装过程
Jun 21 Python
pyftplib中文乱码问题解决方案
Jan 11 Python
Python中pyecharts安装及安装失败的解决方法
Feb 18 Python
pyinstaller打包成无控制台程序时运行出错(与popen冲突的解决方法)
Apr 15 Python
用sleep间隔进行python反爬虫的实例讲解
Nov 30 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边学边教》(04.编写简易的通讯录――视频教程1)
2006/12/13 PHP
php header Content-Type类型小结
2011/07/03 PHP
PHP版 汉字转码的实现详解
2013/06/09 PHP
PHP+Mysql+jQuery查询和列表框选择操作实例讲解
2015/10/22 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
2016/06/15 PHP
使用PHP开发留言板功能
2019/11/19 PHP
JSON扫盲帖 JSON.as类教程
2009/02/16 Javascript
解决jquery submit()提交表单提示:f[s] is not a function
2013/01/23 Javascript
js校验表单后提交表单的三种方法总结
2014/02/28 Javascript
js触发onchange事件的方法说明
2014/03/08 Javascript
jquery+css3实现网页背景花瓣随机飘落特效
2015/08/17 Javascript
JS中parseInt()和map()用法分析
2016/12/16 Javascript
jQuery基于Ajax方式提交表单功能示例
2017/02/10 Javascript
详解nodejs微信公众号开发——3.封装消息响应模块
2017/04/10 NodeJs
微信小程序图片选择、上传到服务器、预览(PHP)实现实例
2017/05/11 Javascript
快速搭建vue2.0+boostrap项目的方法
2018/04/09 Javascript
angular实现input输入监听的示例
2018/08/31 Javascript
Javascript迭代、递推、穷举、递归常用算法实例讲解
2019/02/01 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
JQuery使用属性addClass、removeClass和toggleClass实现增加和删除类操作示例
2019/11/18 jQuery
vue.js this.$router.push获取不到params参数问题
2020/03/03 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
2020/06/04 Javascript
python中的yield使用方法
2014/02/11 Python
Python THREADING模块中的JOIN()方法深入理解
2015/02/18 Python
简单介绍Python中的len()函数的使用
2015/04/07 Python
在Python中使用判断语句和循环的教程
2015/04/25 Python
python判断windows系统是32位还是64位的方法
2015/05/11 Python
使用keras实现BiLSTM+CNN+CRF文字标记NER
2020/06/29 Python
初探CSS3中的calc()功能
2015/07/14 HTML / CSS
基于html5 canvas实现漫天飞雪效果实例
2014/09/10 HTML / CSS
Linux中如何用命令创建目录
2015/01/12 面试题
小学生班会演讲稿
2014/01/09 职场文书
出租房屋协议书
2014/09/14 职场文书
小班下学期个人总结
2015/02/12 职场文书
小学生反邪教心得体会
2016/01/15 职场文书
Linux中各个目录的作用与内容
2022/06/28 Servers