自动推送消息时附带图片的一种实现方式
文章目录
- 前言
- 实现途径
- 图床与外链
- 七牛图床
- 备案流程
- 备案前的准备
- 开始备案
- 图床绑定域名
- pushplus发图片的实现
- 总结
前言
本文是之前总结 pushplus
使用的这篇文章 《借助第三方工具网站完成消息自动推送》 的后续,当时说使用pushplus的微信公众号渠道不允许直接发图片,但是可以将图片链接放到 image 标签中,这就要求我们必须要有一个图床,今天也是从这里开始。
实现途径
注意:请勿使用base64编码的方式把本地图片放到内容中,您可以将本地的图片上传到七牛云等云存储空间上来获取图片的外链地址。
这段内容来自pushplus官网,限制了直接发送图片的方法,并给出了使用图片外链的建议,实现代码非常简单,示例如下:
import requests
def post_wechat_msg(token):
url = 'http://www.pushplus.plus/send'
new_json = {
"token": token,
"title": "图片示例",
"content": "content":"这是一张图片<br/><img src='http://www.pushplus.plus/doc/img/push.png' />",
"topic": "9caigroup"
}
result = requests.post(url, json=new_json)
代码量非常的少,想发别图片就直接修改img标签中的内容就可以了,问题是怎么获取我们图片的外链。
图床与外链
如果你没听说过这两个词说明你对建站、发文等了解的比较少,不过也没有关系,这两个词很好理解
图床:就是放置图片的床,可以理解为图片的仓库,里面存储了很多图片
外链:就是访问图床里图片的一个链接,可以通过一个网址读取到想要的图片
以上面代码中的例子来看,http://www.pushplus.plus/doc/img/push.png
就是图片的外链,图片push.png
被放在 http://www.pushplus.plus/doc/img/
这个“图床”下面。
如果没有自己创建网站或者跨平台转发博文的经历,可能不太理解图床有啥用,我举个例子试着说明一下,假如你在A平台发了一篇技术文章,在文章中需要一些图片来丰富文章内容,你可以把这些图片在A平台的文章中上传。同时你想在另一B平台上也同步这篇文章,此时把A平台上这篇文章完全复制过去是不行的,因为其中的图片是在A平台上传的,A平台作为这些图片的图床一般会给图片加防盗链,这些图片链接复制到B平台上是显示不出来的,这也是为什么之前的新浪博客图片加了防盗链以后,很多平台上的文章图片都挂了的原因。
现在有一种实现方式就是自己建一个图床,获取得到图片链接就是固定的,也可以限制可以在域名下显示,这样同一篇文章无论是A平台,还是B平台都引用自己图床里的图片,文章同步就方便了很多,但是因为建立自己的图床功能单一,没有cdn加速,维护成本较高,所以一般使用第三方的图床服务,我只用过七牛和Github这两个图床,不过Github有时不太稳定,有需求可以按自己的喜好来选择。
七牛图床
说起七牛我用的还比较早,大概在2017年左右就用过了,当时建了一个静态的小破站,需要引用一些图片资源,就了解到了图床与七牛,免费提供10个G的空间,同时可以获取外链,使用比较方便,图片更新有一套方便的API,已经过去5年了,我前两天使用之前的脚本更新时发现还能用,说明还是比较稳定的。
后来出了一个事情导致我放弃了七牛,转身选择了Github图床。这件事就是七牛的规则调整,曾经使用的外链全都过期,要求必须绑定备案过的域名才能使用,当时替换了文章中所有的图片链接,同时兴冲冲的买了一个域名,结果只有域名是不能备案的,必须还要买服务器,各种要求晕晕乎乎的一直没太弄懂,申请了几次的公安备案也因为资料不全未审核未通过,最后无奈放弃了。
1、测试域名有使用限制,在创建空间的时候自动分配,到期30天会自动回收,因此建议您绑定自己的已备案域名
2、根据工信部的有关规定,国内接入cdn服务,域名必须要完成备案
这个是七牛官方给出的解释,起初我认为想要达到这个要求完全不用每个使用者绑定自己的域名,其实这些要求无非就是想让cdn使用者对自己上传和分享的资源负责,禁止传播非法内容,这个要求本身是好的,绑定了自己备案的域名如果出现非法内容,可以立马找到使用者,可是不仅仅只有绑定自己域名这一条实现方式。
要求七牛给每个使用者分配一个1级域名不太现实,但是可以做成主域名备案,然后给每个使用者分配二级、甚至三级域名,其实这就是一开始提供的测试域名,使用这些域名分享资源的用户要求必须在平台实名,这样再出现非法内容的时候可以定位到个人,也能达到监管的目的,可是为啥平台放弃了测试域名的长期使用,反而要求每个使用者绑定自己域名呢?
最近和七牛的工程师反复沟通了解到,其实分配给用户的测试域名是合规的,因为它的主域名肯定完成了备案,但是因为有些用户违规使用,这就对这个主域名造成了影响,一些产品可以和社交软件因为该域名分享的图片资源出现过非法内容,可能对这个域名的资源自动屏蔽,这就对正常用户的使用造成了影响,这也是一个平台发展壮大之后必须面临的问题,林子大了什么鸟都有。
所以七牛把原来提供的域名被定义为测试域名,给30天的使用期限,仅用于调通功能流程,到期自动回收,即使被一些平台限制了也没什么关系,只要确定后续要继续使用,绑定自己的域名就行了,违规使用的用户的不会影响到其他人。
所以我觉的这件事挺无奈的,如果可以一直使用测试域名,对于使用者无疑是很方便的,对于平台方也降低了用户门槛,便于产品的推广,但是这些美好的愿望总因为一些“极个别人”无法实现了,我们只能接受现实,采用目前这种方案。
备案流程
因为最近想要在发送通知消息中增加图片,所以不得不再次使用图床了,你问我为啥不用Github的图床,那是因为微信把它给屏蔽用不了了(捂脸),所以我不得不把目光又转回七牛,经过不懈努力,终于把绑定域名的事情搞定了,记录一下,希望能帮助到有同样需求的人。
备案前的准备
- 购买一个域名
- 购买一台云服务器
- 搭建好个人网站
- 身份证正反照片
- 手持身份证的照片
开始备案
购买域名推荐阿里云和腾讯云,因为后续备案的流程会有通知提醒,可以免去很多查找资料的麻烦,两个平台我都买过域名,但是只在腾讯云上完成过备案,所有后续的流程也是以腾讯云备案为基础的。
购买域名需要先实名,腾讯云上购买之前需要先提交实名模板,审核通过后才能买域名,域名的购买和网上购物没啥区别,挑选自己喜欢的加到购物车,然后付款就可以了,购买成功后会有站内信提醒,通知后续的备案流程,这也是比较方便的地方。
买完域名要买服务器,其实备案不仅仅是对一个域名的备案,而是对这个域名提供的服务内容进行备案,而要提供内容和服务就需要有一台带有外网IP的服务器,然后将域名和服务器进行绑定,统一写到备案内容中,这样你提供的服务和提供服务的这个域名就登记在册了。
腾讯云买服务器同样跟买菜一样,如果只是为了备案,买一台最低配的就可以了,然后再上面搭建一个简易网站,就可以后续的备案流程了,备案的第一步叫管局备案,也叫工信部备案,也是我们常听说的ICP备案。
在提交备案资料后,腾讯云会先进行审核,其中要注意规避游戏内容,提及游戏的网站很容易被退回,不同地区的管局对网站内容要求不一样,比如北京地区现在不允许提交个人博客类网站了,这个再提交前先看一下不同地区的限制,手机号和紧急电话必须时刻保持畅通,提交资料后3-4天会有电话确认,按要求修改好审核通过后就会被提交到管局审核。
提交管局审核之前,要关停域名解析,在审核通过前不允许域名到服务器的解析,提交之后提示20个工作日会收到结果,马上会收到一条短信验证通知,按要求回复后只要等着就可以了,我是在第7天收到的审核通过的通知,速度还是比较快的。
当ICP备案成功后会得到一个 【京/冀/沪 ICP 备 xxxxxxx 号 - 1】的网站身份证,之后腾讯云站内信会通知在30个工作日内完成公安备案,这是不同于ICP备案的另一种备案流程,这一步要求的内容会比较多,不过好在大平台这些基础信息都是提供好的,目前已经按照流程提交了申请,正在等待审核中,希望不要再出什么差错。
图床绑定域名
这一步在完成ICP备案通过之后就可以进行了,参考 官方文档 - 如何配置域名的 CNAME 操作就可以了,注意二级域名的命名和使用,步骤并不复杂,我因为拼写错误还耽误了一些时间,绑定成功之后就可以愉快的使用了。
pushplus发图片的实现
- 申请一个七牛图床账号
- 将图片上传到七牛平台
- 复制图片的外链
- 临时使用可以使用测试域名
- 长期使用需要绑定备案域名
- 实名购买一个域名
- 购买云服务器,搭建一个网站
- 提交资料,完成ICP备案
- 在七牛绑定备案好的域名
- 编写发送图片的代码,在img标签中引用图床中图片的外链
总结
- 使用
pushplus
发送微信通知消息时可以使用img标签引用图床外链的方式发送包含图片的消息 - 图床可以选择
pushplus
官方推荐的七牛,可以暂时使用测试域名来提供外链,想长久使用可以绑定自己已经备案的域名 - 备案域名时需要先买一个域名和云服务器,推荐在阿里云和腾讯云上购买,大平台上购买后的续通知提醒和备案流程会非常顺畅
- 对于非盈利性的网站备案需要有ICP备案和公安备案,ICP备案购买域名后平台会帮助进行,而公安备案中需要的信息平台方也会提供
神州归家,腾飞中华,眼中所见都是大事,逐渐接受自身的平庸,一个普普通通的人,想要过一段平凡的生活,在柴米油盐中慢慢步入黄昏~