使用python模拟一个网站在中国登陆时遇到了问题

2024-09-27 21:31:49 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个中文网站。我想尝试模拟一下着陆过程中遇到的一些问题。 发送post数据包的模拟post如下所示: Post Data

密码是RSA加密。公钥可以从网页源代码中获取。也可以在网页源中找到KeyTime。 public key and keystime 但是,我发送这些数据包的回复说密码不正确。此时我更加茫然,请看看为什么会发生这种错误

这是我的代码:

import requests
from Crypto.PublicKey import RSA
import base64
import json

url = 'https://www.yiban.cn/login'
r = requests.get(url)
html = r.content.decode('utf-8')
a = html.find('-----BEGIN PUBLIC KEY-----')
b = html.find('-----END PUBLIC KEY-----', a)
encrypwd = html[a:b+24]
a = html.find('data-keys-time')
b = html.find('>')
keysTime = html[a+16:b-1]

#Account password can be used
password = 'a123456'
#Encrypt the password
encryptor = RSA.importKey(encrypwd)
encrypData = encryptor.encrypt(password.encode('utf-8'), 0)
encrypData = base64.b64encode(encrypData[0])
encrypassword = bytes.decode(encrypData)
#
login_data = {
    'account':'15528169118',
    'password':encrypassword,
    'captcha':'',
    'keysTime':keysTime,
}
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36',
    'Connection':'keep-alive',
}
headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'
headers['X-Requested-With'] = 'XMLHttpRequest'

login_url = 'https://www.yiban.cn/login/doLoginAjax'
session = requests.session()
content = session.post(url=login_url, headers=headers, data=login_data)
print(json.loads(content.text))

Tags: importurldatahtmlwwwloginpasswordcontent

热门问题