python sina 围脖登陆

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
 
智普教育 《python小弟编辑》 :http://www.jeapedu.com/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值