抓包:总共2个包
GET https://login.sina.com.cn/sso/prelogin.php?entry=account&callback=sinaSSOController.preloginCallBack&su=MTM5MTMyOTI0NjU%3D&rsakt=mod&client=ssologin.js(v1.4.15)&_=1539822830045 HTTP/1.1
Host: login.sina.com.cn
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3582.0 Safari/537.36
Accept: */*
Referer: https://login.sina.com.cn/signup/signin.php
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: SINAGLOBAL=172.16.138.138_1537105155.49900; SUB=_2AkMs5LVgf8NxqwJRmPoUzGvhaox0zAHEieKauES7JRMyHRl-yD83qhcytRB6B2Sbj8D7-gYnDZuVAl5pVJSxr0p4rR3l; SUBP=0033WrSXqPxfM72-Ws9jqgMF55529P9D9WFFSm.RWZs7hZu.OJppoqc.; Apache=172.16.118.82_1539822373.421298; ULOGIN_IMG=gz-fbc8e982db30c51e7ea1bdef872bbf2e6fce
sinaSSOController.preloginCallBack({"retcode":0,
"servertime":1539822827,
"pcid":"gz-d08620ca9c9722cc314c95557f32789c2e3e",
"nonce":"G9VLJE",
"pubkey":"EB2A38568661887FA180BDDB5CABD5F21C7BFD59C090CB2D245A87AC253062882729293E5506350508E7F9AA3BB77F4333231490F915F6D63C55FE2F08A49B353F444AD3993CACC02DB784ABBB8E42A9B1BBFFFB38BE18D78E87A0E41B9B8F73A928EE0CCEE1F6739884B9777E4FE9E88A1BBE495927AC4A799B3181D6442443",
"rsakv":"1330428213",
"is_openlock":0,
"exectime":13})
POST https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)&_=1539822624011 HTTP/1.1
Host: login.sina.com.cn
Connection: keep-alive
Content-Length: 519
Origin: https://login.sina.com.cn
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3582.0 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Accept: */*
Referer: https://login.sina.com.cn/signup/signin.php
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: SINAGLOBAL=172.16.138.138_1537105155.49900; SUB=_2AkMs5LVgf8NxqwJRmPoUzGvhaox0zAHEieKauES7JRMyHRl-yD83qhcytRB6B2Sbj8D7-gYnDZuVAl5pVJSxr0p4rR3l; SUBP=0033WrSXqPxfM72-Ws9jqgMF55529P9D9WFFSm.RWZs7hZu.OJppoqc.; Apache=172.16.118.82_1539822373.421298; ULOGIN_IMG=gz-b3908831be60db1b1b3768dba1733e586d39
entry: account
gateway: 1
from: null
savestate: 30
useticket: 0
pagerefer:
vsnf: 1
su: MTM5MTMyOrI0NjU=
service: account
servertime: 1539822621
nonce: L7C0DQ
pwencode: rsa2
rsakv: 1330428213
sp: 77caed81430f2622bb99620f5c3a3d40f73f5055433466cbbb18984d3c7901c61353f74bb80aac1823b8a63581396d0bb1135423f05d9649616fe891da16c58bd6fdc257953605a4bc815112b9c9ff52c58f48671bc516fbf652484b6b95d38658c3776727765156e180f51fdd3e6c2745efa1bcb3ae5e05fcb49a2e23b0ae83
sr: 1366*768
encoding: UTF-8
cdult: 3
domain: sina.com.cn
prelt: 64
returntype: TEXT
对password加密
# -*- coding: utf-8 -*-
"""
Created on Tue Nov 08 10:14:38 2016
@author: liudiwei
"""
import base64
import rsa
import binascii
import requests
import json
import re
#使用base64对用户名进行编码
def encode_username(username):
return base64.encodestring(username)[:-1]
#使用rsa2对password进行编码
def encode_password(password, servertime, nonce, pubkey):
rsaPubkey = int(pubkey, 16)
RSAKey = rsa.PublicKey(rsaPubkey, 65537) #创建公钥
codeStr = str(servertime) + '\t' + str(nonce) + '\n' + str(password) #根据js拼接方式构造明文
pwd = rsa.encrypt(codeStr, RSAKey) #使用rsa进行加密
return binascii.b2a_hex(pwd) #将加密信息转换为16进制。
#读取preinfo.php,获取servertime, nonce, pubkey, rsakv四个参数值
def get_prelogin_info():
url = r'http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=&rsakt=mod&client=ssologin.js(v1.4.18)'
html = requests.get(url).text
jsonStr = re.findall(r'\((\{.*?\})\)', html)[0]
data = json.loads(jsonStr)
servertime = data["servertime"]
nonce = data["nonce"]
pubkey = data["pubkey"]
rsakv = data["rsakv"]
return servertime, nonce, pubkey, rsakv
#根据Fiddler抓取的数据,构造post_data
def encode_post_data(username, password, servertime, nonce, pubkey, rsakv):
su = encode_username(username)
sp = encode_password(password, servertime, nonce, pubkey)
#用于登录到 http://login.sina.com.cn
post_data = {
"cdult" : "3",
"domain" : "sina.com.cn",
"encoding" : "UTF-8",
"entry" : "account",
"from" : "",
"gateway" : "1",
"nonce" : nonce,
"pagerefer" : "http://login.sina.com.cn/sso/logout.php",
"prelt" : "41",
"pwencode" : "rsa2",
"returntype" : "TEXT",
"rsakv" : rsakv,
"savestate" : "30",
"servertime" : servertime,
"service" : "sso",
"sp" : sp,
"sr" : "1366*768",
"su" : su,
"useticket" : "0",
"vsnf" : "1"
}
#用于登录到 http://login.sina.com.cn/signup/signin.php?entry=ss
"""
post_data = {
"cdult" : "3",
"domain" : "sina.com.cn",
"encoding" : "UTF-8",
"entry" : "sso",
"from" : "null",
"gateway" : "1",
"pagerefer" : "",
"prelt" : "0",
"returntype" : "TEXT",
"savestate" : "30",
"service" : "sso",
"sp" : password,
"sr" : "1366*768",
"su" : su,
"useticket" : "0",
"vsnf" : "1"
}
"""
return post_data
#设置请求时的headers
headers = {
"Origin" : "https://login.sina.com.cn",
"User-Agent" : "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36",
"Content-Type" : "application/x-www-form-urlencoded",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Referer" : "https://login.sina.com.cn/signup/signin.php?entry=sso",
"Accept-Encoding" : "deflate, br",
"Accept-Language" : "en-GB,en;q=0.8,zh-CN;q=0.6,zh;q=0.4"
}