python之簡單POST模擬登錄


首先是對模擬登錄的網站進行抓包分析,分析HTTP中的GET/POST參數,密碼加密方式等。

下面是用python3寫的簡單的POST,沒有對cookie的處理,注意python2需要略做修改,區別是urllib,urllib2等有了變動。


 

#!/usr/bin/env python3
# coding=utf-8
# XX 網站模擬登錄
import sys    #for sys.argv
import urllib
import urllib.request
import urllib.parse

url = 'http://xxx'
def login():
    action = 'login'
    username = 'xxx'    #可將密碼等保存至文件
    password = 'xxx'
    ac_id = 6
    type = 1
    data = {'action': action,
        'username': username,
        'password': password,
        'ac_id': ac_id,
        'type':type    
    }
    postdata=urllib.parse.urlencode(data).encode('utf-8')
    try:
        request=urllib.request.Request(url, postdata)
        response=urllib.request.urlopen(request)
        # 從結果內容中查找是否有特定字符串
        if(response.read().decode('utf-8').find('login_ok')>0):
            print('login_ok')
    except Exception as e:
        print('oops!Please check network!')
        print(e)

def logout():
    logoutdata = {'action': 'logout'}
    postdata=urllib.parse.urlencode(logoutdata).encode('utf-8')
    request=urllib.request.Request(url, postdata)
    response=urllib.request.urlopen(request)
    print(response.read().decode('utf-8')) #根據情況解碼

if __name__ == '__main__':
    if len(sys.argv) == 1:
        login()
    else: # 如果有額外參數,則退出登錄
        logout()

python的語法什么的就是簡潔,包含的功能也多,社區有許多人的無私奉獻。缺點也是有的,比如說沒有編譯型語言的強大的語法分析,執行速度。寫這段代碼時某行因為少加了一個右括號,提示的是該行的下一行有語法錯誤,並未提示缺少右括號,很不人性啊,或許加上分號會好一點吧。

從上面的代碼中也可以感覺到python對於網絡,正則表達式等強大的支持,元組,字典等數據類型也很好用。

使用方法:linux下很容易,$ python3 net.py 再跟任意參數可注銷登錄,chmod +x net.py后就可以$ ./net.py,或加上做個符號鏈接,放在桌面。win下:可在python環境中運行,也可用Py2exe等工具做成可執行文件。有趣的是win下Python為提高運行效率,生成了.pyc類似編譯的文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM