所以,我有一个在 NodeJS 上运行的网站(我不需要在节点上运行它,但我只需要 NodeJS 模块提供的一些功能),并且我有一个 Discord webhook,每次网站打开。 我有这个:
const http = require("http");
const fs = require("fs");
const fetch = require("node-fetch")
const host = "localhost"
const port = 8080
var IP = "Unknown :face_with_raised_eyebrow:"
var params
const requestListener = function (req, res) {
fs.readFile(__dirname + `${req.url}`, (err, contents) => {
if (err) {
contents = fs.readFileSync("index.html", "utf-8")
}
res.end(contents);
})
};
const server = http.createServer(requestListener);
server.listen(port, host, () => {
IP = server.address().address + ":" + server.address().port
console.log(`Server is running on http://${host}:${port}`);
params = {
content:"تم رفع موقع توثيق غياب الطلاب",
embeds:[{
title:"IP Address: " + IP,
}]
}
fetch('https://discord.com/api/webhooks/1156237937864876052/IJ_C3ShEsuHPGU4_21SuCI2b7hawC71nJgP7Hsj6ifk6zjUUAC7xktToF7OfZRzAPw6T', {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(params)
}).then(async (res) => {
//console.log(res)
})
})
而且,自然而然地,它说 127.0.0.1,因为就脚本而言,无论它运行在什么设备上,相对于它来说都是 127.0.0.1,但我想改变它,我想让它显示设备的实际IP,因为我的学校将使用这个网站。
请帮忙,如果您对我的代码有任何其他建议,请不要忘记告诉我!
为此,您可以从
https://api.ipify.org
获取 IP,它会返回尝试访问或获取它的任何计算机的 IP。
简而言之,您可以使用它来获取运行该脚本的任何计算机的 IP,这里有一个示例脚本向您展示如何操作:
const fetch = require("node-fetch");
fetch('https://api.ipify.org')
.then(res => res.text())
.then(body => body);
首先,您获得
node-fetch
nodejs模块(您可以通过运行npm i node-fetch
来安装该模块),然后使用它来获取https://api.ipify.org
。
在最后两行中,我们基本上得到了 API 给我们的结果。
如果您打算让应用程序稍后包含更多客户端/服务器信息,您也可以通过另一种方式执行此操作,方法是创建一个包含名为
getServerIP()
的函数的类,该函数正是为我们执行此操作的:
class Server {
constructor() {
this.fetch = require("node-fetch")
}
async getServerIP() {
var result = await this.fetch('https://api.ipify.org')
.then(res => res.text())
.then(body => body);
return result
}
}
module.exports = {
Server
}
您可以像这样使用该功能:
const OnlineManager = require("./OnlineManager.js")
const Server = new OnlineManager.Server()
var IP = "Unknown"
IP = await Server.getServerIP()
也可以直接返回
this.fetch()
中的getServerIP()
函数。
我希望这个答案提供有用的信息