首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >云短信SDK配置代理方案实践

云短信SDK配置代理方案实践

原创
作者头像
云通信组之虎-小明
修改于 2021-07-16 08:26:36
修改于 2021-07-16 08:26:36
3.6K00
代码可运行
举报
运行总次数:0
代码可运行

背景介绍

图1-1

部分客户公司有公网访问白名单限制,而腾讯云短信服务所使用云API3.0接口后端IP无法固定,因此需要经过代理,开发者服务器需要通过代理服务器将请求发送给腾讯云短信API接口,腾讯云短信服务也能通过http代理将返回包发送给开发者服务器。

方案介绍

准备一台放置在DMZ zone的代理服务器(既能和开发者服务器通信,又能和腾讯云短信服务器通信的机器),搭建一个http代理服务。当需要调用腾讯云服务器相关接口时,客户就可以通过代理的方式完成操作。

实施方案

准备工作:

开发者服务器:无法与腾讯云短信服务器通信(sms.tencentcloudapi.com) 192.168.204.128 A机

代理服务器:既能和开发者服务器通信,也能和腾讯云短信服务器通信 192.168.204.129 B机

A机:

B机:

A机搭建SDK环境(以pythonSDK为例)

python版本建议在2.7-3+,可以使用miniconda管理虚拟环境

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install tencentcloud-sdk-python

B机搭建代理服务(需要golang环境)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget https://golang.org/dl/go1.16.5.linux-amd64.tar.gz
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.16.5.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
go version

golang环境准备完毕后,编译代理软件gost

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com/ginuerzh/gost.git
cd gost/cmd/gost/
yum install gcc gcc+ -y
go build

会在当前目录得到一个可执行文件gost,开启代理服务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./gost -L :8080

A机编写测试发送短信脚本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*- coding: utf-8 -*-
from tencentcloud.common import credential
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
# 导入对应产品模块的client models。
from tencentcloud.sms.v20210111 import sms_client, models
# 导入可选配置类
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
try:
  # 必要步骤:
  # 实例化一个认证对象,入参需要传入腾讯云账户密钥对secretId,secretKey。
  # 这里采用的是从环境变量读取的方式,需要在环境变量中先设置这两个值。
  # 你也可以直接在代码中写死密钥对,但是小心不要将代码复制、上传或者分享给他人,
  # 以免泄露密钥对危及你的财产安全。
  # CAM密匙查询: https://console.cloud.tencent.com/cam/capi
  cred = credential.Credential("secretId", "secretKey")
  # cred = credential.Credential(
  #     os.environ.get(""),
  #     os.environ.get("")
  # )
   # 实例化一个http选项,可选的,没有特殊需求可以跳过。
   
  #无代理方式
  #httpProfile = HttpProfile()
  #代理方式
  #httpProfile = HttpProfile(proxy="http://192.168.204.129:8080/")

  httpProfile.reqMethod = "POST"  # post请求(默认为post请求)
  httpProfile.reqTimeout = 30    # 请求超时时间,单位为秒(默认60)
  httpProfile.endpoint = "sms.tencentcloudapi.com"  # 指定接入地域域名(默认就近接入)
   # 非必要步骤:
  # 实例化一个客户端配置对象,可以指定超时时间等配置
  clientProfile = ClientProfile()
  clientProfile.signMethod = "TC3-HMAC-SHA256"  # 指定签名算法
  clientProfile.language = "en-US"
  clientProfile.httpProfile = httpProfile
   # 实例化要请求产品(以sms为例)的client对象
  # 第二个参数是地域信息,可以直接填写字符串ap-guangzhou,或者引用预设的常量
  client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile)
   # 实例化一个请求对象,根据调用的接口和实际情况,可以进一步设置请求参数
  # 你可以直接查询SDK源码确定SendSmsRequest有哪些属性可以设置
  # 属性可能是基本类型,也可能引用了另一个数据结构
  # 推荐使用IDE进行开发,可以方便的跳转查阅各个接口和数据结构的文档说明
  req = models.SendSmsRequest()
   # 基本类型的设置:
  # SDK采用的是指针风格指定参数,即使对于基本类型你也需要用指针来对参数赋值。
  # SDK提供对基本类型的指针引用封装函数
  # 帮助链接:
  # 短信控制台: https://console.cloud.tencent.com/smsv2
  # sms helper: https://cloud.tencent.com/document/product/382/3773
   # 短信应用ID: 短信SdkAppId在 [短信控制台] 添加应用后生成的实际SdkAppId,示例如1400006666
  req.SmsSdkAppId = "1400787878"
  # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 [短信控制台] 查看
  req.SignName = "xxx"
  # 短信码号扩展号: 默认未开通,如需开通请联系 [sms helper]
  req.ExtendCode = ""
  # 用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回
  req.SessionContext = "xxx"
  # 国际/港澳台短信 senderid: 国内短信填空,默认未开通,如需开通请联系 [sms helper]
  req.SenderId = ""
  # 下发手机号码,采用 E.164 标准,+[国家或地区码][手机号]
  # 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
  req.PhoneNumberSet = ["+8613711112222"]
  # 模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看
  req.TemplateId = "449739"
  # 模板参数: 若无模板参数,则设置为空
  req.TemplateParamSet = ["666"]
    # 通过client对象调用DescribeInstances方法发起请求。注意请求方法名与请求对象是对应的。
  # 返回的resp是一个DescribeInstancesResponse类的实例,与请求对象对应。
  resp = client.SendSms(req)
   # 输出json格式的字符串回包
  print(resp.to_json_string(indent=2))
except TencentCloudSDKException as err:
  print(err)

测试时注意修改

按需取消注释。

测试结果

采用非代理方式执行:

报错,因为和腾讯云短信服务接口网络不通,所以这里请求失败了

采用代理方式:

短信发送成功。

结论

如遇到内网请求云短信API接口不通的情况,使用HTTP代理是可以满足访问需求。这里需要注意的是,增加代理可能会增加一定的延迟并存在单点故障可能,所以用户需要小心使用代理并实时监控代理的健康状况。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
腾讯云短信服务发送验证码
  由于阿里云需要备案过的域名或者已上线的APP才能申请短信签名,我的域名正在备案,申请还没通过,这里用腾讯云实现短信验证码的发送功能。腾讯云只需要你有个公众号就能申请短信签名,而且免费赠送200条。
别团等shy哥发育
2023/02/25
9.3K0
腾讯云短信服务发送验证码
SpringBoot项目中快速集成腾讯云短信SDK实现手机验证码功能
大家春节好!我是程序员阿福,今天过年的日子祝大家在新的一年里健康平安、步步高升、虎年大吉大利、财源滚滚! 今天分享一篇简短一点的文章,希望在将来工作中需要的时候能够用得到,如果将来工作中需要实现短信验证码功能时可以打开我的公众号并翻到这篇文章再仔细参考我的实现思路,那么笔者分享这篇文章的用意也就达到了。
用户3587585
2022/03/09
4.8K1
SpringBoot项目中快速集成腾讯云短信SDK实现手机验证码功能
cat监控实现腾讯云短信告警
CAT(Central Application Tracking),是基于 Java 开发的分布式实时监控系统。CAT在基础存储、高性能通信、大规模在线访问、服务治理、实时监控、容器化及集群智能调度等领域提供业界领先的、统一的解决方案。CAT 目前在美团的产品定位是应用层的统一监控组件。
GavinWang
2020/05/28
11.6K0
轻松集成腾讯云短信服务实现短信发送(Java实现)
不论是阿里云还是腾讯云,要想在网站上实现短信发送功能,首先得保证你的网站域名是通过备案的,因为短信签名是需要用到备案过的域名截图,所以域名通过了,申请很快就会审批成功了。 (至于备案的话,需要你先购买域名和服务器,然后提交材料信息,他们那边会打电话跟你核实下基本信息,比如你申请的域名地址,这个网站用途是什么等等,然后初审通过后,等个五六天就行)
呆呆
2021/10/09
7.1K0
SpringBoot 集成腾讯云短信服务
开通腾讯云短信服务 注册腾讯云 个人实名认证 进入到控制台,在云产品中找到短信 默认是没有开通的,阅读服务协议后,点击开始接入 目前来说,只要实名认证过的,直接就可以开通短信服务 这个时候,就可以查看短信控制面板了 测试短信发送 快速开始 用自己的微信去注册一个公众号,我这边目前已经有公众号,所以使用公众号就可以使用短信服务 创建短信模板 接下来耐心等待,基本上1小时内就行了,还是比较快的~ 审核短信 初次使用,会有100条免费
风间影月
2021/12/18
13.4K0
SpringBoot 集成腾讯云短信服务
【笔记整理】SpringBoot集成腾讯云短信
前言 记录一下最近使用SpringBoot基础腾讯云里的短信产品功能的体验。 1、腾讯云申请开通短信服务。 2、配置短信内容:分别创建签名、模板和群发短信。 3、使用SpringBoot工程集成测试。
pbinlog
2022/04/18
8.9K0
java对接腾讯云短信,通过api发送短信
腾讯云短信(Short Message Service,SMS)沉淀腾讯十多年短信服务技术和经验,为 QQ、微信等亿级平台和10万+客户提供快速灵活接入的高质量的国内短信与国际/港澳台短信服务,具有非常高的稳定性。本文主要介绍如何使用Java SDk进行和腾讯云短信平台的对接,对接目标是在Java应用程序调用腾讯云短信的接口向目标手机号发送短信。
方志朋
2019/12/10
59.9K1
腾讯云短信服务实现 Java 发送手机验证码(SpringBoot+Redis 实现)
前置:需要腾讯云的账号,后期授权需要,不需要买云服务器,有需要的可以购买短信套餐(几块钱)
RAIN7
2022/08/23
3.6K0
腾讯云短信服务实现 Java 发送手机验证码(SpringBoot+Redis 实现)
SpringBoot 开发案例之接入腾讯云短信
腾讯云短信(Short Message Service,SMS)沉淀腾讯十多年短信服务技术和经验,为 QQ、微信等亿级平台和10万+客户提供快速灵活接入的高质量的国内短信与国际/港澳台短信服务。
小柒2012
2020/11/05
4.2K1
Fdog系列(三):使用腾讯云短信接口发送短信,数据库写入,部署到服务器,web收尾篇。
Fdog系列(一):思来想去,不如写一个聊天软件,那就从仿QQ注册页面开始吧。 Fdog系列(二):html写完注册页面之后怎么办,用java写后台响应呀。
花狗Fdog
2021/05/06
2.6K0
使用云函数构建短信验证码服务的案例
通过手机短信发送验证码,是最普遍、最安全验证用户真实身份的方式。目前,短信验证码广泛应用于用户注册、密码找回、登录保护、身份认证、随机密码、交易确认等应用场景。
haimingli
2020/12/29
4.1K0
serverless+腾讯云短信实现短信验证码登录
传统开发协作流程(多角色参与): 1.后台开发:短信接口发送短信API、校验短信验证码是否有效API、存储用户验证状态 2.运维开发:接口部署,容灾 3.前端(客户端)开发:前端逻辑开发(调用接口,查询状态等)
腾讯即时通信IM
2020/05/18
18.1K1
serverless+腾讯云短信实现短信验证码登录
Springboot整合腾讯云短信实现系统短信登录与注册
一个登录模块,无非就是一个鉴权。现代社会,大家手机不离身,使用手机进行鉴权,并完成后续单点登录,无疑是一个不错的方法。
Mintimate
2022/03/10
8K0
Springboot整合腾讯云短信实现系统短信登录与注册
从零开始使用腾讯云Java SDK
腾讯云开发者工具套件(SDK)是云 API 3.0 平台的配套工具。本文以 Java SDK 为例,介绍如何使用、调试并接入腾讯云产品 API。
zhijiehou
2021/06/25
13.4K3
云开发系列(一):实现验证码登录
终端作为所有用户的真正使用设备,终端开发者也是离用户最近的开发人员,它肩负着将后方提供的一个又一个独立服务整合为体验良好的产品的使命。面对不同的场景,所挑选的后方服务不同,实现方法也不同。
楚歌
2020/11/22
3.8K1
【serverless实战】利用腾讯云·云开发实现短信验证码
最近支持了云开发的自定义短信验证码登录功能。第一次体会到利用云开发自身能力,开箱即用的快感。所有的精力集中在业务逻辑和数据库设计上,不用花费过多的精力浪费在运维上。
心谭博客
2020/05/06
3.7K0
腾讯云一句话识别接口调用
使用主账号登录语音识别控制台(https://console.cloud.tencent.com/asr),开通语音识别服务。
向东平
2025/05/09
4350
【腾讯云AI绘画】与AI绘画和解,和AI绘画共成长
六月份的时候,买了腾讯AI绘画的资源包。可当通过API去使用AI绘画后,我顿时就被整破防了,于是写了一篇文章,算是无声控诉。被腾讯云AI绘画整破防了!
叫我阿柒啊
2023/12/12
1K3
【腾讯云AI绘画】与AI绘画和解,和AI绘画共成长
利用云服务限时免费调用满血版DeepSeek-V3/R1:671b教程(非本地部署),从此告别“服务器繁忙,请稍后再试”
作者:watermelo37 涉及领域:Vue、SpingBoot、Docker、LLM、python等 --------------------------------------------------------------------- 温柔地对待温柔的人,包容的三观就是最大的温柔。 ---------------------------------------------------------------------
watermelo37
2025/02/14
5600
利用云服务限时免费调用满血版DeepSeek-V3/R1:671b教程(非本地部署),从此告别“服务器繁忙,请稍后再试”
腾讯云API弹性公网IP踩坑
由于自己管理的云服务器数量比较多,时不时需要更换IP,在管理台上一下下点击,实在浪费时间,于是就想到了通过API调用的方式,将更换IP一系列动作,全部集成到Python代码里面,实现一行命令,完成IP更换,由于人懒,就先
用户2174879
2018/10/23
33.2K1
腾讯云API弹性公网IP踩坑
推荐阅读
相关推荐
腾讯云短信服务发送验证码
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档