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

来源:网络整理日期:2018/01/11 22:39 浏览:

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

0X01代码编写思路

首先先创建一份问卷

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

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

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

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

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

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

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

通过观察可以发现,post了一串奇怪的数据submitdata=13}34}52}72}93。仔细分析可看出数据大概是这个意思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-Forwarded-For可以绕过,按我们就用这种方法在header信息中添加X-Forwarded-For字段,所以修改后的脚本如下

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

运行结果如下

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

再到后台看看统计信息

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

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

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

0X02总结

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

服务热线