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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过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头欺骗)轻松解决问题,使用最短的代码完美完成任务。

PS:如果有什么更好的欺骗方法,欢迎交流,也欢迎来访问我的个人blog:https://mochazz.github.io

以上是关于通过Python实现自动填写调查问卷的主要内容,如果未能解决你的问题,请参考以下文章

python实现问卷星自动填写(可以跳过智能验证)

还在为写调查问卷发愁的你赶快来看看这个自动填写问卷(问卷星版)

用selenium自动填写调查问卷

python selenium自动化填写问卷星

详细设计说明书

需求规格说明书