最近学习爬虫,模拟登录BD时遇到问题,密码被加密,POST参数中也有rsakey参数等,tt参数这些如何得到。无奈水平有限,始终没明白如何模拟BD的RSA加密。希望有做过的朋友们指点指点。
这是当前BD登录需要传递的一些数据。不会的我都暂时省略了。
postDict = {
"staticpage" : "http://www.baidu.com/cache/user/html/v3Jump.html",
"charset" : "utf-8",
# "token" :, #暂时省略
"tpl" : "mn",
#"subpro" : "",
"apiver" : "v3",
# "tt" : "1412564377876", #暂时省略
# "codestring" : "",
"safeflg" : "0",
# "u" : "http%3A%2F%2Fwww.baidu.com%2F&", #暂时省略
"isPhone" : "false",
"quick_user" : "0",
"logintype" : "dialogLogin",
"logLoginType" : "pc_loginDialog",
# "idc" : "",
"loginmerge" : "true",
"splogin" : "rate",
# "username" : username, # 用户名
# "password" : password, # 用户密码
"username" : "****", # 用户名
"password" : "****", # 用户密码
"verifycode" : "",
"mem_pass" : "on",
# "rsakey" : "QNxGSHNrbmjoknFRAniMpPQDfCQaliA8", #暂时省略
"crypttype" : "12",
# "ppui_logintime": "448151",
# "callback" : "parent.bd__pcbs__md9bav" #暂时省略};
用rsa,请求"https://passport.baidu.com/v2/getpublickey"能获得两个KEY
key = rsa.PublicKey.load_pkcs1_openssl_pem(pubkey)
password_rsaed = base64.b64encode(rsa.encrypt(password, key))