脚本会自动将配置保存到浏览器的 LocalStorage 中。您可以直接通过 GUI 修改以下设置:
{
"settings": {
"autoNext": true,
"autoSubmit": true,
"targetCountry": "Japan"
}
}- 自动下一步 (Auto Next):填写完页面后自动点击“下一步”按钮。
- 自动提交 (Auto Submit):自动点击最后的“提交”按钮(请谨慎使用)。
- 目标国家 (Target Country):选择您要申请的具体打工度假计划(如 Japan, China)。
- 多国家计划支持:支持配置不同的打工度假计划(如 Japan, China),自动识别 CountryId。
- 自动表单填写:
- 个人信息:精确匹配 ASP.NET 控件 ID(如
address1TextBox),支持复杂的地址和联系方式填写。 - 医疗与品行:自动处理所有“否”选项,并智能处理特殊情况(如 TB Risk)。
- WHS 特定:自动填写预计旅行日期、资金证明等关键字段。
- 个人信息:精确匹配 ASP.NET 控件 ID(如
- 智能页面跳转与验证:
- 强制验证机制:在 WHS 页面填写后,自动跳转到 Character 标签页再返回,强制触发服务器端 Session 状态更新,防止提交失败。
- 异步延迟填写:采用 200ms 间隔的异步填写策略,模拟真人操作,有效绕过服务器频率限制(Rate Limiting)。
- 频率限制保护:
- 智能识别 "Please try again later" 和 "Site busy" 错误。
- 内置指数退避算法,在服务器繁忙时自动暂停并重试。
- 验证码自动检测:识别
Submit.aspx上的 Google reCAPTCHA,自动暂停脚本并提示用户手动完成验证。 - 高负载自动刷新:检测到 "Site is under high load" 页面时自动刷新,抢占连接槽位。
- 实时 GUI 控制面板:提供可视化界面,实时修改配置,无需刷新页面。
- 自动登录:支持
ASP.NET_SessionId和ImmigrationAuthCookie 的自动维护。
本脚本基于对新西兰移民局官网的深度分析开发,针对 ASP.NET Web Forms 架构进行了全方位优化:
-
ViewState 与 EventValidation 状态管理:
- 核心机制:脚本自动提取并维护
__VIEWSTATE(页面状态) 和__EVENTVALIDATION(事件验证) 隐藏字段。 - 容错处理:确保每次 POST 请求都携带上一次响应中获取的最新哈希值,彻底解决 "Invalid Viewstate" 或 "MAC validation failed" 异常。
- 核心机制:脚本自动提取并维护
-
动态控件 ID 智能匹配:
- 针对 ASP.NET 动态生成的长 ID(如
_ctl0:ContentPlaceHolder1:personDetails:familyNameTextBox),脚本摒弃了硬编码完整 ID 的做法。 - 采用 后缀匹配 (Suffix Matching) 和 正则匹配 策略,无论服务器如何改变
_ctl前缀或容器 ID,脚本都能精准定位输入框。
- 针对 ASP.NET 动态生成的长 ID(如
-
向导会话 (Wizard Session) 保持:
- 严格解析 URL 中的
rqs(Request Query String) 参数。这是服务器维持向导步骤的关键令牌。 - 在
GET -> POST -> 302 Redirect的标准流程中,脚本自动捕获重定向 URL 中的新rqs,确保会话不中断,避免 "Session Expired" 错误。
- 严格解析 URL 中的
-
数据格式与协议规范:
- 日期格式:强制使用后端接口要求的
d MMMM, yyyy格式(如13 December, 2001),绕过前端 jQuery UI Datepicker 的潜在格式不一致问题。 - 隐藏字段:自动填充
ClientScrollHeight等辅助字段,完美模拟真实浏览器的提交载荷。
- 日期格式:强制使用后端接口要求的
-
高级反爬虫规避:
- 全事件链模拟:在填充字段时,依次触发
focus,input,change,blur事件,确保触发页面内的nzis.UpdateTextBoxErrorLabel等前端验证逻辑。 - 异步拟人化操作:使用
async/await实现非阻塞的延迟队列,配合随机抖动(Jitter),让操作轨迹在服务器日志中看起来更像真实用户,而非高频脚本。
- 全事件链模拟:在填充字段时,依次触发
-
异常处理与韧性设计 (Resilience Engineering):
- 指数退避 (Exponential Backoff):当遇到
503 Service Unavailable或 "Please try again later" 错误时,脚本不会盲目重试,而是采用指数级增加的等待时间(1s, 2s, 4s...),最大程度减少对服务器的压力并提高恢复成功率。 - 状态自愈:脚本内置状态机(State Machine),能够识别页面加载不完整或 DOM 渲染延迟的情况,并自动触发局部刷新或重新填充,无需人工干预。
- 指数退避 (Exponential Backoff):当遇到
-
架构与性能优化:
- 无头浏览器友好:代码结构解耦了 DOM 操作与业务逻辑,理论上可移植到 Puppeteer/Playwright 等无头浏览器环境。
- 零外部依赖:脚本不依赖 jQuery(虽然网站本身使用了)或其他重型库,所有 DOM 操作均使用原生 JavaScript API (
querySelector,dispatchEvent) 实现,执行效率极高,内存占用极低。
-
数据隐私与安全:
- 本地化存储:所有敏感数据(护照号、地址等)仅存储在用户浏览器的
localStorage中,绝不上传到任何第三方服务器。 - 代码透明:脚本完全开源且未混淆,用户可随时审计代码逻辑,确保无后门或恶意行为。
- 本地化存储:所有敏感数据(护照号、地址等)仅存储在用户浏览器的
-
行业与职业代码映射 (Domain Logic):
- 精准映射:内置了新西兰移民局最新的行业代码库(如
L783300对应 Computer Maintenance),自动处理Personal3.aspx中复杂的 "搜索 -> 选择" 交互逻辑,避免因手动输入拼写错误导致的提交失败。 - 职业模糊匹配:针对职业搜索框,脚本支持模糊关键词输入,并自动选择最佳匹配项,还原了真实用户的搜索行为。
- 精准映射:内置了新西兰移民局最新的行业代码库(如
-
支付网关无缝衔接:
- 支付页检测:脚本能够智能识别
OnlinePayment.aspx支付页面,并在此时自动停止自动化流程,将控制权平滑移交给用户进行敏感的支付操作,确保资金安全。 - 会话预热:在进入支付页前,脚本会确保所有前置 Session 状态均已正确提交,防止支付后因 Session 丢失导致的 "Payment Successful but Application Failed" 悲剧。
- 支付页检测:脚本能够智能识别
-
运行时状态持久化 (Runtime Persistence):
- 跨页状态同步:利用
localStorage存储运行时状态(如whsValidated标志位),即使在浏览器崩溃或手动刷新后,脚本也能准确恢复到上一次的执行步骤,而不会从头开始。 - 配置热重载:支持在脚本运行过程中动态修改配置(如切换目标国家),脚本会即时响应变更,无需重启浏览器。
- 跨页状态同步:利用
本项目仅供学习和研究。后果自负。自动化操作可能导致账号被封禁或申请失败。作者不对因使用此工具而导致的任何后果承担责任。
