Python 自動登入網站(處理Cookie)

來源:互聯網
上載者:User
Python 自動登入網站(處理Cookie)
    部落格分類:

  • Python
 Python代碼  
  1. def login():  
  2.     cj = cookielib.CookieJar()  
  3.     opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))  
  4.     login_url = r'http://zhixing.bjtu.edu.cn/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1'  
  5.     login_data = urllib.urlencode({'cookietime': '2592000', 'handlekey': 'ls', 'password': 'xxx',  
  6.             'quickforward': 'yes', 'username': 'digiter'})  
  7.     opener.open(login_url, login_data)  
  8.     return opener  

返回以後只需要設定url和data就可以Post了。
注意不要在request裡設定header,這是因為cookie也是header,如果設定header會導致沒有cookie,也就沒有登入

Python代碼  
  1. request = urllib2.Request(  
  2.         url=r'http://zhixing.bjtu.edu.cn/forum.php?mod=post&action=newthread&fid=601&extra=&topicsubmit=yes',  
  3.         data=param  
  4.     )  
  5.     print opener.open(request).read()  

輕鬆搞定設定Discuz X主題分類的功能(cookie要類比瀏覽器,這裡是模仿firefox)Python代碼  

  1. # -*- coding: utf-8 -*-  
  2. ''''' 
  3. Created on Dec 24, 2011 
  4.  
  5. @author: rush 
  6. '''  
  7. import urllib, urllib2, cookielib  
  8. import os, time  
  9.   
  10. headers = []  
  11.   
  12. def login():  
  13.     cj = cookielib.CookieJar()  
  14.     opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))  
  15.     login_url = r'http://zhixing.bjtu.edu.cn/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1'  
  16.     login_data = urllib.urlencode({'cookietime': '2592000', 'handlekey': 'ls', 'password': 'xxx',  
  17.             'quickforward': 'yes', 'username': 'GuoYuan'})  
  18.     opener.addheaders = [('Host', 'zhixing.bjtu.edu.cn'),  
  19.                        ('User-Agent', 'Mozilla/5.0 (Ubuntu; X11; Linux i686; rv:8.0) Gecko/20100101 Firefox/8.0'),  
  20.                        ('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),  
  21.                        ('Accept-Language', 'en-us,en;q=0.5'),  
  22.                        ('Accept-Encoding', 'gzip, deflate'),  
  23.                        ('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*;q=0.7'),  
  24.                        ('Connection', 'keep-alive'),  
  25.                        ('Referer', 'http://zhixing.bjtu.edu.cn/forum.php'),]  
  26.     opener.open(login_url, login_data)  
  27.     return opener  
  28.   
  29. if __name__ == '__main__':  
  30.     opener = login()  
  31.   
  32.     url = r'http://zhixing.bjtu.edu.cn/forum.php?mod=topicadmin&action=moderate&optgroup=2&modsubmit=yes&infloat=yes&inajax=1'      
  33.     data = {'fid': '601', 'formhash': '0cdd1596', 'frommodcp': '', 'handlekey': 'mods',  
  34.              'listextra': 'page%3D62', 'moderate[]': '496146', 'operations[]': 'type', 'reason': '...',  
  35.              'redirect': r'http://zhixing.bjtu.edu.cn/thread-496146-1-1.html', 'typeid': '779'}  
  36.     data2 = [(k, v) for k,v in data.iteritems()]  
  37.       
  38.     cnt = 0  
  39.     for tid in range(493022, 496146 + 1):  
  40.         cnt += 1  
  41.         if cnt % 20 == 0: print  
  42.         print tid,  
  43.           
  44.         data2.append(('moderate[]', str(tid)))  
  45.         if cnt % 40 == 0 or cnt == 496146:  
  46.             request = urllib2.Request(url=url, data=urllib.urlencode(data2))  
  47.             print opener.open(request).read()  
  48.             data2 = [(k, v) for k,v in data.iteritems()] 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.