求助:如何为Python Selenium开发的VFS Global签证预约机器人实现自动填写短信验证码
求助:如何为Python Selenium开发的VFS Global签证预约机器人实现自动填写短信验证码
Hey Enes, 太懂你这种卡壳好几天的烦躁了——VFS的验证码步骤简直是自动化预约的拦路虎。既然你只能用土耳其手机号,下面这些贴合你场景的实用方案可以试试:
方法1:通过ADB读取安卓手机短信
如果你用的是安卓手机,这个方法最直接,能直接从设备里拉取短信:
- 先在手机上开启USB调试(得先解锁开发者选项——通常在设置>关于手机里连续点击版本号7次就能激活)。
- 在电脑上安装ADB工具,确保电脑能通过USB识别你的手机。
- 用Python的
subprocess模块执行ADB命令获取VFS的短信,再用正则提取验证码:
import subprocess import re def get_vfs_verification_code(): # 执行ADB命令获取VFS相关的收件箱短信 adb_result = subprocess.check_output([ 'adb', 'shell', 'content', 'query', '--uri', 'content://sms/inbox', '--projection', 'body', '--where', "address='VFS'" ]).decode('utf-8') # 提取6位验证码(如果VFS用的是其他长度,调整正则即可) code_match = re.search(r'\b\d{6}\b', adb_result) if code_match: return code_match.group() return None
在Selenium脚本里请求验证码后,调用这个函数拿到验证码,再填入输入框就行。
方法2:用短信转发APP同步验证码到可访问服务
不想一直插USB的话,这个方案更灵活:
- 在安卓手机上装一个短信转发APP(比如应用商店里的「短信转发器」这类工具)。
- 设置转发规则:收到VFS的短信时,自动转发到你的Telegram机器人或者邮箱。
- 用Python拉取转发过来的验证码:
- Telegram机器人:先通过@BotFather创建一个机器人,再用
python-telegram-bot库监听消息提取验证码:from telegram import Update from telegram.ext import ApplicationBuilder, ContextTypes, MessageHandler, filters import re import asyncio vfs_code = None async def handle_new_message(update: Update, context: ContextTypes.DEFAULT_TYPE): global vfs_code message_text = update.message.text if "VFS" in message_text: code_match = re.search(r'\b\d{6}\b', message_text) if code_match: vfs_code = code_match.group() def fetch_vfs_code(): global vfs_code app = ApplicationBuilder().token("你的机器人Token").build() app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_new_message)) # 轮询15秒等待验证码消息 asyncio.run(app.run_polling(timeout=15)) return vfs_code - 邮箱:用Python的
imaplib库读取收件箱,从转发邮件的正文里提取验证码。
- Telegram机器人:先通过@BotFather创建一个机器人,再用
避坑提醒:别被VFS封账号/IP
VFS的反爬虫机制很严格,这些细节一定要注意:
- 操作之间加随机延迟,比如
time.sleep(random.uniform(2, 5)),模拟人类操作节奏。 - 用
undetected-chromedriver代替普通ChromeDriver,能避开Selenium检测。 - 别频繁刷新页面或重复提交请求,不然很快会被封IP或账号。
备注:内容来源于stack exchange,提问作者Enes Ünal
相关产品推荐
相关产品推荐

