node.js+兰空图床实现随机图

之前博客一直用的公共的随机图API,虽然图片的质量都挺不错的,但是稳定性都比较一般,遂打算使用之前部署的兰空图床,自己弄一个随机图

本文章服务器操作基于雨云------新一代云服务提供商的云服务器进行操作,有兴趣的话可以去官网看看

兰空图床

兰空图床的部署过程可参考我之前的文章:搭建兰空图床并配合 PicGo 实现批量上传 | 火柴人儿的小站

获取Token

获取token的接口地址在兰空图床的接口文档中有写

使用api工具(ApiFox或者Postman都行)请求一次接口,Headers和Body按照我这个填就行,邮箱和密码要改成自己的

创建项目

  1. 创建项目

    • 初始化一个新的Node.js项目

      shell 复制代码
      npm init -y
    • 安装Express和Axios

      shell 复制代码
      npm install express axios
  2. 编写后端代码

    • 创建一个名为app.js的文件,并编写以下代码:

    javascript 复制代码
    const express = require('express');
    const axios = require('axios');
    const app = express();
    const port = 3000;   //自定义一个未使用的端口
    
    app.get('/', async (req, res) => {
      try {
        const response = await axios.get('http://xxxxxx/api/v1/images?album_id=xx',{ //兰空图床接口,用于获取指定相册下的所有图片
    	    headers: {
            'Authorization': 'Bearer xxxxx',  // 兰空图床的Token
            'Accept': 'application/json',           // 兰开图床公共请求参数
          }
        });
        const images = response.data.data.data;
        const randomIndex = Math.floor(Math.random() * images.length);
        const randomImage = images[randomIndex];
        res.redirect(randomImage.links.url); //重定向到图片地址
      } catch (error) {
        res.status(500).send('Internal Server Error');
      }
    });
    
    app.listen(port, () => {
      console.log(`Server is running at http://localhost:${port}/`);
    });
    • 运行

      shell 复制代码
      node app.js
  3. 测试

    浏览器访问地址localhost:3000就可以访问随机图片了,本地测试无误之后就需要放到服务器上运行了

部署

可能因为我是用docker部署的宝塔,所以有些问题,没法用宝塔部署node项目,所以改为手动部署

  1. 新建并进入目录randomImgs

    shell 复制代码
    mkdir /home/randomImgs
    cd /home/randomImgs
  2. 将项目文件导入到randomImgs中(使用SSH工具导入,我这里用的是WindTerm)

  3. 若已经安装过node,则直接执行以下命令即可,未安装node的话安装此教程------如何在服务器上安装node、npm_服务器安装npm-CSDN博客即可安装,记得把里面的版本号改为16.17.0或者>=你本地的版本号

    shell 复制代码
    nohup node app.js &

    会提示nohup: ignoring input and appending output to 'nohup.out',这个是正常的,意思就是项目日志会追加到nohup.out文件中,直接回车就行

  4. 配置nginx

    1. 去DNS添加一条A记录来创建一个子域名

    2. 创建php项目,使用刚刚创建的子域名

    3. 添加反向代理,目标URL为http://服务器IP:3000

      这里的3000为node项目中app.js设定的端口

  5. 此时就可以通过子域名获取随机图了

优化

因为涉及到token,所以可以使用javascript混淆进行简单的防护

  1. 使用在线Javascript混淆加密,用混淆后的内容替换app.js中的内容

相关推荐
Dumbness12 小时前
Node 22 下 node --test test/ 报 MODULE_NOT_FOUND:内置测试运行器的文件匹配规则
node.js·测试
Amumu1213814 小时前
Node学习: 网络基础概念 + HTTP模块
网络·node.js
sumitrmardy15 小时前
写了一个邮箱验证 API 之后,我才知道的几个 SMTP 冷知识
node.js
zttbee16 小时前
npm install卡顿
前端·npm·node.js
无责任此方_修行中16 小时前
如何不用括号调用 JS 的函数?
前端·javascript·node.js
无责任此方_修行中16 小时前
Deno 的八年:一场没逃出 Node 引力的运行时起义
前端·javascript·node.js
王大师王文峰20 小时前
HTML 入门到进阶:语义化标签、表单与多媒体一篇打通【语义化布局、表单校验、video/audio、Canvas、无障碍与 SEO】
前端·css·node.js·html·css3·jquery·html5
Flynt1 天前
axios 被投毒半年后,我把 npm 的"安全防线"实测了一遍:最信任的 SHA512 是安慰剂
前端·npm·node.js
T_Wizard2 天前
Windows 下 NVM 踩坑实录:命令找不到、下载超时、C盘爆满、环境冲突一次搞定
node.js
第404号工位2 天前
40块钱二手瘦客户端,如何跑满家庭物联网中枢?(拒绝Docker爆盘实录)
linux·架构·node.js