通过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进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
Apr 25 Python
使用Python读写文本文件及编写简单的文本编辑器
Mar 11 Python
python下调用pytesseract识别某网站验证码的实现方法
Jun 06 Python
python itchat实现微信好友头像拼接图的示例代码
Aug 14 Python
详解PANDAS 数据合并与重塑(join/merge篇)
Jul 09 Python
python实现集中式的病毒扫描功能详解
Jul 09 Python
Django打印出在数据库中执行的语句问题
Jul 25 Python
Python爬取爱奇艺电影信息代码实例
Nov 26 Python
PyTorch中Tensor的数据统计示例
Feb 17 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
Feb 28 Python
安装pyinstaller遇到的各种问题(小结)
Nov 20 Python
忆童年!用Python实现愤怒的小鸟游戏
Jun 07 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
Windows下的PHP5.0安装配制详解
2006/09/05 PHP
php 求质素(素数) 的实现代码
2011/04/12 PHP
php获取当前时间的毫秒数的方法
2014/01/26 PHP
PHP不用递归实现无限分级的例子分享
2014/04/18 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
2014/06/26 PHP
mysql查找删除重复数据并只保留一条实例详解
2016/09/24 PHP
微信公众号开发客服接口实例代码
2016/10/21 PHP
PHP面向对象学习之parent::关键字
2017/01/18 PHP
PHP获取当前执行php文件名的代码
2017/03/02 PHP
jquery简单倒计时实现方法
2015/12/18 Javascript
实例讲解避免javascript冲突的方法
2016/01/03 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
2016/05/25 Javascript
angular中的http拦截器Interceptors的实现
2017/02/21 Javascript
Bootstrap Multiselect 常用组件实现代码
2017/07/09 Javascript
jQuery实现对网页节点的增删改查功能示例
2017/09/18 jQuery
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
Vue项目从webpack3.x升级webpack4不完全指南
2019/04/28 Javascript
解决vue组件props传值对象获取不到的问题
2019/06/06 Javascript
layui复选框限制选择个数的方法
2019/09/18 Javascript
微信小程序 下拉刷新及上拉加载原理解析
2019/11/06 Javascript
JavaScript监听触摸事件代码实例
2019/12/30 Javascript
vue学习笔记之给组件绑定原生事件操作示例
2020/02/27 Javascript
Python设计模式编程中解释器模式的简单程序示例分享
2016/03/02 Python
Python算术运算符实例详解
2017/05/31 Python
python简单商城购物车实例代码
2018/03/15 Python
Flask框架中request、请求钩子、上下文用法分析
2019/07/23 Python
pip安装tensorflow的坑的解决
2020/04/19 Python
WSDL的操作类型主要有几种
2013/07/19 面试题
中医专业应届生求职信
2013/11/17 职场文书
触摸春天教学反思
2014/02/03 职场文书
中级会计职业生涯规划书
2014/03/01 职场文书
不听老师话的万能检讨书
2014/10/04 职场文书
2015年党员个人工作总结
2015/05/13 职场文书
关于幸福的感言
2015/08/03 职场文书
生产实习心得体会范文
2016/01/22 职场文书
Python作用域和名称空间的详细介绍
2022/04/13 Python