- import re
- import json
- import urllib
- import base64
- import hashlib
- import requests
- WBCLIENT = 'ssologin.js(v.1.3.18)'
- sha1 = lambda x: hashlib.sha1(x).hexdigest()
- def wblogin(username, password):
- session = requests.Session()
- # headers={
- # 'User-Agent': 'Mozilla/5.0 (Windows NT 5.1) ApplewebKit/537.1 (KHT'
- # 'ML, like Gecko) Chrome/21.0.1180.89 Safari/537.1'
- # }
- #)
- resp = session.get(
- 'http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sina'
- 'SSOController.preloginCallBack&su=%s&client=%s' %
- (base64.b64encode(username), WBCLIENT)
- )
- pre_login_str = re.match(r'[^{]+({.+?})', resp.content).group(1)
- pre_login_json = json.loads(pre_login_str)
- data = {
- 'entry': 'weibo',
- 'gateway': 1,
- 'from': '',
- 'savestate': 7,
- 'useticket': 1,
- 'ssosimplelogin': 1,
- 'su': base64.b64encode(urllib.quote(username)),
- 'service': 'miniblog',
- 'servertime': pre_login_json['servertime'],
- 'nonce': pre_login_json['nonce'],
- 'pcid': pre_login_json['pcid'],
- 'vsnf': 1,
- 'vsnval': '',
- 'pwencode': 'wsse',
- 'sp': sha1(sha1(sha1(password)) +
- str(pre_login_json['servertime']) +
- pre_login_json['nonce']),
- 'encoding': 'UTF-8',
- 'url': 'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.si'
- 'naSSOController.feedBackUrlCallBack',
- 'returntype': 'META'
- }
- resp = session.post(
- 'http://login.sina.com.cn/sso/login.php?client=%s' % WBCLIENT,
- data=data
- )
- login_url = re.search(r'replace\\([\\"\\']([^\\'\\"]+)[\\"\\']',
- resp.content).group(1)
- resp = session.get(login_url)
- login_str = re.match(r'[^{]+({.+?}})', resp.content).group(1)
- return session, json.loads(login_str)
- if __name__ == '__main__':
- from pprint import pprint
- session, login_info = wblogin('xxxxxxx@qq.com', 'xxxxxx')
- uid = login_info['userinfo']['uniqueid']
- url = "http://weibo.com/u/"+uid
- resp = session.get(url)
- print resp.content
- #该片段来自于http://www.codesnippet.cn/detail/300720134882.html
来源: http://www.codesnippet.cn/detail/300720134882.html