Telegraf入门使用不完全指北
最近因为某些原因需要做个Telegram的Bot帮我自动管理频道,于是寻思着用Node做一个bot,tg这么大的平台肯定是有Node专属的SDK的,于是在谷歌上找了一下,发现了两个star数量比较多的框架,第一个是 node-telegram-bot-api,第二个就是今天要介绍的 Telegraf。
可是我在谷歌翻了半天也没找到比较易懂的中文的开发教程,官方的文档都是英文的,ytb上的介绍视频大多数也是英文的,虽然也能搜到零零星星的中文介绍,但都是写的含糊不清。在对官方的英文文档研究了一番之后,于是我决定自己写一篇比较浅层的入门介绍。
Bot的工作模式Telegram提供了两种方式使Bot能够接收到最新的消息,第一种是长轮询(Long Polling),第二种是Webhook,下面简单介绍一下这两种方式。
长轮询:这是Telegram官方比较推荐的一种方式,它通过客户端向Telegram的服务器建立一个长时间不会断开请求,服务器检测到更新后立即返回消息详情给客户端,客户端收到响应后断开链接然后重新建立一个新的长连接请求,如此往复。这种方式的好处就是效率高、回复即时,但需要占用连接资 ...
对学校新教务系统的浅显分析
好久没更新博客了,主要是学习太忙了嘛~
前几天学校换了新的教务系统,虽然仍然是正方软件,但好歹界面比之前的好看多了,根据直觉推断应该是Bootstrap的UI库。而且这次也没有ASP加ViewState那种逻辑了,分析起来容易了一些。
唯一蛋疼的就是,界面的所有元素id,以及接口所有的字段名称全都是用的字母拼音,也不知道哪个人才搞出来的。。
放一张图自己体会:
(鬼知道知道我看到这一堆字段名时有多绝望)
登录逻辑登录逻辑相比较之前可谓是复杂了不少,竟然还用到了RSA加密。说实话加密算法这块一直都是我的知识盲区,这次研究过一番后又get到了不少知识点。
登录界面没有验证码,但是当密码输错一定次数之后(三次?)就会出现验证码,不过通过清除cookie就可以绕过,所以应该还是等于没有验证码嘛。
CSRF Token的获取大概查了一下,CSRF(Cross-site request forgery)是一种跨站攻击手段,这里的csrf_token就是为了预防跨站请求伪造攻击而设计的。初次请求登录页面时,这个token作为隐藏值写在了html表单中。登录时随xhr请求一同发送给服务器。
密码的 ...
从零开始写一个短网址服务
又是新造的一个轮子。
不过这个项目对我来说也是第一个从前端到数据库全部自主实现的全栈项目,所以前后弄了一两个星期。
前端:Vite + Vue.js + MDUI + TailwindCSS
后端:Node.js + Express + mssql
数据库:Microsoft SQL Server 2012
数据库本来打算用MySQL,可是正好微软Azure给了250GB的Azure SQL免费额度,不用白不用。而且MySQL直接部署在服务器上占用的内存是node的几倍了,服务器可能也撑不住。
服务器部分考虑到一个Node进程占用的内存也不可忽视,为了尽最大可能的节省服务器性能开销,我决定把后端直接整合到原先的Revincx API中,实际上这样做给我后续的开发增加了不少难度,两个域名共用一套后端要分开处理确实比较麻烦。
数据库对接部分由于之前只接触过MySQL,对于微软的SQL Server还是比较陌生的。查了一部分资料才大致摸清楚,SQL Server与MySQL比较多了一个模式(Model),差不多相当于在数据库与表之间又套了一层?
Node.js 连接 SQL的模块是 ...
心血来潮用Vue写了个主页
说实话,这种水平的页面完全没必要用Vue来写,直接写H5再用个jQuery反到更顺手一点。那为啥我非要用Vue呢?正所谓学了就要用嘛,寒假好不容易花大半个月看完的感觉不整个活来用用久而久之就会忘了。
先从背景入手主页的背景图一定要是高质量的壁纸嘛,不仅如此,还要有动画~
于是我就大概用CSS实现了一个缓慢拉近的动画:
123456789101112131415.bg-scaled { animation: background-scale 30s cubic-bezier(0.14, 0.26, 0.51, 0.96); -webkit-animation: background-scale 30s cubic-bezier(0.14, 0.26, 0.51, 0.96); transform: scale(1.2);}@keyframes background-scale { from { transform: scale(1.0); } to { transf ...
API站点迁移记录
前情提要:使用Heroku部署Node.js随机壁纸接口
在上次部署之后发现Heroku的效果确实不太理想,tcping延迟普遍300ms以上,后来去看了一下Vercel的云函数开发文档,又改了一个vercel云函数的版本,可是延迟任然很高,速度也比较慢。
既然作为API接口,延迟肯定要低嘛。于是这次我决定把它迁移到服务器上。正好前一段时间又白嫖到了Azure的一百刀Credit,微软的机子宽带好像不是很大,配置也不高,所以就没用它当代理。但香港区的机子延迟很低,大部分情况都是60到70毫秒,有时候甚至可以低到30多毫秒,比我谷歌云的服务器(40多毫秒)还低,正好适合拿来建站。
配置Nginx在上次的文章 一次配置Nginx多站点的折腾记录中,我用的是ngx_stream_module这个模块来对不同的域名进行分流转发。但这次我在安装的Nginx的lib里面没用找到编译后的这个模块,也就是说安装的时候就没用编译(谁让我懒呢直接用yum就安装了)。正当我束手无策时,我在搜索中发现目前的Nginx好像是自带SNI TLS支持的,也就是说可以直接用多个server_name来监听443端口并 ...
服务器常用操作整理
如无特别说明,本文内的操作均是在CentOS 7环境下!本文会不定期更新。
最近更新:MySQL安装及配置、添加Swap分区
服务器玩的多了之后,各种常用的操作越来越多了,每次用都还得上网搜一下很麻烦,于是打算写一篇文章来总结一下。
常用软件安装先介绍一下EPEL源:
EPEL源 (Extra Packages for Enterprise Linux) 是由 Fedora Special Interest Group 为企业 Linux 创建、维护和管理的一个高质量附加包集合适用于但不仅限于 Red Hat Enterprise Linux (RHEL), CentOS, Scientific Linux (SL), Oracle Linux (OL)
配置 EPEL源:
12sudo yum install -y epel-releasesudo yum -y update
Nginx安装及配置安装命令:
1sudo yum install -y nginx
安装成功后,默认的网站目录为: /usr/share/nginx/html
默认的配置文件为:/e ...
抛弃Webpack!Vite使用初体验~
什么是Vite?Vite,官方称其为”下一代前端开发与构建工具”。GitHub地址:https://github.com/vitejs/vite
起因寒假学习Webpack的时候,基本配置就研究了一天。乱七八糟的配置文件一堆,抽离之后虽然好了一点,但还是觉得很乱。尤其是Babel的配置尤为复杂,正可谓:天下苦webpack久矣(其实还是自己太菜
前几天逛某乎的时候偶然发现的新框架,去GitHub一看原来已经出很长时间了,甚至刚发布了2.0版本。作为一个紧跟时事的bug写手,我决定体验一下这款号称极其出色的构建工具
如果里学过Vue,那你一定会知道它的开发者尤雨溪(Evan You),没错,这款工具正是尤雨溪本人编写,所以第一个支持的肯定是Vue,甚至他还表示可能会取代Webpack。
开始创建项目使用Vite创建项目要比webpack简单许多,简单几步搞定,没有特别复杂的配置。
1234npm init vite-app <project-name>cd <project-name>npm installnpm run dev
一个demo项目就跑起来啦~
不 ...
用Node.js写一个二维码生成接口
如你所见,这又是一篇水文
前几天培训的时候老师讲了一个用javaweb中的二维码模块生成二维码,不过只能保存到本地。
正好最近自己在研究Node.js,于是决定使用Node自己实现一个在线生成二维码的接口。
引入模块这里我在GitHub上找到了一个qr-image模块,研究一番之后发现用法不难,于是就决定用它了。
配置路由为了方便说明,这里解释一下我之前的路由配置,下面编辑后的是router/index.js:
1234567891011121314151617const express = require('express')const app = express()const randPicRouter = require('../apis/randPic')const qrCodeRouter = require('../apis/qrcode')var port = process.env.PORT || 8081const server = app.listen(port,() => { con ...
一种绕过深澜校园网认证的思路
本文章所探讨内容仅做学习研究使用,请勿用作其他违法用途!
起因前几天在用校园网进教务系统的时候无意间发现就算不进行认证登录,也是可以正常访问教务系统的。不过以前我只知道可以通过内网IP的形式打开,今天无意中尝试的用域名,发现也能打开。
接着我就好奇了一下,是不是所有学校域名的网站都能打开呢?于是,我尝试了学校官网、图书馆、邮件系统的网址,发现都可以在不认证的情况下直接打开。
起初我以为这些学校网站的服务器都是在学校内网,ping了一下官网的网址,ip查询结果是联通教育网,地域是我们学校附近(河南)。然而,当我尝试ping邮件系统的网址时发现,该IP的地域位于中国广东,并不是教育网。(也好理解,邮件系统对接的是腾讯企业邮箱)
于是我便产生了怀疑,既然不认证也能直接访问广域网,那这个认证机制的意义何在?
进一步研究为了研究校园网的认证系统是如何拦截的,我首先提出了直接对于域名进行识别。
为了验证这个猜想,我便进行了下面的Host实验。
host实验host就相当于在本地提前对域名进行解析,可以直接覆盖上游DNS解析结果(个人是这么理解的),那么只要将学校域名通过host解析到其他的IP, ...
使用Heroku部署Node.js随机壁纸接口
起因最近在研究Node.js,这个东西十分强大,打算自己琢磨琢磨后端,于是就试着随便写个接口玩玩。不过既然要学习,不部署到公网玩咋行
网上查了下资料,最后总结出三种方案:
服务器/VPS部署
鉴于我自己的服务器资源有限,而且还挂着网站和代理,再运行个Nodejs实在吃力,干脆放弃了这个想法。
云函数部署
云函数的话目前只能选国内的,按量计费环境怎么想心里都不太安稳,而且云函数的Nodejs还要用专门的一套接口,麻烦。
Heroku部署
Heroku是国外的一家应用平台,支持PHP,Ruby,Nodejs等多种环境,而且有免费套餐,不用担心扣费,于是就决定是它了。
使用Heroku ToolbeltHeroku Toolbelt是Heroku的一个本地命令行工具,使用该工具可以将本地的项目部署到Heroku
下载并安装完成后,在 shell 中输入heroku login,用创建heroku账号的email和密码登陆
12345$ heroku loginEnter your Heroku credentials.Email: adam@example.comPassword ...