python 通过SMSActivateAPI 获取验证码的步骤

发布时间:2026-09-28 19:09:52 浏览次数:2

获取验证码是很多应用和网站验证用户身份的一种方式。而在开发过程中,我们可能需要通过第三方服务获得验证码,以方便我们的开发和测试。SMSActivateAPI 是一个提供短信服务的第三方接口,在 Python 中可以通过 API 来获取验证码。这里将详细讲解如何使用 Python 通过 SMSActivateAPI 获取验证码的步骤。

步骤一:注册SMSActivateAPI的账户

首先,你需要先注册 SMSActivateAPI 的账户并获取 API Key。你可以访问 SMSActivateAPI 的网站(https://sms-activate.ru/)注册账户,然后获取自己的 API Key。

步骤二:安装 requests 库

我们将使用 Python 的 requests 库来进行网络请求,因此需要先安装 requests 库。在命令行中运行以下命令来安装 requests:

pip install requests

步骤三:编写代码

在代码中,我们需要向 SMSActivateAPI 发送一个 “getNumber” 请求来获取一个手机号码,然后再向其发送 “setStatus” 请求将其设置为已完成,从而释放该手机号码。

在这个过程中,我们会拿到一个由 SMSActivateAPI 生成的 ID,可以通过 “getStatus” 请求来检查该手机号码是否有可用短信。如果有,就可以通过 “getMessage” 请求获取到验证码。

下面是相关代码示例:

import requests# SMSActivateAPI的API URLapi_url = "http://sms-activate.ru/stubs/handler_api.php"# 先获取一个可用手机号码def get_phone_number():    params = {        "api_key": "你的API Key",        "action": "getNumber",        "service": "tg",        "country": "jp"    }    response = requests.get(api_url, params=params)    response_text = response.text    if 'ACCESS_NUMBER' in response_text:        phone_number = response_text.split(':')[1]        # 获得的phone_number格式为 "+1234567890"        return phone_number    else:        raise Exception(response_text)# 发送“setStatus”请求,已经使用完该手机号码后需要将其设置为已完成def set_status(phone_id):    params = {        "api_key": "你的API Key",        "action": "setStatus",        "id": phone_id,        "status": "6"  # 6 代表已完成    }    response = requests.get(api_url, params=params)    response_text = response.text    if 'ACCESS_READY' in response_text:        return True    else:        raise Exception(response_text)# 发送“getStatus”请求,检查该手机号码是否有可用短信def get_status(phone_id):    params = {        "api_key": "你的API Key",        "action": "getStatus",        "id": phone_id    }    response = requests.get(api_url, params=params)    response_text = response.text    if 'STATUS_OK' in response_text:        return True    elif 'STATUS_WAIT_CODE' in response_text:        return False    else:        raise Exception(response_text)# 发送“getMessage”请求,获得验证码def get_message(phone_id):    params = {        "api_key": "你的API Key",        "action": "getMessage",        "id": phone_id    }    response = requests.get(api_url, params=params)    response_text = response.text    if 'STATUS_OK' in response_text:        message_text = response_text.split(':')[1]        return message_text    elif 'STATUS_WAIT_CODE' in response_text:        return False    else:        raise Exception(response_text)# 主程序if __name__ == '__main__':    phone_number = get_phone_number()    print("获得的手机号码是:" + phone_number)    # 此处可以向使用该手机号码的服务发送短信验证码    print("正在设置手机号码已完成...")    set_status(phone_number)    print("正在检查是否获取到短信验证码...")    phone_id = phone_number[1:]    message_received = False    while not message_received:        message_received = get_status(phone_id)    print("正在获取短信验证码...")    message_text = get_message(phone_id)    print("获得的短信验证码是:" + message_text)    # 程序结束后需要将手机号码设置为已完成    set_status(phone_number)

示例一:用 Python 获取 Telegram 验证码

import requests# SMSActivateAPI的API URLapi_url = "http://sms-activate.ru/stubs/handler_api.php"# 先获取一个可用手机号码def get_phone_number():    params = {        "api_key": "你的API Key",        "action": "getNumber",        "service": "tg",        "country": "jp"    }    response = requests.get(api_url, params=params)    response_text = response.text    if 'ACCESS_NUMBER' in response_text:        phone_number = response_text.split(':')[1]        # 获得的phone_number格式为 "+1234567890"        return phone_number    else:        raise Exception(response_text)# 发送“setStatus”请求,已经使用完该手机号码后需要将其设置为已完成def set_status(phone_id):    params = {        "api_key": "你的API Key",        "action": "setStatus",        "id": phone_id,        "status": "6"  # 6 代表已完成    }    response = requests.get(api_url, params=params)    response_text = response.text    if 'ACCESS_READY' in response_text:        return True    else:        raise Exception(response_text)# 发送“getStatus”请求,检查该手机号码是否有可用短信def get_status(phone_id):    params = {        "api_key": "你的API Key",        "action": "getStatus",        "id": phone_id    }    response = requests.get(api_url, params=params)    response_text = response.text    if 'STATUS_OK' in response_text:        return True    elif 'STATUS_WAIT_CODE' in response_text:        return False    else:        raise Exception(response_text)# 发送“getMessage”请求,获得验证码def get_message(phone_id):    params = {        "api_key": "你的API Key",        "action": "getMessage",        "id": phone_id    }    response = requests.get(api_url, params=params)    response_text = response.text    if 'STATUS_OK' in response_text:        message_text = response_text.split(':')[1]        return message_text    elif 'STATUS_WAIT_CODE' in response_text:        return False    else:        raise Exception(response_text)# 主程序if __name__ == '__main__':    phone_number = get_phone_number()    print("获得的手机号码是:" + phone_number)    # 此处可以向使用该手机号码的服务发送短信验证码    print("正在设置手机号码已完成...")    set_status(phone_number)    print("正在检查是否获取到短信验证码...")    phone_id = phone_number[1:]    message_received = False    while not message_received:        message_received = get_status(phone_id)    print("正在获取短信验证码...")    message_text = get_message(phone_id)    print("获得的短信验证码是:" + message_text)    # 程序结束后需要将手机号码设置为已完成    set_status(phone_number)

示例二:用 Python 获取Airbnb的验证码

此外,如果你想通过 Python 获取 Airbnb 的验证码,只需要将代码示例中的 service 参数修改为 “abn”,然后按照上述流程进行即可。以下是修改后的代码:

import requests# SMSActivateAPI的API URLapi_url = "http://sms-activate.ru/stubs/handler_api.php"# 先获取一个可用手机号码def get_phone_number():    params = {        "api_key": "你的API Key",        "action": "getNumber",        "service": "abn",        "country": "us"    }    response = requests.get(api_url, params=params)    response_text = response.text    if 'ACCESS_NUMBER' in response_text:        phone_number = response_text.split(':')[1]        # 获得的phone_number格式为 "+1234567890"        return phone_number    else:        raise Exception(response_text)# 发送“setStatus”请求,已经使用完该手机号码后需要将其设置为已完成def set_status(phone_id):    params = {        "api_key": "你的API Key",        "action": "setStatus",        "id": phone_id,        "status": "6"  # 6 代表已完成    }    response = requests.get(api_url, params=params)    response_text = response.text    if 'ACCESS_READY' in response_text:        return True    else:        raise Exception(response_text)# 发送“getStatus”请求,检查该手机号码是否有可用短信def get_status(phone_id):    params = {        "api_key": "你的API Key",        "action": "getStatus",        "id": phone_id    }    response = requests.get(api_url, params=params)    response_text = response.text    if 'STATUS_OK' in response_text:        return True    elif 'STATUS_WAIT_CODE' in response_text:        return False    else:        raise Exception(response_text)# 发送“getMessage”请求,获得验证码def get_message(phone_id):    params = {        "api_key": "你的API Key",        "action": "getMessage",        "id": phone_id    }    response = requests.get(api_url, params=params)    response_text = response.text    if 'STATUS_OK' in response_text:        message_text = response_text.split(':')[1]        return message_text    elif 'STATUS_WAIT_CODE' in response_text:        return False    else:        raise Exception(response_text)# 主程序if __name__ == '__main__':    phone_number = get_phone_number()    print("获得的手机号码是:" + phone_number)    # 此处可以向使用该手机号码的服务发送短信验证码    print("正在设置手机号码已完成...")    set_status(phone_number)    print("正在检查是否获取到短信验证码...")    phone_id = phone_number[1:]    message_received = False    while not message_received:        message_received = get_status(phone_id)    print("正在获取短信验证码...")    message_text = get_message(phone_id)    print("获得的短信验证码是:" + message_text)    # 程序结束后需要将手机号码设置为已完成    set_status(phone_number)
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477