主要变更: - 新增 Playwright 登录认证服务 (services/playwright-auth.ts) - 重构 get-activity.ts 使用 Playwright 替代 Axios 登录 - 实现自动 cookie 过期检测和重试机制 - 优化 Docker 配置支持 Playwright 浏览器运行 - 添加启动脚本自动验证和刷新 cookies - 完善错误处理:区分 4xx(认证失败) 和 5xx(服务器错误) 技术细节: - 删除旧版 login_template.txt 和 nkcs-engage.cookie.txt - 添加 startup.sh 启动时自动验证 cookies - 改进 cookie 验证逻辑,添加指数退避重试 - Dockerfile 安装 Playwright 系统依赖 - docker-compose.yaml 添加 volumes 和 health checks 测试: - 添加 auth.spec.ts 自动化测试 - 添加 get-cookies.ts 和 test-cookies-validity.ts 工具脚本 - 验证 401/500/000 等错误场景处理正确
36 lines
893 B
TypeScript
36 lines
893 B
TypeScript
import axios from 'axios';
|
|
|
|
const COOKIE_FILE = './services/cookies.json';
|
|
|
|
async function testCookies() {
|
|
try {
|
|
const fs = await import('fs');
|
|
if (!fs.existsSync(COOKIE_FILE)) {
|
|
return false;
|
|
}
|
|
|
|
const cookies = JSON.parse(fs.readFileSync(COOKIE_FILE, 'utf-8'));
|
|
const cookieString = cookies.map((c: any) => `${c.name}=${c.value}`).join('; ');
|
|
|
|
const url = 'https://engage.nkcswx.cn/Services/ActivitiesService.asmx/GetActivityDetails';
|
|
const headers = {
|
|
'Content-Type': 'application/json; charset=UTF-8',
|
|
'Cookie': cookieString,
|
|
'User-Agent': 'Mozilla/5.0 (Bun DSAS-CCA)',
|
|
};
|
|
const payload = { "activityID": "3350" };
|
|
|
|
await axios.post(url, payload, {
|
|
headers,
|
|
timeout: 10000
|
|
});
|
|
|
|
return true;
|
|
} catch (error) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
const isValid = await testCookies();
|
|
process.exit(isValid ? 0 : 1);
|