python 模拟微博登录
来源:互联网 发布:手机淘宝开店流程 编辑:程序博客网 时间:2024/06/10 23:37
微博参数是动态变化的,附上代码
#coding=utf8__author__ = 'z'# -*- coding: utf-8 -*-#########################author:z#date:2016/6/19#login weibo########################import sysimport urllibimport urllib2import cookielibimport base64import reimport jsonimport rsaimport binascii#import requests#from bs4 import BeautifulSoup#新浪微博的模拟登陆class weiboLogin: def enableCookies(self): #获取一个保存cookies的对象 cj = cookielib.CookieJar() #将一个保存cookies对象和一个HTTP的cookie的处理器绑定 cookie_support = urllib2.HTTPCookieProcessor(cj) #创建一个opener,设置一个handler用于处理http的url打开 opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler) #安装opener,此后调用urlopen()时会使用安装过的opener对象 urllib2.install_opener(opener) #预登陆获得 servertime, nonce, pubkey, rsakv def getServerData(self): url = 'http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=ZW5nbGFuZHNldSU0MDE2My5jb20%3D&rsakt=mod&checkpin=1&client=ssologin.js(v1.4.18)&_=1442991685270' 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'] pubkey = data['pubkey'] rsakv = data['rsakv'] return servertime, nonce, pubkey, rsakv except: print 'Get severtime error!' return None #获取加密的密码 def getPassword(self, password, servertime, nonce, pubkey): rsaPublickey = int(pubkey, 16) key = rsa.PublicKey(rsaPublickey, 65537) #创建公钥 message = str(servertime) + '\t' + str(nonce) + '\n' + str(password) #拼接明文js加密文件中得到 passwd = rsa.encrypt(message, key) #加密 passwd = binascii.b2a_hex(passwd) #将加密信息转换为16进制。 return passwd #获取加密的用户名 def getUsername(self, username): username_ = urllib.quote(username) username = base64.encodestring(username_)[:-1] return username #获取需要提交的表单数据 def getFormData(self,userName,password,servertime,nonce,pubkey,rsakv): userName = self.getUsername(userName) psw = self.getPassword(password,servertime,nonce,pubkey) form_data = { 'entry':'weibo', 'gateway':'1', 'from':'', 'savestate':'7', 'useticket':'1', 'pagerefer':'http://weibo.com/p/1005052679342531/home?from=page_100505&mod=TAB&pids=plc_main', 'vsnf':'1', 'su':userName, 'service':'miniblog', 'servertime':servertime, 'nonce':nonce, 'pwencode':'rsa2', 'rsakv':rsakv, 'sp':psw, 'sr':'1366*768', 'encoding':'UTF-8', 'prelt':'115', 'url':'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack', 'returntype':'META' } formData = urllib.urlencode(form_data) return formData #登陆函数 def login(self,username,psw): self.enableCookies() url = 'http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.18)' servertime,nonce,pubkey,rsakv = self.getServerData() formData = self.getFormData(username,psw,servertime,nonce,pubkey,rsakv) headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0'} req = urllib2.Request( url = url, data = formData, headers = headers ) result = urllib2.urlopen(req) text = result.read() print text #还没完!!!这边有一个重定位网址,包含在脚本中,获取到之后才能真正地登陆 p = re.compile('location\.replace\([\'"](.*?)[\'"]\)') try: login_url = p.search(text).group(1) print login_url #由于之前的绑定,cookies信息会直接写入 urllib2.urlopen(login_url).read() print "Login success!" except: print 'Login error!' return 0 #访问主页,把主页写入到文件中 url = "http://weibo.com/u/3292397255/home?wvr=5"#本人的微博主页 # url = 'http://weibo.com/u/2679342531/home?topnav=1&wvr=6' open_url(url) request = urllib2.Request(url) response = urllib2.urlopen(request) text = response.read() fp_raw = open("weibo.html","w+") fp_raw.write(text) fp_raw.close() #print textwblogin = weiboLogin()print '新浪微博模拟登陆:'username = raw_input('用户名:')password = raw_input('密码:')wblogin.login(username,password)
1 0
- python 模拟微博登录
- python-微博模拟登录
- 模拟登录新浪微博(Python)
- Python模拟新浪微博登录
- python 模拟登录新浪微博
- python模拟登录新浪微博
- 模拟登录新浪微博(Python)
- python模拟登录新浪微博
- python模拟登录新浪微博
- python模拟登录新浪微博
- 模拟登录新浪微博-python
- Python 模拟登录新浪微博
- python之selenium模拟登录微博
- python模拟登录微博网站利用urllib2 和 cookie
- python爬虫设置cookie模拟登录微博方法
- python实现模拟登录
- python实现模拟登录
- python实现模拟登录
- Mac OS X常用软件推荐 – Ftp 工具篇
- Android Design Support Library使用详解
- VirtualBox中配置centos7上网
- Standord NLP组整理的NLP工具、资源列表
- 提高项目18-二分法解方程
- python 模拟微博登录
- NSArray与NSPredicate使用
- LeetCode Integer Break(整数拆分问题)
- 那些最好的轮子 - PHP篇
- java日志文件log4j.properties配置详解
- 关于BroadcastReceiver 监听网络状态
- Spring bean
- 使用命令行将Excel数据表导入Mysql中的方法小结
- Android对外置sd卡的权限问题(上)