增加另一个登录接口
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
"""wgapi 版登录接口策略"""
|
||||
|
||||
import time
|
||||
|
||||
from .crypto import encrypt_nickname_or_phone, encrypt_password
|
||||
from .login_api import LoginAPIStrategy
|
||||
|
||||
|
||||
class WgapiLoginAPI(LoginAPIStrategy):
|
||||
"""wgapi 版接口策略
|
||||
|
||||
使用新版 wgapi 接口,参数扁平化,用户名 RC4 加密后 base64 编码。
|
||||
"""
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
return "wgapi"
|
||||
|
||||
@property
|
||||
def first_login_url(self) -> str:
|
||||
return "https://passport.douyu.com/wgapi/member/passport/login"
|
||||
|
||||
@property
|
||||
def login_url(self) -> str:
|
||||
return "https://passport.douyu.com/wgapi/member/passport/login"
|
||||
|
||||
@property
|
||||
def send_email_url(self) -> str:
|
||||
return "https://passport.douyu.com/wgapi/member/passport/remotelogin/sendemail"
|
||||
|
||||
@property
|
||||
def verify_url(self) -> str:
|
||||
return "https://passport.douyu.com/wgapi/member/passport/remotelogin/verify"
|
||||
|
||||
def encrypt_username(self, username: str) -> str:
|
||||
"""RC4 加密后 base64 编码"""
|
||||
return encrypt_nickname_or_phone(username)
|
||||
|
||||
def build_first_login_data(self, username: str, password: str, referer: str) -> dict:
|
||||
"""构建第一次登录参数"""
|
||||
return {
|
||||
'type': '1',
|
||||
'nicknameOrPhoneEncrypt': self.encrypt_username(username),
|
||||
'password': encrypt_password(password),
|
||||
'biz_type': '1',
|
||||
'room_id': '0',
|
||||
'redirect_url': referer,
|
||||
't': str(int(time.time() * 1000)),
|
||||
'client_id': '1',
|
||||
'did': '',
|
||||
'lang': '',
|
||||
'isMultiAccount': '0',
|
||||
}
|
||||
|
||||
def build_second_login_data(
|
||||
self,
|
||||
username: str,
|
||||
password: str,
|
||||
gt: str,
|
||||
challenge: str,
|
||||
validate: str,
|
||||
seccode: str,
|
||||
code_token: str,
|
||||
referer: str,
|
||||
) -> dict:
|
||||
"""构建第二次登录参数(带极验验证)"""
|
||||
return {
|
||||
'type': '1',
|
||||
'nicknameOrPhoneEncrypt': self.encrypt_username(username),
|
||||
'password': encrypt_password(password),
|
||||
'room_id': '0',
|
||||
'code_type': '1',
|
||||
'code_token': code_token,
|
||||
'gt_version': 'v3',
|
||||
'geetest_challenge': challenge,
|
||||
'geetest_validate': validate,
|
||||
'geetest_seccode': seccode,
|
||||
'code_data[geetest_challenge]': challenge,
|
||||
'code_data[geetest_validate]': validate,
|
||||
'code_data[geetest_seccode]': seccode,
|
||||
'code_data[gt_version]': 'v3',
|
||||
'code_data[code]': '',
|
||||
'redirect_url': referer,
|
||||
't': str(int(time.time() * 1000)),
|
||||
'client_id': '1',
|
||||
'did': '',
|
||||
'lang': '',
|
||||
'isMultiAccount': '0',
|
||||
'biz_type': '1',
|
||||
}
|
||||
|
||||
def build_send_email_data(self, code: str) -> dict:
|
||||
"""构建发送邮箱验证参数"""
|
||||
return {
|
||||
'code': code,
|
||||
'client_id': '1',
|
||||
}
|
||||
|
||||
def build_verify_data(self, code: str, captcha: str) -> dict:
|
||||
"""构建提交验证码参数"""
|
||||
return {
|
||||
'verify_type': '2',
|
||||
'captcha': captcha,
|
||||
'isMultiAccount': '0',
|
||||
'code': code,
|
||||
'client_id': '1',
|
||||
'redirect_url': '//www.douyu.com/api/passport/login',
|
||||
}
|
||||
Reference in New Issue
Block a user