python获取手机验证码
时间: 2023-11-10 18:48:59 浏览: 60
获取手机验证码通常需要与短信服务提供商合作,使用其提供的 API 接口来实现。一些主流的短信服务提供商有阿里云、腾讯云、云片等。以下是使用阿里云短信服务的 Python 示例代码:
```python
import hmac
import hashlib
import base64
import urllib.parse
import requests
access_key_id = "your_access_key_id"
access_key_secret = "your_access_key_secret"
sign_name = "your_sign_name"
template_code = "your_template_code"
phone_number = "your_phone_number"
# 生成签名
def sign(access_key_secret, parameters):
sorted_params = sorted(parameters.items(), key=lambda x: x[0])
canonicalized_query_string = ''
for (k, v) in sorted_params:
canonicalized_query_string += '&' + percent_encode(k) + '=' + percent_encode(v)
string_to_sign = 'GET&%2F&' + percent_encode(canonicalized_query_string[1:])
h = hmac.new(bytes(access_key_secret + "&", encoding='utf-8'), bytes(string_to_sign, encoding='utf-8'), hashlib.sha1)
signature = base64.b64encode(h.digest()).decode('utf-8')
return signature
# 对参数进行 URL 编码
def percent_encode(str):
res = urllib.parse.quote(str, '')
res = res.replace('+', '%20')
res = res.replace('*', '%2A')
res = res.replace('%7E', '~')
return res
# 发送短信验证码
def send_sms(access_key_id, access_key_secret, sign_name, template_code, phone_number):
parameters = {
'Action': 'SendSms',
'Format': 'JSON',
'Version': '2017-05-25',
'AccessKeyId': access_key_id,
'SignatureMethod': 'HMAC-SHA1',
'Timestamp': time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()),
'SignatureVersion': '1.0',
'SignatureNonce': str(uuid.uuid1()),
'RegionId': 'cn-hangzhou',
'PhoneNumbers': phone_number,
'SignName': sign_name,
'TemplateCode': template_code,
'TemplateParam': '{"code":"123456"}' # 验证码内容
}
signature = sign(access_key_secret, parameters)
parameters['Signature'] = signature
r = requests.get(url="http://dysmsapi.aliyuncs.com", params=parameters)
print(r.text)
# 调用发送短信验证码函数
send_sms(access_key_id, access_key_secret, sign_name, template_code, phone_number)
```
请注意,以上示例代码仅演示了如何使用阿里云短信服务发送验证码,实际上使用其他短信服务提供商的接口可能会有所不同。同时,验证码发送也需要满足一些法律法规的要求,如用户同意条款、不得发送违法信息等。
阅读全文