Skip to content

SkyBlue997/NZ-WHV-Automation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation


NZ WHV Automation

智能化新西兰打工度假签证 (WHV) 申请辅助工具

License Tampermonkey


GUI

目录

配置参考

脚本会自动将配置保存到浏览器的 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 特定:自动填写预计旅行日期、资金证明等关键字段。
  • 智能页面跳转与验证
    • 强制验证机制:在 WHS 页面填写后,自动跳转到 Character 标签页再返回,强制触发服务器端 Session 状态更新,防止提交失败。
    • 异步延迟填写:采用 200ms 间隔的异步填写策略,模拟真人操作,有效绕过服务器频率限制(Rate Limiting)。
  • 频率限制保护
    • 智能识别 "Please try again later" 和 "Site busy" 错误。
    • 内置指数退避算法,在服务器繁忙时自动暂停并重试。
  • 验证码自动检测:识别 Submit.aspx 上的 Google reCAPTCHA,自动暂停脚本并提示用户手动完成验证。
  • 高负载自动刷新:检测到 "Site is under high load" 页面时自动刷新,抢占连接槽位。
  • 实时 GUI 控制面板:提供可视化界面,实时修改配置,无需刷新页面。
  • 自动登录:支持 ASP.NET_SessionIdImmigrationAuth Cookie 的自动维护。

技术细节

本脚本基于对新西兰移民局官网的深度分析开发,针对 ASP.NET Web Forms 架构进行了全方位优化:

  1. ViewState 与 EventValidation 状态管理

    • 核心机制:脚本自动提取并维护 __VIEWSTATE (页面状态) 和 __EVENTVALIDATION (事件验证) 隐藏字段。
    • 容错处理:确保每次 POST 请求都携带上一次响应中获取的最新哈希值,彻底解决 "Invalid Viewstate" 或 "MAC validation failed" 异常。
  2. 动态控件 ID 智能匹配

    • 针对 ASP.NET 动态生成的长 ID(如 _ctl0:ContentPlaceHolder1:personDetails:familyNameTextBox),脚本摒弃了硬编码完整 ID 的做法。
    • 采用 后缀匹配 (Suffix Matching)正则匹配 策略,无论服务器如何改变 _ctl 前缀或容器 ID,脚本都能精准定位输入框。
  3. 向导会话 (Wizard Session) 保持

    • 严格解析 URL 中的 rqs (Request Query String) 参数。这是服务器维持向导步骤的关键令牌。
    • GET -> POST -> 302 Redirect 的标准流程中,脚本自动捕获重定向 URL 中的新 rqs,确保会话不中断,避免 "Session Expired" 错误。
  4. 数据格式与协议规范

    • 日期格式:强制使用后端接口要求的 d MMMM, yyyy 格式(如 13 December, 2001),绕过前端 jQuery UI Datepicker 的潜在格式不一致问题。
    • 隐藏字段:自动填充 ClientScrollHeight 等辅助字段,完美模拟真实浏览器的提交载荷。
  5. 高级反爬虫规避

    • 全事件链模拟:在填充字段时,依次触发 focus, input, change, blur 事件,确保触发页面内的 nzis.UpdateTextBoxErrorLabel 等前端验证逻辑。
    • 异步拟人化操作:使用 async/await 实现非阻塞的延迟队列,配合随机抖动(Jitter),让操作轨迹在服务器日志中看起来更像真实用户,而非高频脚本。
  6. 异常处理与韧性设计 (Resilience Engineering)

    • 指数退避 (Exponential Backoff):当遇到 503 Service Unavailable 或 "Please try again later" 错误时,脚本不会盲目重试,而是采用指数级增加的等待时间(1s, 2s, 4s...),最大程度减少对服务器的压力并提高恢复成功率。
    • 状态自愈:脚本内置状态机(State Machine),能够识别页面加载不完整或 DOM 渲染延迟的情况,并自动触发局部刷新或重新填充,无需人工干预。
  7. 架构与性能优化

    • 无头浏览器友好:代码结构解耦了 DOM 操作与业务逻辑,理论上可移植到 Puppeteer/Playwright 等无头浏览器环境。
    • 零外部依赖:脚本不依赖 jQuery(虽然网站本身使用了)或其他重型库,所有 DOM 操作均使用原生 JavaScript API (querySelector, dispatchEvent) 实现,执行效率极高,内存占用极低。
  8. 数据隐私与安全

    • 本地化存储:所有敏感数据(护照号、地址等)仅存储在用户浏览器的 localStorage 中,绝不上传到任何第三方服务器。
    • 代码透明:脚本完全开源且未混淆,用户可随时审计代码逻辑,确保无后门或恶意行为。
  9. 行业与职业代码映射 (Domain Logic)

    • 精准映射:内置了新西兰移民局最新的行业代码库(如 L783300 对应 Computer Maintenance),自动处理 Personal3.aspx 中复杂的 "搜索 -> 选择" 交互逻辑,避免因手动输入拼写错误导致的提交失败。
    • 职业模糊匹配:针对职业搜索框,脚本支持模糊关键词输入,并自动选择最佳匹配项,还原了真实用户的搜索行为。
  10. 支付网关无缝衔接

    • 支付页检测:脚本能够智能识别 OnlinePayment.aspx 支付页面,并在此时自动停止自动化流程,将控制权平滑移交给用户进行敏感的支付操作,确保资金安全。
    • 会话预热:在进入支付页前,脚本会确保所有前置 Session 状态均已正确提交,防止支付后因 Session 丢失导致的 "Payment Successful but Application Failed" 悲剧。
  11. 运行时状态持久化 (Runtime Persistence)

    • 跨页状态同步:利用 localStorage 存储运行时状态(如 whsValidated 标志位),即使在浏览器崩溃或手动刷新后,脚本也能准确恢复到上一次的执行步骤,而不会从头开始。
    • 配置热重载:支持在脚本运行过程中动态修改配置(如切换目标国家),脚本会即时响应变更,无需重启浏览器。

免责声明

本项目仅供学习和研究。后果自负。自动化操作可能导致账号被封禁或申请失败。作者不对因使用此工具而导致的任何后果承担责任。

About

新西兰打工度假签证(WHV)申请自动化辅助脚本|Automation script for New Zealand Working Holiday Visa (WHV) applications.

Topics

Resources

Stars

34 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors