python实现爱奇艺登陆密码RSA加密的方法示例详解

1. 导入所需模块

import base64

import rsa

import requests

import re

2. 获取公钥和seckey

使用requests库向登陆页面发送GET请求,获取html源代码。通过正则表达式提取公钥(pubKey)和seckey两个参数。

login_url = 'https://passport.iqiyi.com/apis/user/login.action'

response = requests.get(login_url)

html = response.content.decode('utf-8')

pattern = re.compile(r'"pubKey":"(.*?)".*?"seckey":"(.*?)"', re.S)

result = re.findall(pattern, html)

pubKey = result[0][0]

seckey = result[0][1]

3. 配置登陆参数

初始化一个session对象,将pubKey和seckey传入rsa.PublicKey和rsa.encrypt函数进行加密处理。

session = requests.session()

pub_key = rsa.PublicKey.load_pkcs1_openssl_pem(pubKey.encode())

public_key = rsa.encrypt(pub_key, seckey.encode())

public_key = base64.b64encode(public_key).decode('ascii')

data = {

'email': 'YourEmail',

'password': 'YourPassword',

'public_key': public_key,

# 其他参数...

}

4. 发送POST请求登陆

使用session对象发送POST请求,将data作为参数传入。

response = session.post(login_url, data=data)

if response.status_code == 200:

print("登陆成功")

else:

print("登陆失败")

5. 完整代码示例

import base64

import rsa

import requests

import re

login_url = 'https://passport.iqiyi.com/apis/user/login.action'

response = requests.get(login_url)

html = response.content.decode('utf-8')

pattern = re.compile(r'"pubKey":"(.*?)".*?"seckey":"(.*?)"', re.S)

result = re.findall(pattern, html)

pubKey = result[0][0]

seckey = result[0][1]

session = requests.session()

pub_key = rsa.PublicKey.load_pkcs1_openssl_pem(pubKey.encode())

public_key = rsa.encrypt(pub_key, seckey.encode())

public_key = base64.b64encode(public_key).decode('ascii')

data = {

'email': 'YourEmail',

'password': 'YourPassword',

'public_key': public_key,

# 其他参数...

}

response = session.post(login_url, data=data)

if response.status_code == 200:

print("登陆成功")

else:

print("登陆失败")

以上就是使用Python实现爱奇艺登录密码RSA加密的方法示例详解。通过获取登陆页面的html源代码,提取出公钥和seckey参数,并使用rsa库对seckey进行加密,然后将加密后的参数传递给登陆接口完成登陆操作。

注意:在实际使用时,需要将'YourEmail'和'YourPassword'替换为真实的邮箱和密码。

使用该方法可以有效保护用户的登录密码安全,并且在网络传输过程中不容易被恶意截获。同时,使用了requests和re模块来发送GET请求和进行正则表达式匹配,使得代码简洁明了。

后端开发标签