Skip to content

Instantly share code, notes, and snippets.

@kxxoling
Created March 13, 2017 03:40
Show Gist options
  • Save kxxoling/c3b4c85cbd1bf69614614d8af763ce35 to your computer and use it in GitHub Desktop.
Save kxxoling/c3b4c85cbd1bf69614614d8af763ce35 to your computer and use it in GitHub Desktop.
import requests
import base64
import re
import urllib
import rsa
import json, binascii
from bs4 import BeautifulSoup
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)'
session = requests.Session()
rsp = session.get(url_prelogin)
json_data = re.findall(r'(?<=\().*(?=\))', rsp.text)[0]
data = json.loads(json_data)
servertime = data['servertime']
nonce = data['nonce']
pubkey = data['pubkey']
rsakv = data['rsakv']
username = '13311111111'
password = '12345678'
username.encode(encoding='utf-8')
su = base64.b64encode(username.encode(encoding='utf-8'))
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.encode(encoding='utf-8'), 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, }
rsp = session.post(url_login, data=postdata)
login_url = re.findall(r'http://weibo.*&retcode=0',resp.text)[0]
login_rsp = session.get(login_url)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment