We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Cea 使用边缘情形 API 来加载学校配置,这样能极大缩短适配周期。该 API 的数据源就在本项目 ./vercel/data/school-edge-cases.json 文件中,我们要适配自己学校,就是不断补充这个文件,下面我来介绍一下具体做法
formIdx
由于网页元素可能被客户端脚本隐藏,我们需要查看网页源码,才能获得抓包时(无法运行客户端脚本)正确表单的位置
浏览器进入学校统一登陆页,点击右键 => 查看网页源代码,CRTL + F 查找字符: <form
CRTL + F
<form
找到用密码登录方式的那个表单,计算它在网页中的序号(0 为起始索引)
比如我搜索到了四个结果,用户名密码登录表单在第二个,那么就能得到 formIdx 的值为 1,将此值与 NOTCLOUD 对象中的同字段值比对,有差异则需要在边缘情形文件中增加对于学校的边缘情形:
{ + "武汉大学": { + "formIdx": 1, + }, "NOTCLOUD": { "getCaptchaPath": "/getCaptcha.htl", "checkCaptchaPath": "/checkNeedCaptcha.htl", "formIdx": 2, "pwdEncrypt": true } }
checkCaptchaPath
在输入用户名,点击密码时,统一登陆网页会请求一个接口检查是否需要验证码。很不幸,这个接口的路径各异,也需要特殊处理。
我们在浏览器内打开调试工具,切换到 Network 标签下。刷新网页,填入用户名,点击密码输入框,在点击的瞬间会出现新的请求,后缀类似 /checkNeedCaptcha.htl,这个值便是我们的 checkCaptchaPath 字段的值;同上,比对后有差异就需要填入边缘情形:
/checkNeedCaptcha.htl
{ + "武汉大学": { + "formIdx": 1, + "checkCaptchaPath": "/needCaptcha.html" + }, "NOTCLOUD": { "getCaptchaPath": "/getCaptcha.htl", "checkCaptchaPath": "/checkNeedCaptcha.htl", "formIdx": 2, "pwdEncrypt": true } }
getCaptchaPath
同上一步检查验证码接口路径一样,我们还是用 Network 标签页监听请求,3 次输入错误的账号密码,再次输入密码时就能看到获取验证码的接口路径,类似于 /sliderCaptcha.do,同样,比对后有差异则填进边缘情形数据源里:
/sliderCaptcha.do
{ + "武汉大学": { + "formIdx": 1, + "checkCaptchaPath": "/needCaptcha.html" + "getCaptchaPath": "/sliderCaptcha.do" + }, "NOTCLOUD": { "getCaptchaPath": "/getCaptcha.htl", "checkCaptchaPath": "/checkNeedCaptcha.htl", "formIdx": 2, "pwdEncrypt": true } }
submitCaptchakey
输入验证码和测试账号,登录,在最终的登录请求体中能找到 比如我输入 fake 作为验证码,此请求类似于下图:
fake
通过红色矩形区域的字段可以看出,这个 key 就是 captcha,同上比对(添加)
key
captcha
你可以使用 localEdgeCasesFile 配置字段来本地测试,如果成功,请你回馈社区,提交 PR 使更多同学收益
具体过程就是修改 ./vercel/data/school-edge-cases.json 文件,然后我们就可以 Commit 并提交 PR 了,当 PR 被 Merge 之后,Vercel 将自动部署新的 API,届时重新用 Cea 在线加载学校的用户也可以适配 🎉
"福建农林大学": { "formIdx": 0, "checkCaptchaPath": "/needCaptcha.html", "getCaptchaPath": "/captcha.html" },
@linrusheng123 👍,方便直接提交 PR 吗
好的 我尝试一下
Activity
[-]学校适配指南,如何提交边缘情形?[/-][+]学校适配指南:如何提交边缘情形?[/+]beetcb commentedon Nov 13, 2021
Cea 使用边缘情形 API 来加载学校配置,这样能极大缩短适配周期。该 API 的数据源就在本项目 ./vercel/data/school-edge-cases.json 文件中,我们要适配自己学校,就是不断补充这个文件,下面我来介绍一下具体做法
比对
formIdx
浏览器进入学校统一登陆页,点击右键 => 查看网页源代码,
CRTL + F
查找字符:<form
找到用密码登录方式的那个表单,计算它在网页中的序号(0 为起始索引)
比如我搜索到了四个结果,用户名密码登录表单在第二个,那么就能得到
formIdx
的值为 1,将此值与 NOTCLOUD 对象中的同字段值比对,有差异则需要在边缘情形文件中增加对于学校的边缘情形:比对检查验证码接口路径
checkCaptchaPath
在输入用户名,点击密码时,统一登陆网页会请求一个接口检查是否需要验证码。很不幸,这个接口的路径各异,也需要特殊处理。
我们在浏览器内打开调试工具,切换到 Network 标签下。刷新网页,填入用户名,点击密码输入框,在点击的瞬间会出现新的请求,后缀类似
/checkNeedCaptcha.htl
,这个值便是我们的checkCaptchaPath
字段的值;同上,比对后有差异就需要填入边缘情形:比对获取验证码路径
getCaptchaPath
同上一步检查验证码接口路径一样,我们还是用 Network 标签页监听请求,3 次输入错误的账号密码,再次输入密码时就能看到获取验证码的接口路径,类似于
/sliderCaptcha.do
,同样,比对后有差异则填进边缘情形数据源里:比对提交表单中的验证码提交名称
submitCaptchakey
输入验证码和测试账号,登录,在最终的登录请求体中能找到
比如我输入
fake
作为验证码,此请求类似于下图:通过红色矩形区域的字段可以看出,这个
key
就是captcha
,同上比对(添加)提交 PR
你可以使用 localEdgeCasesFile 配置字段来本地测试,如果成功,请你回馈社区,提交 PR 使更多同学收益
具体过程就是修改 ./vercel/data/school-edge-cases.json 文件,然后我们就可以 Commit 并提交 PR 了,当 PR 被 Merge 之后,Vercel 将自动部署新的 API,届时重新用 Cea 在线加载学校的用户也可以适配 🎉
linrusheng123 commentedon Dec 7, 2021
"福建农林大学": {
"formIdx": 0,
"checkCaptchaPath": "/needCaptcha.html",
"getCaptchaPath": "/captcha.html"
},
beetcb commentedon Dec 7, 2021
@linrusheng123 👍,方便直接提交 PR 吗
linrusheng123 commentedon Dec 7, 2021
好的 我尝试一下
1 remaining item