python實現網站的自動登入
2012-01-10 17:15:58| 分類:
編程 |字型大小 訂閱
前段時間幫同學寫了個程式,其中需要在後台通過訪問url來發送郵件,經過摸索,用了php的curl功能,覺得很強大,於是google了下。python作為一款強大的指令碼語言,也同樣有類似的功能,於是嘗試著做了下。 先看下這簡短的幾行代碼import urllib,urllib2,httplib,cookielib //使用的python模組url = 'http://www.xxxxxx.com/login.asp?action=chk' //要嘗試的url,還是把url改下吧values = {'username' : 'admin', 'password' : 'admin'} //post提交的資料data = urllib.urlencode(values) //對提交的資料進行編碼req = urllib2.Request(url, data) //形成一個url請求response = urllib2.urlopen(req) //發送簽名的請求the_page = response.read() //讀取返回的頁面print the_page //輸出返回的頁面從上面可以看到對於一個登入驗證機制比較簡單的網站,只需要這麼幾行代碼即可實現自動登入,由此不難想到可以利用這進行密碼的暴力破解下面從網上看到的一個自動登入百度空間的代碼跟我們這個類似
import urllib,urllib2,httplib,cookielibdef auto_login_hi(url,name,pwd): url_hi="http://passport.baidu.com/?login" #設定cookie cookie=cookielib.CookieJar() cj=urllib2.HTTPCookieProcessor(cookie) #設定登入參數 postdata=urllib.urlencode({'username':name,'password':pwd}) #產生請求 request=urllib2.Request(url_hi,postdata) #登入百度 opener=urllib2.build_opener(request,cj) f=opener.open(request) print f #開啟百度HI空間頁面 hi_html=opener.open(url) return hi_htmlif __name__=='__main__': name='name' password='password' url='yoururl'#例如:url='http://hi.baidu.com/cdkey51' h=auto_login_hi(url,name,password) print h.read()#h裡面的內容便是登入後的頁面內容
下面再對返回的頁面資訊進行分析,然後就可以判斷密碼是否正確。