Skip to content

Instantly share code, notes, and snippets.

@jankuo
Last active December 16, 2015 16:39
Show Gist options
  • Save jankuo/5464746 to your computer and use it in GitHub Desktop.
Save jankuo/5464746 to your computer and use it in GitHub Desktop.
weibo login python script using requests rya more info please go :http://www.oschina.net/code/snippet_925666_20449?from=mail-notify
#coding:utf-8
import requests
import base64
import re
import urllib
import rsa
import json
import binascii
username = 'xxxx'
password = 'xxxx'
session = requests.Session()
url_prelogin = 'http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=&rsakt=mod&client=ssologin.js(v1.4.5)&_=1364875106625'
url_login = 'http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.5)'
#get servertime,nonce, pubkey,rsakv
resp = session.get(url_prelogin)
json_data = re.search('\((.*)\)', resp.content).group(1)
print 'prelogin_data:',json_data
data = json.loads(json_data)
servertime = data['servertime']
nonce = data['nonce']
pubkey = data['pubkey']
rsakv = data['rsakv']
# calc su
su = base64.b64encode(urllib.quote(username))
#calc sp
rsaPublickey= int(pubkey,16)
key = rsa.PublicKey(rsaPublickey,65537)
message = str(servertime) +'\t' + str(nonce) + '\n' + str(password)
sp = binascii.b2a_hex(rsa.encrypt(message,key))
postdata = {
'entry': 'weibo',
'gateway': '1',
'from': '',
'savestate': '7',
'userticket': '1',
'ssosimplelogin': '1',
'vsnf': '1',
'vsnval': '',
'su': su,
'service': 'miniblog',
'servertime': servertime,
'nonce': nonce,
'pwencode': 'rsa2',
'sp': sp,
'encoding': 'UTF-8',
'url': 'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack',
'returntype': 'META',
'rsakv' : rsakv,
}
resp = session.post(url_login,data=postdata)
login_url = re.findall('replace\("(.*)"\)',resp.content)
print "login_url:",login_url
resp = session.get(login_url[0])
print "login:", resp.content
uid = re.findall('"uniqueid":"(\d+)",',resp.content)[0]
url = "http://weibo.com/u/"+uid
resp = session.get(url)
print "mydata:", resp.content
def decode_content(content):
result = re.findall('<script>STK && STK.pageletM && STK.pageletM.view\((.*)\)<\/script>',content)
for i in result:
r = i.encode("utf-8").decode('unicode_escape').encode('utf-8')
print r.replace("\/","/")
url_search = "http://s.weibo.com/weibo/%s?topnav=1&wvr=5&b=1" % "刘德华"
resp = session.get(url_search)
print "searach data:",resp.content
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment