def Login(self):  # 登录程序
		self.EnableCookie(self.enableProxy)      # Cookie或代理服务器配置,调用自定义函数实现
		serverTime, nonce, pubkey, rsakv = self.GetServerTime()      # 登录第一步,调用函数获取上述信息
		# 准备好所有的POST参数返回postData
		postData = WeiboEncode.PostEncode(self.userName, self.passWord, serverTime, nonce, pubkey, rsakv)
		print "Getting postData success"
		#封装request请求,获得指定URL的文本
		req = urllib2.Request(self.loginUrl, postData, self.postHeader)   # 封装请求信息
		result = urllib2.urlopen(req)  # 登录第二步向self.loginUrl发送用户和密码
		text = result.read()    # 读取内容
		#print text
		"""
		登陆之后新浪返回的一段脚本中定义的一个进一步登陆的url
		之前还都是获取参数和验证之类的,这一步才是真正的登陆
		所以你还需要再一次把这个url获取到并用get登陆即可
		"""
		try:
			loginUrl = WeiboSearch.sRedirectData(text)  # 得到重定位信息后,解析得到最终跳转到的URL
			urllib2.urlopen(loginUrl)  # 打开该URL后,服务器自动将用户登陆信息写入cookie,登陆成功
			print loginUrl


			"""
			content = content.decode("gbk")  # 处理要写入的文本使其可以保留中文文本
			fw = open('content.txt', 'w')
			fw.write(content.encode("u8"))  #写入时进行编码
			fw.close()
			"""
		except:
			print "login failed..."
			return False
		print "login success"
		return True
Exemple #2
0
 def Login(self):  # 登录程序
     self.EnableCookie(None)
     serverTime, nonce, pubkey, rsakv = self.GetServerTime(
     )  # 登录第一步,调用函数获取上述信息
     # 准备好所有的POST参数返回postData
     postData = WeiboEncode.PostEncode(self.userName, self.passWord,
                                       serverTime, nonce, pubkey, rsakv)
     print "Getting postData success"
     #封装request请求,获得指定URL的文本
     req = urllib2.Request(self.loginUrl, postData,
                           self.postHeader)  # 封装请求信息
     result = urllib2.urlopen(req)  # 登录第二步向self.loginUrl发送用户和密码
     text = result.read()  # 读取内容
     #print text
     """
     登陆之后新浪返回的一段脚本中定义的一个进一步登陆的url
     之前还都是获取参数和验证之类的,这一步才是真正的登陆
     所以你还需要再一次把这个url获取到并用get登陆即可
     """
     try:
         loginUrl = WeiboSearch.sRedirectData(
             text)  # 得到重定位信息后,解析得到最终跳转到的URL
         urllib2.urlopen(loginUrl)  # 打开该URL后,服务器自动将用户登陆信息写入cookie,登陆成功
     except:
         print "login failed..."
         return False
     print "login success"
     return True
Exemple #3
0
    def Login(self):
        "登陆程序"
        import pdb
        pdb.set_trace()
        self.EnableCookie(self.enableProxy)  #cookie或代理服务器配置

        #登陆的第一步
        serverTime, nonce, pubkey, rsakv = self.GetServerTime()
        #加密用户和密码
        postData = WeiboEncode.PostEncode(self.userName, self.passWord,
                                          serverTime, nonce, pubkey, rsakv)
        print "Post data length:\n", len(postData)
        req = urllib2.Request(self.loginUrl, postData, self.postHeader)
        print "Posting request..."
        #登陆的第二步——解析新浪微博的登录过程中3
        result = urllib2.urlopen(req)
        text = result.read()
        try:
            #解析重定位结果
            loginUrl = WeiboSearch.sRedirectData(text)
            import pdb
            pdb.set_trace()
            reqs = urllib2.urlopen(loginUrl)
        except:
            print 'Login error!'
            return False

        print 'Login sucess!'
        return True
Exemple #4
0
  def Login(self):
    "登陆程序"
    self.EnableCookie(self.enableProxy)#cookie或代理服务器配置

    #登陆的第一步
    serverTime, nonce, pubkey, rsakv = self.GetServerTime()
    #加密用户和密码
    postData = WeiboEncode.PostEncode(self.userName, self.passWord, serverTime, nonce, pubkey, rsakv)
    print "Post data length:\n", len(postData)
    req = urllib2.Request(self.loginUrl, postData, self.postHeader)
    print "Posting request..."
    #登陆的第二步——解析新浪微博的登录过程中3
    result = urllib2.urlopen(req)

    text = result.read()
    try:
      #解析重定位结果
      loginUrl = WeiboSearch.sRedirectData(text)
      urllib2.urlopen(loginUrl)
    except:
      print 'Login error!'
      return False

    print 'Login sucess!'
    return True
Exemple #5
0
    def Login(self):
        "Login progress"
        self.EnableCookie(
            self.enableProxy)  #Configurate cookie or proxy server

        serverTime, nonce, pubkey, rsakv = self.GetServerTime(
        )  #First step of login
        postData = WeiboEncode.PostEncode(
            self.userName, self.passWord, serverTime, nonce, pubkey,
            rsakv)  #Encripy username and password
        print "Post data length:\n", len(postData)

        req = urllib2.Request(self.loginUrl, postData, self.postHeader)
        print "Posting request..."
        result = urllib2.urlopen(req)  #Second step of login
        text = result.read()
        try:
            loginUrl = WeiboSearch.sRedirectData(text)  #Parse redirect result
            urllib2.urlopen(loginUrl)
        except:
            print 'Login error!'
            return False

        print 'Login func success!'
        return True
    def __init__(self, user, pwd, enableProxy = False):
        "初始化WeiboLogin,enableProxy表示是否使用代理服务器,默认关闭"
        print "Initializing WeiboLogin..."
        self.userName = user
        self.passWord = pwd
        self.enableProxy = enableProxy

        self.serverUrl = "http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=&rsakt=mod&client=ssologin.js(v1.4.18)&_=1407721000736"
        self.loginUrl = "http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.18)"
        self.postHeader = {'User-Agent': 'Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140611 Firefox/24.0 Iceweasel/24.6.0'}

        def Login(self):
            "登陆程序"
        self.EnableCookie(self.enableProxy)#cookie或代理服务器配置
        serverTime, nonce, pubkey, rsakv = self.GetServerTime()#登陆的第一步
        postData = WeiboEncode.PostEncode(self.userName, self.passWord, serverTime, nonce, pubkey, rsakv)#加密用户和密码
        #print "Post data length:\n", len(postData)

        req = urllib2.Request(self.loginUrl, postData, self.postHeader)
            #print "Posting request..."
        result = urllib2.urlopen(req)#登陆的第二步
        text = result.read()
        try:
            loginUrl = WeiboSearch.sRedirectData(text)#解析重定位结果
            urllib2.urlopen(loginUrl)
        except:
            print 'Login error!'
            return False

        #print 'Login sucess!'
        return True

        #print 'Login sucess!'
        return True
Exemple #7
0
    def Login(self):
        "Run this function to laungh the login process"

        self.EnableCookie(self.enableProxy)

        serverTime, nonce = self.GetServerTime()
        postData = WeiboEncode.PostEncode(self.userName, self.passWord,
                                          serverTime, nonce)
        print "Post data length:\n", len(postData)

        req = urllib2.Request(self.loginUrl, postData, self.postHeader)
        print "Posting request..."
        result = urllib2.urlopen(req)
        text = result.read()
        print "Post result page length: ", len(text)

        try:
            loginUrl = WeiboSearch.sRedirectData(text)
            urllib2.urlopen(loginUrl)
        except:
            print 'Login error!'
            return False

        print 'Login sucess!'
        return True
Exemple #8
0
    def Login(self):
        "Login"
        self.EnableCookie(self.enableProxy)

        serverTime, nonce, pubkey, rsakv = self.GetServerTime()
        postData = WeiboEncode.PostEncode(self.userName, self.passWord, serverTime, nonce, pubkey, rsakv)#加密用户和密码
        print(("Post data length: %s \n" %len(postData)))
        print(postData)

        req = urllib.request.Request(self.loginUrl, postData, self.postHeader)
        print("Posting request...")
        result = urllib.request.urlopen(req)
        text = result.read()
        try:
            loginUrl = WeiboSearch.sRedirectData(text)
            print(loginUrl)
            if 'retcode=0' in loginUrl:
                print("Re-direct url success!!")
                x =urllib.request.urlopen(loginUrl)
                print(x.read())
                print('Login sucess!')
                return True
            else:
                print('Login Failed!')
                return False
        except:
            print('Login error!')
            return False
Exemple #9
0
 def GetServerTime(self):
     print u"获取 server time and nonce..."
     serverData = urllib2.urlopen(self.serverUrl).read()   # 获取网页内容
     print 'serverData :', serverData
     try:
         # 在JSON中提取serverTime, nonce, pubkey, rsakv字段
         serverTime, nonce, pubkey, rsakv = WeiboSearch.sServerData(serverData)
         print u"获取ServerTime 成功"
         return serverTime, nonce, pubkey, rsakv
     except:
         print u"解析serverData出错!"
         return None
Exemple #10
0
	def GetServerTime(self):
		"Get server time and nonce, which are used to encode the password"  
		print u"正在获取服务器数据..."
		serverData = urllib2.urlopen(self.serverUrl).read()#得到网页内容
		print serverData

		try:
			serverTime, nonce, pubkey, rsakv = WeiboSearch.sServerData(serverData)#解析得到serverTime,nonce等
			return serverTime, nonce, pubkey, rsakv
		except:
			print u'获取服务器数据出错!'
			return None
Exemple #11
0
 def GetServerTime(self):
     "Get server time and nonce, which are used to encode the password"
     
     print "Getting server time and nonce..."
     serverData = urllib2.urlopen(self.serverUrl).read()
     print serverData
     try:
         serverTime, nonce, pubkey, rsakv = WeiboSearch.sServerData(serverData)
         return serverTime, nonce, pubkey, rsakv
     except:
         print 'Get server time & nonce error!'
         return None 
	def GetServerTime(self):
		print "getting server time and nonce..."
		serverData = urllib2.urlopen(self.serverUrl).read()   # 获取网页内容
		print 'serverData', serverData
		try:
			# 在JSON中提取serverTime, nonce, pubkey, rsakv字段
			serverTime, nonce, pubkey, rsakv = WeiboSearch.sServerData(serverData)
			print "GetServerTime success"
			return serverTime, nonce, pubkey, rsakv
		except:
			print "解析serverData出错!"
			return None
Exemple #13
0
    def Login(self):
        print '====LoginInformation======================='
        self.EnableCookie(self.enableProxy)
        serverTime, nonce, pubkey, rsakv, pcid = self.GetServerTime()  #
        print '========>GetServerTime Finished'
        postData = WeiboEncode.PostEncode(self.userName, self.passWord,
                                          serverTime, nonce, pubkey, rsakv)  #
        print "========>Post data length:", len(postData)

        req = urllib2.Request(self.loginUrl, postData, self.postHeader)
        print "========>Posting request..."
        result = urllib2.urlopen(req, timeout=30)  #
        text = result.read()
        #print 'text='+text
        retcode = getRetcode(text)
        reason = getReason(text)
        verifyCode = ''
        while retcode != 0:
            print 'retcode=', retcode
            print 'reason:', reason
            if retcode == -1:
                print 'unknown error'
                return False
            if retcode == 4049 or retcode == 2070:
                return False
                #imageurl='http://login.sina.com.cn/cgi/pin.php?r=53324&s=0&p='+pcid
                #image=urllib2.urlopen(imageurl)
                #imageFile=open('check.png','wb')
                #imageFile.write(image.read())
                #imageFile.close()
                #print 'image path:'+os.getcwd()+'\check.png'
                #verifyCode=raw_input(u'请输入验证码image path:'+os.getcwd()+'\check.png\n')
            if retcode == 4040:
                return False
            postData = WeiboEncode.PostEncode(self.userName, self.passWord,
                                              serverTime, nonce, pubkey, rsakv,
                                              pcid, verifyCode)
            req = urllib2.Request(self.loginUrl, postData, self.postHeader)
            result = urllib2.urlopen(req, timeout=30)
            text = result.read()
            retcode = getRetcode(text)
            reason = getReason(text)
            print 'retcode', retcode
        try:
            loginUrl = WeiboSearch.sRedirectData(text)  #
            urllib2.urlopen(loginUrl, timeout=40)
        except:
            print 'Login error!'
            return False

        #print 'Login sucess!'
        return True
Exemple #14
0
    def GetServerTime(self):
        "Get server time and nonce, which are used to encode the password"

        print "Getting server time and nonce..."
        serverData = urllib2.urlopen(self.serverUrl).read()
        print serverData

        try:
            serverTime, nonce = WeiboSearch.sServerData(serverData)
            return serverTime, nonce
        except:
            print 'Get server time & nonce error!'
            return None
Exemple #15
0
    def GetServerTime(self):
        "Get server time and nonce, which are used to encode the password"

        print "========>Getting server time and nonce..."
        serverData = urllib2.urlopen(self.serverUrl,timeout=30).read()#
        print '========>'+serverData

        try:
            serverTime, nonce, pubkey, rsakv,pcid = WeiboSearch.sServerData(serverData)#
            return serverTime, nonce, pubkey, rsakv,pcid
        except:
            print '========>Get server time & nonce error!'
            return None
Exemple #16
0
    def GetServerTime(self):
        "Get server time and nonce, which are used to encode the password"
        print "Getting server time and nonce..."
        serverData = urllib2.urlopen(self.serverUrl).read()  #get the web page
        print serverData

        try:
            serverTime, nonce, pubkey, rsakv = WeiboSearch.sServerData(
                serverData)  #Parse serverTime, nonce etc.
            return serverTime, nonce, pubkey, rsakv
        except:
            print 'Get server time & nonce error!'
            return None
Exemple #17
0
    def GetServerTime(self):
        "Get server time and nonce, which are used to encode the password"

        print "========>Getting server time and nonce..."
        serverData = urllib2.urlopen(self.serverUrl, timeout=30).read()  #
        print '========>' + serverData

        try:
            serverTime, nonce, pubkey, rsakv, pcid = WeiboSearch.sServerData(
                serverData)  #
            return serverTime, nonce, pubkey, rsakv, pcid
        except:
            print '========>Get server time & nonce error!'
            return None
Exemple #18
0
    def GetServerTime(self):
        
        "Get server time and nonce, which are used to encode the password"

        print("Getting server time and nonce...")
        serverData = urllib.request.urlopen(self.serverUrl).read()#得到网页内容
        print(serverData)

        try:
            serverTime, nonce, pubkey, rsakv = WeiboSearch.sServerData(serverData)#解析得到serverTime,nonce等
            return serverTime, nonce, pubkey, rsakv
        except:
            print('Get server time & nonce error!')
            return None
Exemple #19
0
    def Login(self):
            print '====LoginInformation======================='
            self.EnableCookie(self.enableProxy)
            serverTime, nonce, pubkey, rsakv,pcid = self.GetServerTime()#
            print '========>GetServerTime Finished'
            postData = WeiboEncode.PostEncode(self.userName, self.passWord, serverTime, nonce, pubkey, rsakv)#
            print "========>Post data length:", len(postData)

            req = urllib2.Request(self.loginUrl, postData, self.postHeader)
            print "========>Posting request..."
            result = urllib2.urlopen(req,timeout=30)#
            text = result.read()
            #print 'text='+text
            retcode=getRetcode(text)
            reason=getReason(text)
            verifyCode=''
            while retcode!=0:
                print 'retcode=',retcode
                print 'reason:',reason
                if retcode==-1:
                    print 'unknown error'
                    return False
                if retcode==4049 or retcode==2070:
                    return False
                    #imageurl='http://login.sina.com.cn/cgi/pin.php?r=53324&s=0&p='+pcid
                    #image=urllib2.urlopen(imageurl)
                    #imageFile=open('check.png','wb')
                    #imageFile.write(image.read())
                    #imageFile.close()
                    #print 'image path:'+os.getcwd()+'\check.png'
                    #verifyCode=raw_input(u'请输入验证码image path:'+os.getcwd()+'\check.png\n')
                if retcode==4040:
                    return False
                postData = WeiboEncode.PostEncode(self.userName, self.passWord, serverTime, nonce, pubkey, rsakv,pcid,verifyCode)
                req=urllib2.Request(self.loginUrl,postData,self.postHeader)
                result=urllib2.urlopen(req,timeout=30)
                text=result.read()
                retcode=getRetcode(text)
                reason=getReason(text)
                print 'retcode',retcode
            try:
                loginUrl = WeiboSearch.sRedirectData(text)#
                urllib2.urlopen(loginUrl,timeout=40)
            except:
                print 'Login error!'
                return False

            #print 'Login sucess!'
            return True
Exemple #20
0
 def GetServerTime(self):
     print('getting server time and nonce...')
     encodedUserName = self.GetUserName(self.userName)
     serverUrl = "http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=%s&rsakt=mod&checkpin=1&client=ssologin.js(v1.4.19)&_=%s" % (
         encodedUserName, str(int(time.time() * 1000)))
     serverData = urllib.request.urlopen(serverUrl).read().decode('utf-8')
     print(serverData)
     # urlopen方法返回的是bytes对象,通过decode('utf-8')将bytes对象转换为str
     try:
         serverdata = WeiboSearch.sServerData(serverData)
         print('Get servertime sucessfully!')
         return serverdata
     except:
         print('解析serverdata出错!')
         return None
    def UpdateToTry(self):  
        "Update toTryUrl based on textContent"  

        global toTryUrl  
        global triedUrl  
        global textContent  

        newUrlList = []  

        for textData in textContent:  
            newUrlList += WeiboSearch.sUrl(textData)  

        toTryUrl = list(set(newUrlList) - set(triedUrl))  
        pagesContent = []  
        textContent = []  
Exemple #22
0
    def UpdateToTry(self):
        "Update toTryUrl based on textContent"

        global toTryUrl
        global triedUrl
        global textContent

        newUrlList = []

        for textData in textContent:
            newUrlList += WeiboSearch.sUrl(textData)

        toTryUrl = list(set(newUrlList) - set(triedUrl))
        pagesContent = []
        textContent = []
Exemple #23
0
	def Login(self):
		self.EnableCookie(self.enableProxy)#cookie或代理服务器配置        
		serverTime, nonce, pubkey, rsakv = self.GetServerTime()#登陆的第一步:访问新浪服务器得到serverTime等信息,然后利用这些信息加密用户名和密码,构建POST请求
		postData = WeiboEncode.PostEncode(self.userName, self.passWord, serverTime, nonce, pubkey, rsakv)#加密用户和密码
		print "Post data length:", len(postData)
		req = urllib2.Request(self.loginUrl, postData, self.postHeader)
		print u"正在发送请求..."
		result = urllib2.urlopen(req)#登陆的第二步——向self.loginUrl发送用户和密码,得到重定位信息后,解析得到最终跳转到的URL,打开该URL后,服务器自动将用户登陆信息写入cookie,登陆成功。
		text = result.read()
		try:
			loginUrl = WeiboSearch.sRedirectData(text)#解析重定位结果
			urllib2.urlopen(loginUrl)
		except:
			print u'登陆出错!'
			return False
		return True
Exemple #24
0
	def search_user(self, keyword, gender = None, region = None, age = None, item = 10):
		keyword = urllib.quote(keyword.decode(sys.stdin.encoding).encode('utf-8'))
		if region:
			keyword = keyword + '&region=' + region
		if gender:
			keyword = keyword + '&gender=' + gender
		if age:
			keyword = keyword + 'age=' + age 
		html = WeiboSearch.getSearchedData(urllib2.urlopen('http://s.weibo.com/user/' + keyword).read(), 'pl_user_feedList', '<script>STK && STK.pageletM && STK.pageletM.view\((.*)\)</script>')
		soup = BeautifulSoup(html, 'lxml')
		for tag in soup.find_all('div', class_ = 'list_person'):
			desr = tag.find('div', class_ = 'person_info').text.splitlines()[2].strip(' \t\n\r')
			img = tag.img['src']
			name = tag.p.a.text.strip()
			uid = tag.p.a['uid']
			tags = [[subsubtag.text.strip() for subsubtag in subtag.findAll('a')] for subtag in tag.findAll('p', class_ = 'person_label')]
			yield {'img': img, 'name': name, 'uid': uid, 'desr': desr, 'tags': tags}
Exemple #25
0
    def Login(self):
        #Login weibo programe
        #cookie or set the proxy server
        self.EnableCookie(self.enableProxy)

        serverTime, nonce, pubkey, rsakv = self.GetServerTime(
        )  #the first step
        postData = WeiboEncode.PostEncode(self.userName, self.passWord,
                                          serverTime, nonce, pubkey, rsakv)
        print "Post data length:\n", len(postData)

        req = urllib2.Request(self.loginUrl, postData, self.postHeader)
        print "Post request..."
        result = urllib2.urlopen(req)
        text = result.read()
        #print "[+] The result:" + text

        try:
            loginUrl = WeiboSearch.sRedirectData(
                text)  #parase the redirect result
            urllib2.urlopen(loginUrl)

            myurl = "http://weibo.com/hwrichardyu?from=feed&loc=nickname&is_all=1"
            htmlContent = urllib2.urlopen(myurl).read()
            fp = open('htmlContent.txt', 'w')
            fp.write(htmlContent)
            fp.close()
            '''
			response = urllib2.urlopen("http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack&sudaref=weibo.com")
			content = response.read()
			fp = open('content.txt','w')
			fp.write(content)
			fp.close()
			uniqueid, userdomain = WeiboSearch.sGetUserInfor(content)
			url = "http://weibo.com/u/"+uniqueid+"/home"+userdomain
			print url
			myresponse = urllib2.urlopen("url")
			mycontent = myresponse.read()
			'''
        except:
            print "Login error"
            return False

        print "[+]Login success!"
        return True
Exemple #26
0
 def start_requests(self):
     self.Login()
     self.EnableCookie(self.enableProxy)
     
     serverTime, nonce, pubkey, rsakv = self.GetServerTime()
     postData = WeiboEncode.PostEncode(self.userName, self.passWord, serverTime, nonce, pubkey, rsakv)
     print "Post data length:\n", len(postData)
     req = urllib2.Request(self.loginUrl, postData, self.postHeader)
     print "Posting request..."
     result = urllib2.urlopen(req)
     text = result.read()
     try:
         loginUrl = WeiboSearch.sRedirectData(text)
         #urllib2.urlopen(loginUrl)
         return [Request(loginUrl,meta = {'cookiejar': 1},callback = self.parse_info)]             
     except:
         print 'Login error!'
         return False
Exemple #27
0
 def UpdateToTry(self):  
         "Update toTryUrl based on textContent"  
           
         global toTryUrl  
         global triedUrl  
         global textContent  
           
         newUrlList = []  
   
         for textData in textContent: 
             # print textData
             websize = 'http://weibo.com/yaochen' 
             newUrlList = WeiboSearch.sUrl(websize)
             print newUrlList 
           
         # toTryUrl = list(set(newUrlList) - set(triedUrl)) 
         # print newUrlList 
         pagesContent = []  
         textContent = []  
Exemple #28
0
 def Login(self):
      
     self.EnableCookie(self.enableProxy)
     
     serverTime, nonce, pubkey, rsakv = self.GetServerTime()
     postData = WeiboEncode.PostEncode(self.userName, self.passWord, serverTime, nonce, pubkey, rsakv)
     print "Post data length:\n", len(postData)
     req = urllib2.Request(self.loginUrl, postData, self.postHeader)
     print "Posting request..."
     result = urllib2.urlopen(req)
     text = result.read()
     try:
         loginUrl = WeiboSearch.sRedirectData(text)
         urllib2.urlopen(loginUrl)
     except:
         print 'Login error!'
         return False
     
     print 'Login sucess!'
     return True 
    def __init__(self, user, pwd, enableProxy=False):
        "初始化WeiboLogin,enableProxy表示是否使用代理服务器,默认关闭"
        print "Initializing WeiboLogin..."
        self.userName = user
        self.passWord = pwd
        self.enableProxy = enableProxy

        self.serverUrl = "http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=&rsakt=mod&client=ssologin.js(v1.4.18)&_=1407721000736"
        self.loginUrl = "http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.18)"
        self.postHeader = {
            'User-Agent':
            'Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140611 Firefox/24.0 Iceweasel/24.6.0'
        }

        def Login(self):
            "登陆程序"

        self.EnableCookie(self.enableProxy)  #cookie或代理服务器配置
        serverTime, nonce, pubkey, rsakv = self.GetServerTime()  #登陆的第一步
        postData = WeiboEncode.PostEncode(self.userName, self.passWord,
                                          serverTime, nonce, pubkey,
                                          rsakv)  #加密用户和密码
        #print "Post data length:\n", len(postData)

        req = urllib2.Request(self.loginUrl, postData, self.postHeader)
        #print "Posting request..."
        result = urllib2.urlopen(req)  #登陆的第二步
        text = result.read()
        try:
            loginUrl = WeiboSearch.sRedirectData(text)  #解析重定位结果
            urllib2.urlopen(loginUrl)
        except:
            print 'Login error!'
            return False

        #print 'Login sucess!'
        return True

        #print 'Login sucess!'
        return True
Exemple #30
0
 def Login(self):  # 登录程序
     self.EnableCookie(self.enableProxy)      # Cookie或代理服务器配置,调用自定义函数实现
     serverTime, nonce, pubkey, rsakv = self.GetServerTime()      # 登录第一步,调用函数获取上述信息
     # 准备好所有的POST参数返回postData
     postData = WeiboEncode.PostEncode(self.userName, self.passWord, serverTime, nonce, pubkey, rsakv)
     print u"获取 postData 成功"
     #封装request请求,获得指定URL的文本
     req = urllib2.Request(self.loginUrl, postData, self.postHeader)   # 封装请求信息
     result = urllib2.urlopen(req)  # 登录第二步向self.loginUrl发送用户和密码
     text = result.read()    # 读取内容
     # print text
     u"""
     登陆之后新浪返回的一段脚本中定义的一个进一步登陆的url
     之前还都是获取参数和验证之类的,这一步才是真正的登陆
     所以你还需要再一次把这个url获取到并用get登陆即可
     """
     try:
         loginUrl = WeiboSearch.sRedirectData(text)  # 得到重定位信息后,解析得到最终跳转到的URL
         urllib2.urlopen(loginUrl)  # 打开该URL后,服务器自动将用户登陆信息写入cookie,登陆成功
     except:
         return False
     return True
    def Login(self):
        "登陆程序"
        self.EnableCookie(self.enableProxy)  #cookie或代理服务器配置

        serverTime, nonce, pubkey, rsakv = self.GetServerTime()  #登陆的第一步
        postData = WeiboEncode.PostEncode(self.userName, self.passWord,
                                          serverTime, nonce, pubkey,
                                          rsakv)  #加密用户和密码
        print "Post data length:", len(postData)

        req = urllib2.Request(self.loginUrl, postData, self.postHeader)
        print "Posting request..."
        result = urllib2.urlopen(req)  #登陆的第二步——解析新浪微博的登录过程中3
        text = result.read().decode('GBK')
        #print text
        try:
            login_url = WeiboSearch.sRedirectData(text)  #解析重定位结果
            #request = urllib.request.Request(login_url)
            response = urllib2.urlopen(login_url)
            page = response.read().decode('GBK')
            #print(page)
            p2 = re.compile(r'"userdomain":"(.*?)"')
            login_url = 'http://weibo.com/' + p2.search(page).group(1)
            #request = urllib.request.Request(login_url)
            response = urllib2.urlopen(login_url)
            final = response.read().decode('utf-8')
            #print final
        except:
            print 'Login error!'
            logger.error('login error for ' + self.userName)
            print traceback.print_exc()
            return False

        print self.userName, 'Login sucess!'
        logger.error('login successfully for ' + self.userName)
        return True