“自动报社保 + 查询导出 ” 的完整架构图和 Playwright C# 项目初始化模板
目录
一、整体架构图
二、Playwright for .NET 初始化模板(C#)
三、执行调度(Quartz.NET)
四、验证码识别(Python + 超级鹰)
五、为什么这样设计可以做成产品
“自动报社保 + 查询导出 ” 的完整架构图和 Playwright C# 项目初始化模板。
一、整体架构图
────────────────────────────────────────────自动化任务系统
────────────────────────────────────────────[UI层 - 产品界面] WPF / Blazor Server- 配置社保账号- 上传模板Excel路径- 任务日志查看- 手动执行 / 停止任务
────────────────────────────────────────────[业务逻辑层 - 任务调度] Quartz.NET- 每月固定日期自动执行报社保任务- 每日自动查询社保数据任务- 每周自动生成并发布任务
────────────────────────────────────────────[自动化执行层 - Playwright for .NET]1. 报社保- 登录你们内部系统,下载Excel- 登录社保局系统- 填写表单、上传Excel- 提交、截图2. 查询社保数据- 登录社保局- 执行查询条件- 导出Excel3. 发布文章- 登录- 填写标题、正文、标签- 发布
────────────────────────────────────────────[数据生成层]- 从数据库读取业务数据(Dapper / EF Core)- 调用AI API生成文章(GPT-4、DeepSeek、星火等)- 格式化为Markdown / HTML
────────────────────────────────────────────[辅助功能模块]- 验证码识别(Python OCR + 超级鹰 API)- Excel解析(EPPlus / NPOI)- 日志记录(NLog / Serilog)
────────────────────────────────────────────[存储层]- SQL Server / MySQL 存储任务配置、日志- 本地文件夹存储导出的Excel、截图
────────────────────────────────────────────
二、Playwright for .NET 初始化模板(C#)
- 安装依赖
dotnet new console -n AutoTasks
cd AutoTasks
dotnet add package Microsoft.Playwright
dotnet tool install --global Microsoft.Playwright.CLI
playwright install
- 项目结构
AutoTasks/├── Program.cs // 主入口├── Tasks/│ ├── SocialSecurityTask.cs // 报社保任务│ ├── QuerySocialDataTask.cs // 查询导出任务│ ├── PublishCsdnTask.cs // 发布任务├── Services/│ ├── OcrService.cs // 验证码识别│ ├── ExcelService.cs // Excel处理│ ├── AiContentService.cs // AI生成文章├── appsettings.json // 账号、密码、配置
- 基础代码示例(登录并上传Excel)
using Microsoft.Playwright;class Program
{public static async Task Main(){using var playwright = await Playwright.CreateAsync();var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions{Headless = false // 调试时可见浏览器});var page = await browser.NewPageAsync();// 访问社保局网站await page.GotoAsync("https://社保局登录地址");// 填写用户名和密码await page.FillAsync("#username", "你的账号");await page.FillAsync("#password", "你的密码");// 如果有验证码,这里调用 OCR 服务获取验证码// var captchaText = await OcrService.RecognizeAsync(await page.ScreenshotAsync(new PageScreenshotOptions { Path = "captcha.png" }));// await page.FillAsync("#captcha", captchaText);await page.ClickAsync("#loginBtn");// 上传Excelawait page.SetInputFilesAsync("input[type='file']", @"C:\报表\社保.xls");// 提交await page.ClickAsync("#submitBtn");await page.ScreenshotAsync(new PageScreenshotOptions { Path = "result.png" });await browser.CloseAsync();}
}
三、执行调度(Quartz.NET)
using Quartz;
using Quartz.Impl;class SchedulerConfig
{public static async Task Start(){StdSchedulerFactory factory = new StdSchedulerFactory();IScheduler scheduler = await factory.GetScheduler();await scheduler.Start();// 每月5号 10:00 执行报社保IJobDetail job = JobBuilder.Create<SocialSecurityTask>().Build();ITrigger trigger = TriggerBuilder.Create().WithCronSchedule("0 0 10 5 * ?").Build();await scheduler.ScheduleJob(job, trigger);}
}
四、验证码识别(Python + 超级鹰)
- Playwright 截图验证码 → 调用 Python OCR 脚本识别
- Python 脚本返回结果给 C#
- 保证自动化不被卡死在验证码环节
五、为什么这样设计可以做成产品
- 多任务可扩展:社保、税务、博客发布都是任务模块,可单独启用/禁用
- 账号配置灵活:用户可自己配置账号密码,不需要改代码
- 后台运行稳定:Quartz.NET 定时执行,Playwright 支持无头模式
- 跨行业可用:换掉社保网站 URL 和定位器,就能适配别的政务/业务系统
- 支持升级为云端任务管理:未来可在云端部署,多个客户共享一套任务调度中心