Skip to content

LoginBase

控制会话、管理登录态,所有登录插件都应该继承自LoginBase


api说明

class sunday.utils.LoginBase(file='/Users/rnet/.sunday/cache', logger=, pacWifi=None, pacUrl=None, ident='', error=[])

LoginBase为登录插件开发必须的原始类,供登录插件继承 Usages: from sunday.utils.LoginBase import LoginBase class MyLogin(LoginBase): def init(self, useLoginState=True, ident=None): self.logger = Logger('MyLogin').getLogger() LoginBase.init(self, logger=self.logger, ident=ident or '', error=[99999, '网站接口异常,请稍后重试']) checkUrl = 'http://host:port/getCurrentUser' self.rs, self.isLogin = self.initRs(checkUrl, useLoginState) Args: logger(Logger): 子类调用传入,可以保持日志打印一致 pacWifi(str): wifi名称,如果当前网络连入的wifi相同则使用pac代理 pacUrl(str): url地址,尝试请求该url,如果能请求到则使用pac代理,一般为内网链接 ident(str): 多用户标识,用于多用户认证 error(list): 数组元素为两个时生效,与sunday.core.fetch.Fetch.setJsonError入参值一致

checkLogin(self, checkUrl=None)

程序默认的登录成功判断方法, 即: 请求首页, 如果跳到登录页则说明登录态失效 这种判断方式根据目标网站处理逻辑不同可能会不准确,一般子类会重构这个方法 Args: checkUrl(str): 用于检查是否登录成功的网站链接

initRs(self, checkUrl=None, useHistory=True)

初始化会话 Args: checkUrl(str): 用于检查是否登录成功的网站链接 useHistory(bool): 标记是否使用上一次的登录态,为False则为重新登录不用历史登录态

使用注意

  1. 存在多登录态管理时需要传入唯一标识,即ident入参值会在生成登录关键信息文件时作为文件名尾缀,以标记下次相同ident值直接取出登录态使用;
  2. initrs方法入参usehistory表示是否使用已经存在的登录态,一般建议开启,除非是登录接口需要验证登录的账密信息则需要重走登录流程;
  3. initrs方法会返回session实例与是否登录的标识,当登录标识为未登录时需要重新执行登录流程.