zhilian-auto-hi
Version:
智联招聘自动打招呼工具 - 自动化招聘流程的命令行工具
72 lines (71 loc) • 3.5 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
// 导入模块化的服务和工具
const config_1 = require("./services/config");
const cookie_1 = require("./utils/cookie");
const mode_1 = require("./services/mode");
const delay_1 = require("./utils/delay");
const index_1 = __importDefault(require("./logger/index"));
const graceful_shutdown_1 = __importDefault(require("./services/graceful-shutdown"));
const browser_installer_1 = __importDefault(require("./services/browser-installer"));
const playwright_extra_1 = require("playwright-extra");
const puppeteer_extra_plugin_stealth_1 = __importDefault(require("puppeteer-extra-plugin-stealth"));
const ora_1 = __importDefault(require("ora"));
// 启用stealth插件
playwright_extra_1.chromium.use((0, puppeteer_extra_plugin_stealth_1.default)());
/**
* 主函数
*/
async function main() {
try {
// 显示启动标题
index_1.default.title('智联招聘自动打招呼工具');
// 读取配置
const config = (0, config_1.loadConfig)();
// 显示运行模式并等待用户确认
await (0, mode_1.confirmRunMode)(config.runMode || 'auto-greeting');
// 确保浏览器就绪
const browserInstaller = new browser_installer_1.default();
const executablePath = await browserInstaller.ensureBrowserReady();
// 启动浏览器
const browserSpinner = (0, ora_1.default)('正在启动浏览器...').start();
const browser = await playwright_extra_1.chromium.launch({
headless: false, // 设置为false以便查看浏览器操作
slowMo: 100, // 减慢操作速度便于观察
executablePath: executablePath // 使用检测到或下载的浏览器路径
});
browserSpinner.succeed('浏览器启动成功');
// 注册浏览器实例到优雅关闭管理器
graceful_shutdown_1.default.registerBrowser(browser);
const context = await browser.newContext();
const page = await context.newPage();
index_1.default.success('新页面创建成功');
// 解析并设置cookies
const cookies = (0, cookie_1.parseCookies)(config.cookies);
await context.addCookies(cookies);
index_1.default.success(`已设置 ${cookies.length} 个cookies`);
// 先访问主域名确保cookie生效
const domainSpinner = (0, ora_1.default)('正在访问主域名以确保cookie生效...').start();
await page.goto('https://www.zhaopin.com', { waitUntil: 'domcontentloaded' });
await delay_1.DelayUtils.randomDelay(page, 'medium');
domainSpinner.succeed('主域名访问完成');
// 根据配置的模式执行相应的逻辑
await (0, mode_1.executeMode)(page, config);
index_1.default.highlight('页面加载完成,浏览器将保持打开状态...');
index_1.default.info('按 Ctrl+C 退出程序');
// 注册清理回调函数
graceful_shutdown_1.default.registerCleanupCallback(async () => {
// 这里可以添加其他需要清理的资源
// 浏览器实例的清理已经在GracefulShutdown类中处理
});
}
catch (error) {
index_1.default.error(`程序执行出错: ${error}`);
process.exit(1);
}
}
// 运行主函数
main();