python模擬登陸某高校教務網

#encoding=utf8
import urllib  
import urllib2  
import cookielib  
import hashlib


def get_cap():
    url = 'http://223.2.96.8:8090/sys/ValidateCode.aspx';
    http = urllib2.Request(url)
    html = opener.open(http)
    f = open('/root/Desktop/nanlin_cap.png','wb')
    f.write(html.read())
    f.flush()
    f.close()
    
def input_cap():
    get_cap()
    cap = raw_input('請輸入驗證碼:')
    return cap
    
def d_md5(username,password):
    m1 = hashlib.md5()
    m1.update(password)
    m1_str = m1.hexdigest()[0:30].upper()
    m2_str = username+m1_str+'10298'
    m2 = hashlib.md5(m2_str)
    m2_str = m2.hexdigest()[0:30].upper()
    end_str = m2_str
    return end_str
# 309701A43F32D879166C4BE935793F
    
def g_md5(cap):
    m1 = hashlib.md5()
    cap = cap.upper()
    m1.update(cap)
    m1_str = m1.hexdigest()[0:30].upper()+'10298'
    m2 = hashlib.md5(m1_str)
    m2_str = m2.hexdigest()[0:30].upper()
    return m2_str
    
if __name__=='__main__':
    #登陸的主頁面  
    hosturl = 'http://223.2.96.8:8090/'
    #post數據接收和處理的頁面(咱們要向這個頁面發送咱們構造的Post數據)  
    posturl = 'http://223.2.96.8:8090/_data/index_LOGIN.aspx'  
    url = 'http://223.2.96.8:8090/SYS/Main_banner.aspx'  
#     http://223.2.96.8:8090/_data/index_LOGIN.aspx
    #設置一個cookie處理器,它負責從服務器下載cookie到本地,而且在發送請求時帶上本地的cookie  
    cj = cookielib.MozillaCookieJar()  
    cookie_support = urllib2.HTTPCookieProcessor(cj)  
    opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)  
    urllib2.install_opener(opener)  
          
    #打開登陸主頁面(他的目的是從頁面下載cookie,這樣咱們在再送post數據時就有cookie了,不然發送不成功)  
    h = urllib2.urlopen(hosturl)  
          
    #構造header,通常header至少要包含一下兩項。這兩項是從抓到的包裏分析得出的。  
    headers = {'User-Agent' : 'Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0 Iceweasel/38.3.0',  
                   'Referer' : 'http://223.2.96.8:8090/_data/index_LOGIN.aspx',
                   'Host' : '223.2.96.8:8090',
                   'Accept-Language' : 'en-US,en;q=0.5',
                   'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                   'Accept-Language' : 'en-US,en;q=0.5',
                   'Accept-Encoding' : 'gzip, deflate',
                   'Connection' : 'keep-alive',
                   'Cookie' : 'ASP.NET_SessionId=w0puh345sjrptlnadwux5iez',
                   'Content-Type' : 'application/x-www-form-urlencoded',
    }
    #構造Post數據,他也是從抓大的包裏分析得出的。  
    username = '130801327'
    password = '456258'
    ds = d_md5(username,password)
    print(ds)
    capp = input_cap()
    fg = g_md5(capp)
    postData = {  
                    '__VIEWSTATE':'dDw4ODEwMTkyNTY7Oz6/35PpjccX0HYe5QRB9AaxnHHkrA==',
                    'pcInfo':'Mozilla/5.0+(X11;+Linux+x86_64;+rv:38.0)+Gecko/20100101+Firefox/38.0+Iceweasel/38.3.0Linux+x86_645.0+(X11)+SN:NULL"',
                    'typeName' : '學生',
                    'dsdsdsdsdxcxdfgfg':ds,
                    'fgfggfdgtyuuyyuuckjg':fg,
                    'Sel_Type' : 'STU',
                    'txt_asmcdefsddsd':username,
                    'txt_pewerwedsdfsdff' : '',
                    'txt_sdertfgsadscxcadsads' : '',
                    'sbtState' : ''
                    }  
          
    #須要給Post數據編碼  
    postData = urllib.urlencode(postData)  
          
    #經過urllib2提供的request方法來向指定Url發送咱們構造的數據,並完成登陸過程  
    request = urllib2.Request(posturl, postData, headers)  
    response = urllib2.urlopen(request)  
    text = response.read().decode('gbk').encode('utf8');  
    print(text)
    
#     print('******************************************************************')
#     
#     content = urllib2.urlopen('http://223.2.96.8:8090/SYS/Main_banner.aspx')
#     content = content.read().decode('gbk').encode('utf8');
#     print(content)html

相關文章
相關標籤/搜索