title: “影刀RPA 医院挂号自动化预约抢号实战”date: 2026-07-01author: 林焱影刀RPA 医院挂号自动化预约抢号实战热门科室的挂号名额每天早上7点放出几分钟就被抢光。手机盯着刷太累还不一定抢得到。用影刀自动监控放号第一时间抢到号亲测有效。什么情况用什么适合用的场景热门专家号放号后几分钟内被抢光需要定期复诊的慢性病患者每次都要抢老人不会用手机预约家人代劳需要注意的点本方案适用于通过医院APP、微信公众号、支付宝小程序预约的情况如果医院只支持电话挂号需要换其他思路必须在本人实名注册的账号下操作不要用来帮他人代抢倒卖怎么做方法1微信公众号挂号自动化常见场景大多数三甲医院通过微信公众号提供预约服务。【影刀操作】新建流程「医院挂号监控」添加【打开应用】指令打开微信添加【搜索并打开公众号】指令公众号名称某某医院添加【点击】指令定位「预约挂号」菜单在循环中持续监控设置循环条件未挂号成功添加【等待】指令30秒避免过于频繁添加【刷新页面】或重新进入预约页添加【Python】指令检查号源状态importtime# 使用OCR或截图识别页面上的号源数量# 这里用截图关键词识别current_textyda.get_variable(page_text)# 从OCR获取的页面文本# 检查是否有可预约号源available_keywords[有号,可预约,剩余,余号]unavailable_keywords[已约满,无号,暂停,停诊]is_availableany(kincurrent_textforkinavailable_keywords)is_unavailableany(kincurrent_textforkinunavailable_keywords)ifis_availableandnotis_unavailable:print(发现可预约号源立即预约)yda.set_variable(has_slot,True)else:print(f暂无号源继续监控...{time.strftime(%H:%M:%S)})yda.set_variable(has_slot,False)添加【条件判断】指令判断条件变量has_slot等于 True如果为真进入预约流程预约流程找到号源后添加【点击】指令点击可预约的时间段添加【点击】指令选择就诊人添加【点击】指令确认预约添加【截图】指令保存预约成功截图添加【Python】指令发送通知importrequests# 发送企微/钉钉通知webhook_urlyour_webhook_urlpayload{msgtype:text,text:{content:f【挂号成功】已成功预约某某医院请准时就诊预约截图已保存。}}requests.post(webhook_url,jsonpayload)print(挂号通知已发送)方法2医院官方App通过ADB操作部分医院只有App支持预约用ADB驱动手机。【影刀操作】添加【Python】指令ADB操作importsubprocessimporttimedefadb_tap(x,y):subprocess.run([adb,shell,input,tap,str(x),str(y)])time.sleep(0.5)defadb_screenshot(path):subprocess.run([adb,shell,screencap,-p,/sdcard/screen.png])subprocess.run([adb,pull,/sdcard/screen.png,path])deflaunch_app(package_name):subprocess.run([adb,shell,monkey,-p,package_name,-c,android.intent.category.LAUNCHER,1])time.sleep(3)# 打开医院App需要先找到包名# 包名查找方式adb shell pm list packages | grep hospitallaunch_app(com.example.hospital)# 截图分析界面adb_screenshot(rC:\截图\hospital_main.png)print(App已启动截图保存成功)方法3调用医院API有技术含量但最稳部分医院有公开的预约API抓包后直接调用。【影刀操作】添加【Python】指令监控号源并预约importrequestsimporttimeimportjson# 从抓包获取的API信息headers{Authorization:Bearer your_token,Content-Type:application/json,User-Agent:HospitalApp/3.2.1}# 查询某科室某日的号源defcheck_available_slots(dept_id,doctor_id,date_str):resprequests.get(fhttps://api.hospital.com/appointment/slots,headersheaders,params{deptId:dept_id,doctorId:doctor_id,date:date_str})dataresp.json()returndata.get(data,{}).get(slots,[])# 预约某个时间段defmake_appointment(slot_id,patient_id):resprequests.post(https://api.hospital.com/appointment/create,headersheaders,json{slotId:slot_id,patientId:patient_id})resultresp.json()returnresult.get(code)200# 持续监控dept_id1001# 内分泌科doctor_id2001# 专家IDpatient_id3001# 就诊人IDtarget_date2024-07-01whileTrue:slotscheck_available_slots(dept_id,doctor_id,target_date)available[sforsinslotsifs[status]available]ifavailable:slotavailable[0]successmake_appointment(slot[id],patient_id)ifsuccess:print(f预约成功时间段{slot[time]})breakelse:print(预约失败可能被他人抢先继续监控)else:print(f暂无号源10秒后重试...{time.strftime(%H:%M:%S)})time.sleep(10)有什么坑坑1网络延迟导致抢号失败放号瞬间大量人同时请求自己的请求排在后面号已被抢完。解决方法提前1分钟启动流程在放号时间点前后密集请求每2秒查一次。坑2预约验证码预约时需要输入手机验证码自动化无法处理。解决方法提前登录好账号保存登录态。预约确认步骤在需要验证码时发手机通知人工介入。坑3Token过期长时间监控登录Token过期查询接口开始返回401。解决方法每隔1小时刷新一次Token或者在接到401时自动重新登录。坑4界面更新导致元素位置变化医院App更新后按钮位置变了ADB坐标不对点击失效。解决方法不用固定坐标改用OCR识别按钮文字后再点击。总结挂号自动化的核心是持续监控号源状态 → 发现可约立刻抢 → 成功后通知本人。用API是最稳的方式其次是微信公众号UI自动化ADB作为兜底。重点是处理好登录态维持和放号时间的密集轮询。