一个新闻邮件订阅项目
一个新闻邮件订阅小项目记录
最近一周,腾讯云搞活动,看云函数标准版只要1.04米,于是租了一年。
就那么放在那里也浪费,于是想着去做一个新闻邮件吧,正好每天可以早上起来看看新闻。
了解了一下各个新闻网站,新加坡联合早报算是公认的客观,于是便选择了此作为新闻来源。
用法
首先去news.wobisheng.top输入自己的邮箱,然后每天早上八点便可以收到新加坡联合早报的新闻推送了。
如果不想订阅了,可以点击下面的退订,然后输入邮箱退订。
如何实现的
基本构成
这个项目在云函数中包含了两个函数,一个web函数用于订阅以及退订的网站,一个事件函数用于每天早上8点发送邮件,在这背后还有一个小小的数据库用来存放订阅者的邮箱。
发送邮件
发送邮件的函数其实就是一个小小的爬虫,他在每天早上八点钟回去访问一遍新加坡联合早报,并且保存新闻的标题,摘要,以及图片URL(如果没配图那就没URL),接着他会去逐一请求每一张图片,进行base64编码(QQ邮箱为了防止<img>XSS攻击,所以只能用base64编码来显示图片),最后发给每一个用户,也就成了每天早上收到的新闻邮件。
预防攻击
因为数据库不大,并且防止恶意请求提交假邮箱,我写了一些用来限制每日邮箱数目的代码,每日邮箱最多提交十个,并且web函数的并发不超过10个,以此来防止一些恶意请求。对于ssti攻击,有字符串以及正则表达式进行过滤处理。