1. 如何用Python優(yōu)雅的登錄校園網(wǎng)?

        共 2657字,需瀏覽 6分鐘

         ·

        2020-09-28 22:48


        今天這篇文章的思路來(lái)源于校園網(wǎng),很多的校園網(wǎng)在每次連接時(shí)都需要進(jìn)入一個(gè)網(wǎng)址進(jìn)行登錄,這個(gè)步驟真的是非常非常的麻煩(大學(xué)生都懂~)。所以這次來(lái)教大家如何實(shí)現(xiàn)一鍵登錄校園網(wǎng)。

        一鍵登錄校園網(wǎng)

        首先我們來(lái)看下整個(gè)的流程。首先需要進(jìn)行網(wǎng)絡(luò)連接,連接之后會(huì)跳轉(zhuǎn)到一個(gè)網(wǎng)址,也就是校園網(wǎng)登錄的網(wǎng)址。

        然后輸入賬號(hào)密碼登錄。

        我們需要做到的效果就是點(diǎn)擊一個(gè)可執(zhí)行文件然后實(shí)現(xiàn)校園網(wǎng)的自動(dòng)登錄。(這里的可執(zhí)行文件在mac中為excu文件、win中為exe)

        我們首先解決如何通過(guò)Python進(jìn)行登錄,然后再解決打包的問(wèn)題。

        其實(shí)對(duì)于Python的登錄,會(huì)爬蟲(chóng)的朋友應(yīng)該很快就知道直接通過(guò)requests進(jìn)行表單提交即可。

        首先,我們抓包獲取校園網(wǎng)登錄提交表單的地址:

        同時(shí),我們也拿到需要提交的表單格式,有些學(xué)校的校園網(wǎng)可能需要通過(guò)驗(yàn)證碼驗(yàn)證,一般不會(huì)有很復(fù)雜的驗(yàn)證方式,如果需要驗(yàn)證,那么需要去破解一下驗(yàn)證碼,https://github.com/hellokuls/cnnyzm。這里給出我之前寫(xiě)的驗(yàn)證碼破解案例。

        拿到了之后就好辦了,直接post模擬提交就行了,這里我給出我所寫(xiě)的代碼,基本的邏輯都是差不多,大家只需要改成自己學(xué)校的相關(guān)信息就可以了。

        #?encoding:?utf-8
        import?requests

        #?檢查是否連接入校園網(wǎng)
        def?checkinternet():
        ????url?=?'xxxxxxxxxxxxxxxxxxxxxx'??#校園網(wǎng)登錄的地址,用來(lái)測(cè)試是否連接校園網(wǎng)?
        ????try:
        ????????code?=?requests.get(url,?timeout=5).status_code
        ????????if?code?!=?200:
        ????????????print('沒(méi)有網(wǎng)絡(luò)哦~')
        ????????????return?0
        ????????elif?code?==?200:
        ????????????return?1
        ????????else:
        ????????????return?2
        ????except:
        ????????return?2


        def?login(username,?password):
        ????url?=?'xxxxxxxxxxxxxxxxxx'?#?校園網(wǎng)表單提交url
        ????postdata={
        ????????'action':?'login',
        ????????'ac_id':?1,
        ????????'user_ip':'',
        ????????'nas_ip':'',
        ????????'user_mac':'',
        ????????'username':?username,
        ????????'password':?password,
        ????????'save_me':?'0',
        ????????'ajax':?1
        ????}
        ????res?=?requests.post(url,?data=postdata)
        ????res.encoding?=?res.apparent_encoding
        ????res?=?res.text
        ????if?'login?ok'?in?res:??#?如果存在該字段
        ????????res?=?"登錄成功!"
        ????????return?res
        ????if?'5分鐘'?in?res:??#?多次錯(cuò)誤提交可能會(huì)導(dǎo)致賬戶鎖定5分鐘
        ????????print("登錄失?。?)
        ????????return?res
        ????if?'E2620'?in?res:???#?此處是賬號(hào)已經(jīng)在別的設(shè)備登錄的情況,先注銷然后再次登錄
        ????????logout(url,?username,?password)
        ????????return?login(username,?password)
        ????return?res

        #?退出當(dāng)前賬號(hào)的登錄
        def?logout(url,?username,?password):
        ????logout_data?=?{
        ????????'action':?'logout',
        ????????'username':?username,
        ????????'password':?password,
        ????????'ajax':?1
        ????}
        ????res1?=?requests.post(url,?data=logout_data)
        ????res1.encoding?=?res1.apparent_encoding
        ????res1?=?res1.text
        ????print("賬戶已退出!")


        if?__name__?==?'__main__':
        ????status?=?checkinternet()
        ????if?status?==?0:
        ????????txt?=?login(xxxxx,?xxxxxxxx)?#?輸入賬號(hào)密碼
        ????????print(txt)
        ????elif?status?==?1:
        ????????print("有網(wǎng)絡(luò)!")
        ????????txt?=?login(xxxxxxx,?xxxxxxx)
        ????????print(txt)
        ????else:
        ????????print("未知結(jié)果!")

        講解完了代碼部分,我們?cè)撊绾螌⑺虬梢粋€(gè)可執(zhí)行文件直接通過(guò)點(diǎn)擊就可以進(jìn)行聯(lián)網(wǎng)呢?

        這里推薦一個(gè)庫(kù)---pyinstaller

        pip?install?pyinstaller

        這個(gè)庫(kù)能夠?qū)y文件直接打包成可執(zhí)行文件,支持win/mac/linux平臺(tái)。

        當(dāng)我們寫(xiě)完文件后執(zhí)行下面命令:

        pyinstaller?-F?文件名.py

        執(zhí)行完后,我們可以看到生成了幾個(gè)文件夾,而可執(zhí)行文件就在dist文件夾中。

        放在桌面上,每次連接直接點(diǎn)擊一下就可以連接校園網(wǎng)了~



        回復(fù)下方「關(guān)鍵詞」,獲取優(yōu)質(zhì)資源

        回復(fù)關(guān)鍵詞「python」,立即獲取進(jìn)階必備書(shū)籍Python進(jìn)階》電子版
        回復(fù)關(guān)鍵詞「Flask」,立即獲取Flask?教程
        回復(fù)關(guān)鍵詞「wx」,加入高質(zhì)量python交流群


        推薦:
        1. 我的編程能力從什么時(shí)候開(kāi)始突飛猛進(jìn)

        2. 每個(gè)程序員都必須知道的8種數(shù)據(jù)結(jié)構(gòu)

        3. 張一鳴:給技術(shù)人的建議


        長(zhǎng)按關(guān)注公眾號(hào)
        每天分享python技術(shù)干貨

        瀏覽 63
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 肌肌对肌肌30分钟无遮挡 | 国内成人免费大片在线观看 | 人人澡人人爽欧一区 | 天堂在线观看av 99re6久热只有精品6在线直播 | 中文字幕在线网址 |