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

获取验证码是很多应用和网站验证用户身份的一种方式。而在开发过程中,我们可能需要通过第三方服务获得验证码,以方便我们的开发和测试。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 URL
api_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 验证码

以上是一个完整的获取短信验证码的代码实现。举个例子,如果你想通过 Python 获取 Telegram 的验证码,只需要将代码示例中的 service 参数修改为 “tg”,然后按照上述流程进行即可。以下是修改后的代码:

import requests

# SMSActivateAPI的API URL
api_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 URL
api_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)

以上就是 Python 通过 SMSActivateAPI 获取验证码的完整攻略,希望对你有所帮助。

营销型网站