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请求和进行正则表达式匹配,使得代码简洁明了。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签