目录
1. Selenium WebDriver(老牌稳妥方案,推荐给业务系统自动化)
3. HTTP API + 模拟请求(首选前提:系统有接口)
如果你的目标是 自动报社保、自动报税并上传 Excel,那就不只是单纯的文件上传问题了,还涉及:
登录(可能有验证码)
填写表单
上传文件(Excel)
可能还有数据校验、进度等待、错误处理
稳定运行和反自动化检测
我给你分析一下不同方案的优劣:
1. Selenium WebDriver(老牌稳妥方案,推荐给业务系统自动化)
适用场景:社保、税务这类 固定流程 且 UI 不会经常变化 的系统
优点:
支持完整浏览器行为(JavaScript、表单、文件上传、AJAX 都能处理)
元素定位能力强(支持 XPath、CSS Selector 等)
社保、税务系统大多是老旧 IE/Edge 或国产浏览器(Selenium 可结合 Chrome、Edge 甚至 IE Driver)
生态完善(自动截图、等待元素加载、异常重试等功能都有)
缺点:
执行速度比无头爬虫慢
国税/社保系统的前端可能会加反自动化脚本,需要增加规避手段
2. Playwright for .NET(现代方案)
适用场景:新一代的自动化工具,性能好,支持并发任务
优点:
比 Selenium 快(支持并行、事件监听)
API 现代化,等待机制自动化(不用自己写
Thread.Sleep
)对验证码处理和文件上传支持很好
缺点:
在国产老旧政务系统的兼容性可能比 Selenium 稍差
资料和示例比 Selenium 少一些
3. HTTP API + 模拟请求(首选前提:系统有接口)
适用场景:社保、税务系统有公开或私有 API,可以直接调用上传接口
优点:
速度最快(不需要浏览器)
稳定(UI 改版不会影响)
适合批量任务
缺点:
政务系统很少直接给 API
需要抓包分析(可能有加密签名、Cookie 验证、Token 验证等)
4. 混合模式(我的建议)
登录、验证码处理、上传 Excel → 用 Selenium/Playwright
数据填充、重复性操作 → 尽量用 接口调用 或 JS 注入,减少页面交互时间
文件上传用
SendKeys()
或SetInputFiles()
直接给<input type="file">
,避免点击弹出窗口如果社保/税务网站有国产浏览器限制(如“必须用 IE、360、金税盘浏览器”),可以配合 Selenium + Edge IE Mode 或 WinForms 控制 WebBrowser COM
关键技术点
验证码识别
简单验证码:用 OCR(如 Tesseract)识别
滑块验证码:用 Selenium/Playwright 模拟拖动轨迹
图形点选验证码:配合第三方打码平台(如超级鹰、云打码)
文件上传(稳定做法)
driver.FindElement(By.CssSelector("input[type='file']")) .SendKeys(@"C:\报税资料\2025年8月社保.xls");
等待机制(避免页面还没加载完就操作)
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); wait.Until(ExpectedConditions.ElementIsVisible(By.Id("uploadBtn")));
长时间运行稳定性
捕获异常自动重试
定时截图保存日志
加载页面前清空缓存 / 重新登录
💡 总结建议:
如果你的系统是 政务类、老旧网页 → Selenium WebDriver 是最佳选择
如果是 现代化网页 → Playwright for .NET 更快、更好用
如果能抓到 API → 优先直接调接口,再结合自动化做文件上传