前言:

又到了一年一度的升学季,在空间看到同学讨论交学费的事情,于是我进入支付宝的学校订阅号,查询的界面非常的简洁,只需要输入学号即可。于是我想输入别人的学号是不是能查别人的信息呢?我是如何获取整个学校的学生信息的-秋名山の纸飞机

果然发现有点东西我是如何获取整个学校的学生信息的-秋名山の纸飞机

观察网站:

于是复制了页面的超链接地址,在电脑上打开,发现这个页面没有对打开的渠道做限制(比如说只能在支付宝内打开),抓包发现提交学号时数据如下

我是如何获取整个学校的学生信息的-秋名山の纸飞机

tipesShow不知道是什么,默认是1,schNo是学校代码,杭电的代码是10336,stuNo是学号,只要递增学号 然后post这个地址 就可以获得全校的信息了

具体思路:

制作学号规则==》信息查询(爬取)==》存入mysql

Coding:

我是如何获取整个学校的学生信息的-秋名山の纸飞机

根据post返回的信息可以得知,数据的位置,我们用正则表达式来提取字符串,存入我数据库,数据库的字段设计如下

我是如何获取整个学校的学生信息的-秋名山の纸飞机

下面是我完整的代码,用的是python2.7语法

我是如何获取整个学校的学生信息的-秋名山の纸飞机

代码很简单 导入一个python数据库的包MySQLdb,再利用urlib2包爬取数据,由于对方的服务器没有任何一点点的反爬措施,所以整个过程非常的顺利,不用设置延时,访问很快

程序执行结束:

部分截图:有图有真相
学号规则很好找的,我从教务处的补考名单上大概估算出16级学生的学号是从16010xxx开始到16272xxx结束。

我是如何获取整个学校的学生信息的-秋名山の纸飞机

 运行效果:

我是如何获取整个学校的学生信息的-秋名山の纸飞机

遇到的一些问题:

1.由于python2对于utf8的编码不是很友好,出现了很多乱码的情况,需要将数据库字符集,表的字符集等等都统一成UTF-8

2.虽然对方服务器没有反扒措施,但是一个个递增学号访问还是有点慢,解决方法是可以多线程运行程序

总结:

  • 程序员偷懒,验证码不设定,简单的说,是没有安全概念
    往深的说,是对学生信息的不负责。想要解决有很多方法,比如user-agint,IP访问频率的设定,图形验证码,短信验证码等等。

说些别的:

去年也就是2017年交学费的时候,学校还有一种缴费渠道是交通银行app里面点击生活,点击生活缴费,也只需要输入学号,里面的信息更加可怕,不仅有姓名还有你的身份证号,幸运的是今年这个缴费渠道关闭了,但是我试着输入别的学校的学生学号,发现这个安全隐患还是存在的。我是如何获取整个学校的学生信息的-秋名山の纸飞机

我是如何获取整个学校的学生信息的-秋名山の纸飞机

如果有了身份证号能做什么?大多人的数字杭电帐号密码还是默认的,Hdu1+身份证后6位,我可以知道这个人平时的消费金额地点,手机号码,家长联系方式,考试成绩,家庭地址,寝室地址,个人课表等等等等.....

我是如何获取整个学校的学生信息的-秋名山の纸飞机 我是如何获取整个学校的学生信息的-秋名山の纸飞机

诈骗思路:

不教坏大家了,希望大家小心防范,提高安全意识。已经将这个问题反馈给网站作者。

我是如何获取整个学校的学生信息的-秋名山の纸飞机

我已将全校同学信息保存,以后没钱了赚一波黑钱岂不是美滋滋,大家准备好接诈骗电话吧我是如何获取整个学校的学生信息的-秋名山の纸飞机