新浪模拟登陆

抓包:总共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"
}

猜你喜欢

转载自blog.csdn.net/wu0che28/article/details/83141366