0%

短信验证码

短信验证码

当今网站,为了防止,机器人非法注册,出现了,图片验证码, 短信验证码,。。。

今天就来讲一下,短信验证码的流程

这里以 阿里云为例,很多网站,都提供短信服务,API, 只需要SDK, 就可使用,开通服务即可,

短信验证码

一, 注册并实名制

1.1 创建一个阿里云账号,点击这里

1.2 实名认证:点击这里

1.3 绑定企业支付宝:点击绑定企业支付宝

二,开通短信服务

1602497737358

2.1 子账户(使用) 点击看子账号页面

1602504639969

2.2 进入控制台: 点击查看控制台

1602504695477

进行购买短信包

  1. 这里我们用python 为例, copy下来, 放到, demo中, 进行模块封装,方便进行调用,

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    # 推荐使用 pip 命令,安装阿里云SDK核心库:

    pip install aliyun-python-sdk-core




    #!/usr/bin/env python
    #coding=utf-8

    from aliyunsdkcore.client import AcsClient
    from aliyunsdkcore.request import CommonRequest

    def send_aliyun_msg()
    """

    :param phone_num: 手机号
    :param content: 短信码
    :return:
    """
    client = AcsClient('<accessKeyId>', '<accessSecret>', 'cn-hangzhou')

    request = CommonRequest(pthone_num, content)
    request.set_accept_format('json')
    request.set_domain('dysmsapi.aliyuncs.com')
    request.set_method('POST')
    request.set_protocol_type('https') # https | http
    request.set_version('2017-05-25')
    request.set_action_name('SendSms')

    request.add_query_param('RegionId', "cn-hangzhou")
    request.add_query_param ('PhoneNumbers', "%s" %phone_num)
    request.add_query_param ('SignName', "jk4716138")
    request.add_query_param ('TemplateCode', "SMS_167532197")
    request.add_query_param ('TemplateParam', "{\"code\":\"%s\"}" %content)


    response = client.do_action(request)
    # python2: print(response)
    print(str(response, encoding = 'utf-8'))

    if __name__ == "__main__":
    send_aliyun_msg()

  1. 在注册视图中, 我们进行调用,即可,

  2. 短信发送,属于,防止机器人非法注册,(短信一条 大约0.045元,自行测试即可)

图片验证码

七牛云做图床,Python上传图片

  1. 首先需要install 模块

    1.  pip3 install qiniu
       
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      83
      84
      85
      86
      87
      88

      2. ```python
      # -*- coding: utf-8 -*-
      # flake8: noqa
      from qiniu import Auth, put_file, etag, urlsafe_base64_encode
      import qiniu.config
      import sys
      import os
      import time
      import subprocess

      #-----------默认配置-----------
      # accessKey和secretkey是七牛的秘钥
      access_key = '七牛账号下查找'
      secret_key = '七牛账号下查找'
      # 存储空间
      bucket_name = 'noteimages'
      # 域名
      bucket_url = '存储空间的外链域名'

      # 格式
      img_suffix = ["jpg", "jpeg", "png", "bmp", "gif"]
      # 本地存放图片地址
      oldPath = '/Users/zwz/Desktop/md文件/mdImage'
      # 修改名字后存放在的新地址
      newPath = '/Users/zwz/Desktop/md文件/mdNewImage'
      # 生成结果文档
      result_file = '/Users/zwz/Desktop/result_file.txt'


      # 存放链接数组
      dataArr = []

      def rename(name):
      count = 0
      fileList = os.listdir(oldPath)# 该文件夹下所有的文件(包括文件夹)
      for files in fileList: #遍历所有的文件
      oldDir = os.path.join(oldPath, files) #原来的文件路径
      if os.path.isdir(oldDir): #如果是文件夹就跳过
      continue
      fileName = os.path.splitext(files)[0] #文件名
      fileType = os.path.splitext(files)[1] #文件扩展名
      if fileType == '.jpg' or fileType == '':
      fileType = '.png'
      timeString = time.strftime("$%Y-%m-%d$", time.localtime())
      #生成新的文件名字
      dataName = name + timeString + str(count) + fileType

      newDir = os.path.join(newPath, dataName) # 新的文件路径
      os.rename(oldDir, newDir)
      count += 1
      #链接添加到数组
      dataArr.append(upload_data(dataName,newDir))



      #上传文件到七牛, 返回链接地址
      def upload_data(newName, localfilePath):
      q = Auth(access_key, secret_key)
      # 上传到七牛后保存的文件名
      key = newName;
      # 生成上传 Token,可以指定过期时间等
      token = q.upload_token(bucket_name, key, 3600)
      # 要上传文件的本地路径
      localfile = localfilePath
      ret, info = put_file(token, key, localfile)
      return bucket_url + key


      def crateFile(dataList):
      with open(result_file, 'w+') as f:
      for data in dataList:
      # 如果是图片则生成图片的markdown格式引用
      if os.path.splitext(data)[1][1:] in img_suffix:
      f.write('![]('+data+')'+'\n')

      f.close()


      if __name__ == '__main__':

      #生成链接
      rename(input('请输入md文章标题: '))
      #写入文件
      crateFile(dataArr)
      #打开文件
      os.system('open '+ result_file)

------ 本文结束------

欢迎关注我的其它发布渠道