python 模拟登陆weibo 代码 已验证
2013-07-24 19:59
656 查看
weibo模拟登陆代码已验证
验证时注意两个url地址是否最新,如登陆不成功,可以手动Firebug验证 postdata 是否变化
分别引自
http://www.cnblogs.com/mouse-coder/archive/2013/03/03/2941265.html、
http://www.douban.com/note/201767245/
验证时注意两个url地址是否最新,如登陆不成功,可以手动Firebug验证 postdata 是否变化
#! /usr/bin/env python #coding=utf8 import urllib import urllib2 import cookielib import base64 import re import json import hashlib import rsa import binascii cj = cookielib.LWPCookieJar() cookie_support = urllib2.HTTPCookieProcessor(cj) opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler) urllib2.install_opener(opener) postdata = { 'entry': 'weibo', 'gateway': '1', 'from': '', 'savestate': '7', 'userticket': '1', 'ssosimplelogin': '1', 'vsnf': '1', 'vsnval': '', 'su': '', 'service': 'miniblog', 'servertime': '', 'nonce': '', 'pwencode': 'rsa2', 'sp': '', 'encoding': 'UTF-8', 'prelt': '57', 'rsakv' : '', 'url': 'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack', 'returntype': 'META' } def get_servertime(): url = 'http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=dW5kZWZpbmVk&client=ssologin.js(v1.3.18)&_=1329806375939' url = 'http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=Z2V6dW93ZWklNDAhMjYuY29t&rsakt=mod&checkpin=1&client=ssologin.js(v1.4.11)&_=1374657169012' data = urllib2.urlopen(url).read() p = re.compile('\((.*)\)') try: json_data = p.search(data).group(1) data = json.loads(json_data) servertime = str(data['servertime']) nonce = data['nonce'] rsakv = data['rsakv'] pubkey = data['pubkey'] return servertime, nonce, rsakv, pubkey except: print 'Get severtime error!' return None def get_pwd(pwd, servertime, nonce, pubkey): rsaPublickey = int(pubkey, 16) key = rsa.PublicKey(rsaPublickey, 65537) #创建公钥 message = str(servertime) + '\t' + str(nonce) + '\n' + str(pwd) #拼接明文js加密文件中得到 passwd = rsa.encrypt(message, key) #加密 passwd = binascii.b2a_hex(passwd) #将加密信息转换为16进制。 return passwd def get_user(username): username_ = urllib.quote(username) username = base64.encodestring(username_)[:-1] return username def login(): username = '用户名' pwd = '密码' url = 'http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.18)' url = 'http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.11)' # url = 'http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.4)' try: servertime, nonce, rsakv, pubkey = get_servertime() print servertime, nonce, rsakv, pubkey except: return global postdata postdata['servertime'] = servertime postdata['nonce'] = nonce postdata['rsakv'] = rsakv postdata['su'] = get_user(username) postdata['sp'] = get_pwd(pwd, servertime, nonce, pubkey) postdata = urllib.urlencode(postdata) headers = {'User-Agent':'Mozilla/5.0 (Windows NT 5.1; rv:22.0) Gecko/20100101 Firefox/22.0'} req = urllib2.Request( url = url, data = postdata, headers = headers ) result = urllib2.urlopen(req) text = result.read() p = re.compile('location\.replace\(\"(.*?)\"\)') try: login_url = p.search(text).group(1) result = urllib2.urlopen(login_url) text = result.read() print "登录成功!" except: print 'Login error!' login()
分别引自
http://www.cnblogs.com/mouse-coder/archive/2013/03/03/2941265.html、
http://www.douban.com/note/201767245/
相关文章推荐
- Python模拟登陆实现代码
- python3.3教程之模拟百度登陆的代码
- Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
- python运用decorate装饰器模拟网页登陆(含代码)
- 教你怎么用python3模拟登陆中国海洋大学教务处(代码篇)
- Python使用装饰器模拟用户登陆验证功能示例
- python 采用代理模拟登陆代码
- Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
- python3.3教程之模拟百度登陆代码分享
- python3.3教程之模拟百度登陆代码分享
- 模拟登陆网站 之 Python版(内含两种版本的完整的可运行的代码)
- Python模拟登陆3: 进入选课系统(手工输入验证码阶段)
- python爬虫之模拟登陆csdn的实例代码
- python 淘宝系列(二):处理验证码的模拟登陆
- SQL server 2005 windows身份验证登陆失败 错误代码18456
- Python模拟登陆新浪微博并实现投票功能
- Python模拟登陆万能法-微博|知乎
- Python - 模拟登陆‘新浪微博',并留言
- [C++ && Python]简单模拟代码评测系统
- 【Python】模拟登陆并抓取拉勾网信息(selenium+phantomjs)