通过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中dictionary items()系列函数的用法实例
Aug 21 Python
在GitHub Pages上使用Pelican搭建博客的教程
Apr 25 Python
pyhton列表转换为数组的实例
Apr 04 Python
对python csv模块配置分隔符和引用符详解
Dec 12 Python
python广度优先搜索得到两点间最短路径
Jan 17 Python
Python小白必备的8个最常用的内置函数(推荐)
Apr 03 Python
python实现电子词典
Mar 03 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
Jun 03 Python
浅谈keras.callbacks设置模型保存策略
Jun 18 Python
python获得命令行输入的参数的两种方式
Nov 02 Python
scrapy处理python爬虫调度详解
Nov 23 Python
python-for x in range的用法(注意要点、细节)
May 10 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
thinkphp实现多语言功能(语言包)
2014/03/04 PHP
Redis构建分布式锁
2017/03/28 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
2019/05/13 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
获取页面高度,窗口高度,滚动条高度等参数值getPageSize,getPageScroll
2006/09/22 Javascript
jquery中this的使用说明
2010/09/06 Javascript
可以用鼠标拖动的DIV实现思路及代码
2013/10/21 Javascript
js控制页面的全屏展示和退出全屏显示的方法
2015/03/10 Javascript
Javascript实现的Map集合工具类完整实例
2015/07/31 Javascript
JavaScript电子时钟倒计时
2016/01/09 Javascript
JavaScript中Require调用js的实例分享
2017/10/27 Javascript
详解为Bootstrap Modal添加拖拽的方法
2018/01/05 Javascript
node.js监听文件变化的实现方法
2019/04/17 Javascript
Vue.js仿Select下拉框效果
2020/02/18 Javascript
微信小程序上传帖子的实例代码(含有文字图片的微信验证)
2020/07/11 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
深入解答关于Python的11道基本面试题
2017/04/01 Python
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
2018/05/05 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
Tensorflow实现神经网络拟合线性回归
2019/07/19 Python
python区分不同数据类型的方法
2019/10/14 Python
解决pandas展示数据输出时列名不能对齐的问题
2019/11/18 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
2020/04/08 Python
如何基于线程池提升request模块效率
2020/04/18 Python
python 实现aes256加密
2020/11/27 Python
法国一家多品牌成衣精品中/高档商店:Graduate Store
2019/08/28 全球购物
中学教师实习自我鉴定
2013/09/28 职场文书
实用求职信范文分享
2013/12/25 职场文书
四风问题对照检查材料
2014/09/22 职场文书
年度考核表个人总结
2015/03/06 职场文书
CSS预处理框架——Stylus
2021/04/21 HTML / CSS
Python学习开发之图形用户界面详解
2021/08/23 Python