首页 > 解决方案 > 如何使用 Javascript/Node.js 从网站抓取对象?

问题描述

因此,让我首先解释一下我正在努力实现的目标,即使这可能不是正确的方法。

我制作了不和谐的机器人,我的目标是让机器人在启动/运行命令之前检查网站。如果我需要阻止机器人远程启动,我(出于显而易见的原因)不想在代码中添加真/假。

我在我的Express应用程序上设置了一些东西,以便当响应的特定部分与数组中的客户端 ID 匹配时,然后从响应中抓取它说真或假的部分。如果没有,则对它采取行动,如果对象等于 true,则什么也不做。我有这部分,但是我不知道该怎么做的部分是从机器人访问这个“对象”。

有人知道怎么做这个吗?

app.get('/botAuthentication/getToken', (req, res) => {
    if(['7838193829389238'].includes(req.query.authorization)) {

            res.status(200)
            res.send({
                botAuth: true
            })

    } else {
        return res
            .status(401)
            .send( { code: 401, message: "You can't view this page."})
    }
});

此代码在浏览器中打开时返回显示的对象。

TLDR;如何使用某种库或方法从网站上获取该对象?

我知道这可能不是正确的方法;我是网络开发的新手。

先感谢您!

标签: javascriptnode.jsexpress

解决方案


在您的机器人中,我建议您使用 axios,因为它是一个非常易于使用的 fetch 库,但您可以使用 node-fetch、request 或从许多其他库中挑选......

const axios = require('axios')

// Somewhere in your bot...
axios.get('https://my-bot-command-and-control.example.com/botAuthentication/getToken', {
  params: : {
    authorization: '7838193829389238'
  }
}).then((response) => {
  if (response.botAuth) {
    // do bot stuff
  }
})

几点... 从安全角度来看,您必须对秘密授权代码保密。这意味着不要将它放在 git 和您的开发环境之外,您必须在 SSL 终止后面部署 express 服务器,以便加密您的机器人和 API 之间的连接。否则,您将以明文形式传输授权代码。


推荐阅读