通过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 判断自定义对象类型
Mar 21 Python
使用graphics.py实现2048小游戏
Mar 10 Python
Python版微信红包分配算法
May 04 Python
Python之Web框架Django项目搭建全过程
May 02 Python
Python获取本机所有网卡ip,掩码和广播地址实例代码
Jan 22 Python
Python常见的pandas用法demo示例
Mar 16 Python
Python3.5基础之NumPy模块的使用图文与实例详解
Apr 24 Python
Python3常用内置方法代码实例
Nov 18 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
Mar 30 Python
Python pexpect模块及shell脚本except原理解析
Aug 03 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
Dec 08 Python
微信小程序调用python模型
Apr 21 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
解析phpstorm + xdebug 远程断点调试
2013/06/20 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
2014/10/30 PHP
php数组合并与拆分实例分析
2015/06/12 PHP
Laravel与CI框架中截取字符串函数
2016/05/08 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
2018/10/16 PHP
Thinkphp集成抖音SDK的实现方法
2020/04/28 PHP
Javascript学习笔记9 prototype封装继承
2010/01/11 Javascript
基于Turn.js 实现翻书效果实例解析
2016/06/20 Javascript
jQuery事件委托之Safari
2016/07/05 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
js中document.referrer实现移动端返回上一页
2017/02/22 Javascript
详解JavaScript调用栈、尾递归和手动优化
2017/06/03 Javascript
实现两个文本框同时输入的实例
2017/09/25 Javascript
element-ui表格数据转换的示例代码
2018/08/24 Javascript
AngularJS $http post 传递参数数据的方法
2018/10/09 Javascript
PyCharm使用教程之搭建Python开发环境
2016/06/07 Python
Python中列表元素转为数字的方法分析
2016/06/14 Python
python3个性签名设计实现代码
2018/06/19 Python
python3编写ThinkPHP命令执行Getshell的方法
2019/02/26 Python
解决python3插入mysql时内容带有引号的问题
2020/03/02 Python
分布式全文检索引擎ElasticSearch原理及使用实例
2020/11/14 Python
python中slice参数过长的处理方法及实例
2020/12/15 Python
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
马来西亚网上美容店:Hermo.my
2017/11/25 全球购物
施华洛世奇西班牙官网:SWAROVSKI西班牙
2019/06/06 全球购物
什么是ARP(Address Resolution Protocol)地址解析协议
2013/10/31 面试题
教你打造完美的创业计划书
2014/01/06 职场文书
个人银行贷款担保书
2014/04/01 职场文书
公司授权委托书范本
2014/04/03 职场文书
《小鹰学飞》教学反思
2014/04/23 职场文书
信用社竞聘演讲稿
2014/05/16 职场文书
作风大整顿心得体会
2014/09/10 职场文书
怎样写辞职信
2015/02/27 职场文书
2015年依法治校工作总结
2015/07/27 职场文书
2016应届毕业生实习心得体会
2015/10/09 职场文书
SpringBoot连接MySQL获取数据写后端接口的操作方法
2021/11/02 MySQL