1. 程式人生 > >python 實現登入網頁的操作

python 實現登入網頁的操作

有些網頁需要你登入之後才可以訪問,你需要提供賬戶和密碼。

只要在傳送http請求時,帶上含有正常登陸的cookie就可以了。

1.首先我們要先了解cookie的工作原理。

Cookie是由伺服器端生成,傳送給User-Agent(一般是瀏覽器),瀏覽器會將Cookie的key/value儲存到某個目錄下的文字檔案內,下次請求同一網站時就傳送該Cookie給伺服器(前提是瀏覽器設定為啟用cookie)。Cookie名稱和值可以由伺服器端開發自己定義,對於JSP而言也可以直接寫入jsessionid,這樣伺服器可以知道該使用者是否合法使用者以及是否需要重新登入等。

2.之後我們要獲取到使用者正常登入的cookie.

python提供了cookieJar的庫,只要把cookieJar的例項作為引數傳到urllib2的一個opener裡面。

然後訪問一次登入的頁面,cookie就已經儲存下來了。之後通過這個例項訪問所有的頁面都帶有正常登陸的cookie了。

以人人網為例子。

Python程式碼
  1. #encoding=utf-8  
  2. import urllib2  
  3. import urllib  
  4. import cookielib  
  5. def renrenBrower(url,user,password):  
  6.     #登陸頁面,可以通過抓包工具分析獲得,如fiddler,wireshark  
  7.     login_page = "http://www.renren.com/PLogin.do"  
  8.     try:  
  9.         #獲得一個cookieJar例項
  10.         cj = cookielib.CookieJar()  
  11.         #cookieJar作為引數,獲得一個opener的例項  
  12.         opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))  
  13.         #偽裝成一個正常的瀏覽器,避免有些web伺服器拒絕訪問。  
  14.         opener.addheaders = [('User-agent'
    ,'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)')]  
  15.         #生成Post資料,含有登陸使用者名稱密碼。  
  16.         data = urllib.urlencode({"email":user,"password":password})  
  17.         #以post的方法訪問登陸頁面,訪問之後cookieJar會自定儲存cookie  
  18.         opener.open(login_page,data)  
  19.         #以帶cookie的方式訪問頁面  
  20.         op=opener.open(url)  
  21.         #讀取頁面原始碼  
  22.         data= op.read()  
  23.         return data  
  24.     except Exception,e:  
  25.         print str(e)  
  26. #訪問某使用者的個人主頁,其實這已經實現了人人網的簽到功能。  
  27. print renrenBrower("http://www.renren.com/home","使用者名稱","密碼"