程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 模擬登陸-python模擬twitter登陸

模擬登陸-python模擬twitter登陸

編輯:編程綜合問答
python模擬twitter登陸

這是我的代碼,不知道為什麼一直無法成功
import urllib2
import urllib
import cookielib
import re

class Fetcher(object):
def init(self,name=None,pwd=None):
self.cj = cookielib.LWPCookieJar() #獲取一個保存cookie的對象。
self.cookie_processor = urllib2.HTTPCookieProcessor(self.cj) #將一個保存cookie對象,和一個HTTP的cookie的處理器綁定
self.opener = urllib2.build_opener(self.cookie_processor, urllib2.HTTPHandler) #創建一個opener,將保存了cookie的http處理器,設置一個handler用於處理http的URL的打開
urllib2.install_opener(self.opener) #將包含了cookie、http處理器、http的handler的資源和urllib2對象綁定在一起
self.name = name
self.pwd = pwd
self.hosturl = 'https://twitter.com/' #登錄的主頁面

self.posturl = 'https://twitter.com/sessions' #post數據接收和處理的頁面(我們要向這個頁面發送我們構造的Post數據)

def login(self):
    #跳轉到登陸界面,此時可獲得cookie
    req=urllib2.Request(self.hosturl)
    resp=urllib2.urlopen(req)
    html = resp.read()

    #得到表單中的authenticity_token
    att=re.compile('value="(.*?)" name="authenticity_token"')
    t = att.search(html)
    authenticity_token = t.group(1)

    #處理cookie
    #cookies = ''
    #for index, cookie in enumerate(self.cj): 
    #    cookies = cookies+cookie.name+"="+cookie.value+";";
    #cookie = cookies[:-1]
    #print "cookies:",cookie

    #request headers,仿冒浏覽器
    self.header = {#':host': 'twitter.com',
              #':method': 'POST',
              #':path': '/sessions',
              #':scheme': 'https',
              #':version': 'HTTP/1.1',
              #'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
              #'accept-encoding': 'gzip,deflate,sdch',
              #'accept-language': 'zh-CN,zh;q=0.8',
    #          'cache-control': 'max-age=0',
    #          #'content-length': '214',
              #'content-type': 'application/x-www-form-urlencoded',
    #          'cookie': cookie,
              #'origin': 'https://twitter.com',
              'referer': 'https://twitter.com/',
              'user-agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36'
             }
    #print(self.cj)

    #form data,提交的表單數據
    postForm = {'session[username_or_email]':self.name,
                    'session[password]':self.pwd,
                    'remember_me':'1',
                    'return_to_ssl':'true',
                    'scribe_log':'',
                    'redirect_after_login':'/',
                    'authenticity_token':authenticity_token,
                    }
    postData=urllib.urlencode(postForm) #編碼
    #print(postData)

    #提交表單
    rep = urllib2.Request(self.posturl,postForm,self.header)
    resp=urllib2.urlopen(req)
    html = resp.read()
    print(html)

    #req=urllib2.Request(self.hosturl)
    #resp=urllib2.urlopen(req)
    #html = resp.read()
    #print(html)

if name == '__main__':
username = '*******' #用戶名
password = '******' #密碼
fet = Fetcher(username,password);
fet.login()

大神幫忙看看吧。

我的思路和網上的思路一樣的,我是個菜鳥,也沒什麼幣,希望大家見諒了

最佳回答:


你可以試試 requests庫。
http://www.python-requests.org/en/latest/user/advanced/#session-objects
做登錄主要是狀態同步的問題。這個庫封裝的比較好。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved