You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium访问WhatsApp Web发送页部分有效手机号提示URL号码无效

可行解决方案

这个报错和号码是否真实注册WhatsApp无关,基本都是URL参数不符合校验规则、加载时序问题或风控限制导致,按以下顺序排查即可:

  • 首先修正号码格式:phone参数只接受纯数字串,必须包含正确的国家代码,不能带加号、空格、横杠、括号等特殊字符,不能带本地号码前缀0,不能带00开头的国际冠字。
    举个例子:中国手机号+86 138xxxx1234,合法传值是86138xxxx1234;英国本地号码07911 123456(国家代码44),合法传值是447911123456,传其他格式都会触发无效号码报错。
    可以在拼接URL前加一段通用清洗逻辑,提前处理所有格式异常:
    import re
    
    def format_whatsapp_number(phone_num):
        # 移除所有非数字字符
        num = re.sub(r'\D', '', str(phone_num))
        # 移除开头的00国际冠字
        if num.startswith('00'):
            num = num[2:]
        # 移除本地号码开头的前缀0
        elif num.startswith('0'):
            num = num[1:]
        return num
    
    cleaned_phone = format_whatsapp_number(x)
    driver.get(f'https://web.whatsapp.com/send?phone={cleaned_phone}')
    
  • 排除格式问题后仍报错的,先确认Selenium执行跳转的时机:必须等WhatsApp Web完全加载登录态、左侧聊天侧边栏渲染完成后再跳转,未加载完成时直接访问带参数的URL会偶发号码无效的误判。可以加显式等待控制时序:
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    
    # 等待登录态加载完成,最长等待30秒
    WebDriverWait(driver, 30).until(
        EC.presence_of_element_located((By.ID, 'pane-side'))
    )
    # 加载完成后再跳转目标聊天页
    driver.get(f'https://web.whatsapp.com/send?phone={cleaned_phone}')
    
  • 以上两步都无效的,检查是否触发风控:短时间高频跳转不同号码、账号未过新号冷启动期、目标号码设置了隐私权限禁止非联系人发起对话,都会返回无效号码提示。这种情况可以先把目标号码手动存为手机通讯录联系人,等待通讯录同步到Web端后再尝试跳转,同时控制操作频率,避免被限制功能。

内容的提问来源于stack exchange,提问作者Princeofcoding

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 16:54:36