通过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头欺骗)轻松解决问题,使用最短的代码完美完成任务。

相关文章

  • Python3 读取Word文件方式

    Python3 读取Word文件方式

    今天小编就为大家分享一篇Python3 读取Word文件方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • pandas中read_csv的缺失值处理方式

    pandas中read_csv的缺失值处理方式

    今天小编就为大家分享一篇pandas中read_csv的缺失值处理方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • django配置app中的静态文件步骤

    django配置app中的静态文件步骤

    这篇文章主要介绍了django配置app中的静态文件步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • 用python开发一款操作MySQL的小工具

    用python开发一款操作MySQL的小工具

    一个简单的使用python操作mysql的工具,提供了一些类似sql语法的方法,最终拼接成sql。可以很好地处理一些常见场景,不依赖orm 的同时避免手写大量sql
    2021-05-05
  • python格式化字符串的实战教程(使用占位符、format方法)

    python格式化字符串的实战教程(使用占位符、format方法)

    我们经常会用到%-formatting和str.format()来格式化,下面这篇文章主要给大家介绍了关于python格式化字符串的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • 图解Python中浅拷贝copy()和深拷贝deepcopy()的区别

    图解Python中浅拷贝copy()和深拷贝deepcopy()的区别

    这篇文章主要介绍了Python中浅拷贝copy()和深拷贝deepcopy()的区别,浅拷贝和深拷贝想必大家在学习中遇到很多次,这也是面试中常常被问到的问题,本文就带你详细了解一下
    2023-05-05
  • python实现线性回归的示例代码

    python实现线性回归的示例代码

    线性回归就是通过多次取点,找出符合函数的曲线,那么就可以完成一维线性回归,本文通过实例代码给大家介绍python实现线性回归的相关知识,感兴趣的朋友一起看看吧
    2022-02-02
  • python中metaclass原理与用法详解

    python中metaclass原理与用法详解

    这篇文章主要介绍了python中metaclass原理与用法,结合具体实例形式分析了Python中metaclass的功能、原理及使用metaclass动态创建类相关操作技巧,需要的朋友可以参考下
    2019-06-06
  • python远程连接MySQL数据库

    python远程连接MySQL数据库

    这篇文章主要为大家详细介绍了python远程连接MySQL数据库,拉取数据存至本地文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • numpy中的norm()函数求范数实例

    numpy中的norm()函数求范数实例

    这篇文章主要介绍了numpy中的norm()函数求范数实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02

最新评论