Python實(shí)現(xiàn)連接dr校園網(wǎng)示例詳解
背景
在校園里認(rèn)證上網(wǎng)很麻煩需要web輸入賬號(hào)密碼有時(shí)還會(huì)忘記web地址此時(shí)就需要一個(gè)人或者程序幫我們實(shí)現(xiàn),這時(shí)我想到用python制作這個(gè)程序(初學(xué)者python代碼不規(guī)范)
分析
需要分析web登錄網(wǎng)址的瀏覽器頭發(fā)現(xiàn)是get方法這就簡單了,再次分析get請(qǐng)求發(fā)現(xiàn)有user_account字段,user_password字段還有ip字段mac字段這時(shí)我們的思路就來了使用curl命令直接把這個(gè)代碼放到終端里運(yùn)行發(fā)現(xiàn)是可以的
curl "http://學(xué)校認(rèn)證服務(wù)器ip:801/eportal/?c=Portal&a=login&callback=dr1004&login_method=1&user_account=你的賬號(hào)&user_password=你的密碼&wlan_user_ip=終端的ip&wlan_user_ipv6=&wlan_user_mac=終端的mac&wlan_ac_ip=&wlan_ac_name=&jsVersion=3.3.3&v=隨機(jī)四位數(shù)/"
返回信息
dr1004({"result":"1","msg":"\u8ba4\u8bc1\u6210\u529f"})
使用unicode在線轉(zhuǎn)中文發(fā)現(xiàn)
dr1004({result: "1", msg: "認(rèn)證成功"})
理論成功
實(shí)現(xiàn)
經(jīng)過分析我們需要以下信息
1.上網(wǎng)賬號(hào)
2.賬號(hào)密碼
3.設(shè)備ip
4.設(shè)備mac
5.4位隨機(jī)數(shù)
獲取ip(wlan連接)
網(wǎng)上方法很多但都獲取不到正確的索性用最笨的方法獲取調(diào)用 ipconfig /all 方法
import random import os import requests from urllib import parse mac_ip_hostname=os.popen("ipconfig /all") macmore=mac_ip_hostname.read()
此時(shí)獲取的是一大堆網(wǎng)絡(luò)信息并不是我們想要的所以要用到find方法找到特殊字段的位置
macw=macmore.find("無線局域網(wǎng)適配器 WLAN")
找到了不代表能用現(xiàn)在需要把這個(gè)字符串進(jìn)行截取從找到的位置到之后的400個(gè)字符的數(shù)據(jù)都截取下來
再賦值給別的函數(shù)
macm = '' i=macw y=macw+400 while i< y: macm += macmore[i] i =i+1
這時(shí)定義一個(gè)函數(shù)來接收400個(gè)字符數(shù)據(jù),現(xiàn)在的問題是我們還是不能直接使用還要進(jìn)行截取我們需要的數(shù)據(jù),我們還需要find找到 物理地址 這個(gè)字段的數(shù)據(jù),如法炮制我們進(jìn)行3次查找就找到了所需要的數(shù)據(jù)(如果是lan 網(wǎng)線的話,方法一樣)
macxw=macm.find("物理地址") #print(macxw) x=macxw y=macxw+50 macxm='' while x<y: macxm +=macm[x] x =x+1 maci=macxm.find("-") m1=maci-2 m2=maci-1 m3=maci+1 m4=maci+2 m5=maci+4 m6=maci+5 m7=maci+7 m8=maci+8 m9=maci+10 m10=maci+11 m11=maci+13 m12=maci+14 mac=(macxm[m1]+macxm[m2]+macxm[m3]+macxm[m4]+macxm[m5]+macxm[m6]+macxm[m7]+macxm[m8]+macxm[m9]+macxm[m10]+macxm[m11]+macxm[m12])
我們獲取到了mac 這時(shí)我們還缺少ip數(shù)據(jù),像ip這種數(shù)據(jù)不是固定字符所以不能用上述一個(gè)方法來取值還需要rindex方法,先用上面的方法進(jìn)行截取數(shù)據(jù)到IP的數(shù)據(jù)時(shí)我們先將字符串里的數(shù)字先遍歷出來找到第一個(gè)數(shù)字的位置,和最后一個(gè)數(shù)字的位置然后我們?cè)谌≈稻屯昝澜鉀Qip地址字符不確定的問題
ipcxw=macm.find("IPv4 地址") o=ipcxw+10 p=ipcxw+70 ipc='' while o<p: ipc +=macm[o] o =o+1 #print(ipc) op=0 ipsd='' is_op='0123456789' isstart = False #定義是否是數(shù)字開始的標(biāo)記變量 for a in ipc: #將數(shù)字循環(huán)遍歷 if a in is_op: #判斷取出來的數(shù)字是否是數(shù)字 if isstart==True: ipsd = ipsd+a else: ipsd = ipsd+a isstart=True ipzh=(ipsd[len(ipsd)-1]) ipks=(ipsd[0]) ipce=ipc.find(ipks) ipcea=ipc.rindex(ipzh) j=ipce l=ipcea+1 ip = '' while j<l: ip +=ipc[j] j =j+1
我們還需要隨機(jī)四位數(shù)
c='' for i in range(4): ch = chr(random.randrange(ord('0'), ord('9') + 1)) c += ch
現(xiàn)在我們要用到requests庫中的get方法來進(jìn)行與服務(wù)器交流
url="http://學(xué)校認(rèn)證服務(wù)器ip:801/eportal/?c=Portal&a=login&callback=dr1004&login_method=1&user_account="+user+"&user_password="+password+"&wlan_user_ip="+ip+"&wlan_user_ipv6=&wlan_user_mac="+mac+"&wlan_ac_ip=&wlan_ac_name=&jsVersion=3.3.3&v="+c+"" (user=你的用戶,password=你的賬戶密碼) qinqiu=requests.get(url)
現(xiàn)在我們需要服務(wù)器給我們返回信息
print(str(qinqiu.content))
到此這篇關(guān)于Python實(shí)現(xiàn)連接dr校園網(wǎng)示例詳解的文章就介紹到這了,更多相關(guān)Python連接校園網(wǎng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python列表list常用內(nèi)建函數(shù)實(shí)例小結(jié)
這篇文章主要介紹了Python列表list常用內(nèi)建函數(shù),結(jié)合實(shí)例形式總結(jié)分析了Python列表list常見內(nèi)建函數(shù)的功能、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-10-10深入淺析python 協(xié)程與go協(xié)程的區(qū)別
這篇文章主要介紹了python 協(xié)程與go協(xié)程的區(qū)別 ,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05python利用paramiko實(shí)現(xiàn)交換機(jī)巡檢的示例
這篇文章主要介紹了python利用paramiko實(shí)現(xiàn)交換機(jī)巡檢,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-09-09Python用requests-html爬取網(wǎng)頁的實(shí)現(xiàn)
本文主要介紹了Python用requests-html爬取網(wǎng)頁的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07tensorflow入門:tfrecord 和tf.data.TFRecordDataset的使用
今天小編就為大家分享一篇tensorflow入門:tfrecord 和tf.data.TFRecordDataset的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01python去重,一個(gè)由dict組成的list的去重示例
今天小編就為大家分享一篇python去重,一個(gè)由dict組成的list的去重示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01pandas數(shù)據(jù)聚合與分組運(yùn)算的實(shí)現(xiàn)
本文主要介紹了pandas數(shù)據(jù)聚合與分組運(yùn)算的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01