Skip to content

认证与登录 (Authentication)

Legado 支持通过 CookieJar、登录 UI 表单和登录 URL 脚本三种方式实现网站认证。

1. CookieJar

启用后自动保存每次响应头中的 Set-Cookie 值,适用于需要 session 的网站(如验证码图片)。

在源编辑器中勾选「启用 CookieJar」即可,无需额外配置。

2. 登录 UI (Login UI)

通过 JSON 数组定义登录表单,替代内置 WebView 登录方式。

字段定义

字段类型必须说明
nameString字段名称,显示为输入框标签
typeString字段类型
actionStringbutton 类型:点击时执行的动作
styleObjectFlexbox 布局配置

type 取值

说明
text文本输入框
password密码输入框
button可点击按钮,action 为 URL 时打开浏览器,为函数名时调用 JS

JSON 示例

json
[
    { "name": "telephone", "type": "text" },
    { "name": "password", "type": "password" },
    {
        "name": "注册",
        "type": "button",
        "action": "http://www.example.com/register"
    },
    {
        "name": "获取验证码",
        "type": "button",
        "action": "getVerificationCode()",
        "style": {
            "layout_flexGrow": 0,
            "layout_flexShrink": 1,
            "layout_alignSelf": "auto",
            "layout_flexBasisPercent": -1,
            "layout_wrapBefore": false
        }
    }
]

style 布局属性

属性类型说明
layout_flexGrowInt弹性增长比例
layout_flexShrinkInt弹性收缩比例
layout_alignSelfString交叉轴对齐方式
layout_flexBasisPercentInt基础尺寸百分比,-1 为自动
layout_wrapBeforeBoolean是否强制换行

版本变更

从版本 20221113 起,按钮支持调用「登录 URL」规则中的函数,必须实现 login 函数。

3. 登录 URL (Login URL)

可填写登录链接或实现登录逻辑的 JavaScript。配合登录 UI 使用时,需要实现 login 函数。

JS 示例

js
function login() {
    java.log("模拟登录请求");
    java.log(source.getLoginInfoMap());
}
function getVerificationCode() {
    java.log("登录UI按钮:获取到手机号码" + result.get("telephone"))
}

获取登录信息

在登录按钮函数和 login 函数中,可通过以下方式获取用户输入:

js
// 登录按钮函数中
result.get("telephone")

// login 函数中
source.getLoginInfo()
source.getLoginInfoMap().get("telephone")

source 登录相关方法

方法返回值说明
login()执行登录
getHeaderMap(hasLoginHeader)Map获取请求头
getLoginHeader()String?获取登录头字符串
getLoginHeaderMap()Map?获取登录头 Map
putLoginHeader(header)保存登录头
removeLoginHeader()清除登录头
setVariable(variable)设置源变量
getVariable()String?获取源变量

AnalyzeUrl 函数

以下函数仅在「登录检查 JS」规则中有效:

方法返回值说明
initUrl()重新解析 URL
getHeaderMap().putAll(source.getHeaderMap(true))重新设置登录头
getStrResponse(jsStr, sourceRegex)StrResponse返回文本类型的访问结果
getResponse()Response返回 Response 类型的访问结果

4. 登录检查 JS (Login Check)

在源的「登录检查 JS」字段中填写 JavaScript,用于判断当前登录状态。返回 true 表示已登录,返回其他值会触发重新登录流程。

基于 Apache-2.0 许可发布