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

 更新时间:2017年09月06日 09:17:32   投稿:mrr  
这篇文章主要介绍了通过Python实现自动填写调查问卷的相关资料,需要的朋友可以参考下

0X00 前言

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

0X01代码编写思路

首先先创建一份问卷

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

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

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

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

运行结果如下

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

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

那是不是意味着我们还要往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

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

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

运行结果如下

再到后台看看统计信息

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

0X02总结

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

相关文章

  • Python绘制地图神器folium的新人入门指南

    Python绘制地图神器folium的新人入门指南

    folium库是一个用于完成地图可视化的Python扩展库,下面这篇文章主要给大家介绍了关于Python绘制地图神器folium入门的相关资料,需要的朋友可以参考下
    2021-05-05
  • Python内建模块collections实现特殊容器数据类型

    Python内建模块collections实现特殊容器数据类型

    collections模块是Python的内建模块之一,它实现了特殊的容器数据类型,提供了Python内建的数据类型dict、list、set、和tuple的高效替代选择
    2023-06-06
  • 深入理解Python虚拟机之进程、线程和协程区别详解

    深入理解Python虚拟机之进程、线程和协程区别详解

    在本篇文章当中深入分析在 Python 当中 进程、线程和协程的区别,这三个概念会让人非常迷惑,如果没有深入了解这三者的实现原理,只是看一些文字说明,也很难理解,在本篇文章当中我们将通过分析部分源代码来详细分析一下这三者根本的区别是什么,需要的朋友可以参考下
    2023-10-10
  • miniconda3介绍、安装以及使用教程

    miniconda3介绍、安装以及使用教程

    Miniconda是一款小巧的python环境管理工具,安装包大约只有50M多点,其安装程序中包含conda软件包管理器和Python,下面这篇文章主要给大家介绍了关于miniconda3介绍、安装以及使用的相关资料,需要的朋友可以参考下
    2023-02-02
  • PyQt5+QtChart实现柱状图的绘制

    PyQt5+QtChart实现柱状图的绘制

    QChart是一个QGraphicScene中可以显示的QGraphicsWidget。本文将利用QtChart实现柱状图的绘制,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-12-12
  • pandas抽取行列数据的几种方法

    pandas抽取行列数据的几种方法

    这篇文章主要介绍了pandas抽取行列数据的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • python与idea的集成的实现

    python与idea的集成的实现

    这篇文章主要介绍了 python与idea的集成的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • python利用matplotlib库绘制饼图的方法示例

    python利用matplotlib库绘制饼图的方法示例

    Python强大的原因之一就在于其开源,有很多优秀的程序员为其提供了丰富的类库。Matplotlib就是其中之一,下面这篇文章主要介绍了python如何利用matplotlib库绘制饼图的方法示例,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-12-12
  • Python读取图片属性信息的实现方法

    Python读取图片属性信息的实现方法

    这篇文章介绍了利用Python读取图片属性信息的方法,读取的内容包括GPS 信息、图片分辨率、图片像素、设备商、拍摄设备等,有需要的朋友们可以参考借鉴。
    2016-09-09
  • mac彻底卸载Anaconda简单步骤

    mac彻底卸载Anaconda简单步骤

    这篇文章主要给大家介绍了关于mac彻底卸载Anaconda的相关资料,Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项,需要的朋友可以参考下
    2023-10-10

最新评论