NodeJS 正文中的问题!(识别带有路径的链接+删除http、https和路径)

ca1c2owp  于 2022-12-18  发布在  Node.js
关注(0)|答案(1)|浏览(126)

我和我的一个朋友已经在一个反钓鱼机器人,虽然不和谐自己正在检测的链接现在。
我们已经成功地使机器人检测并采取行动,如果一个链接是检测到与我们使用的API,所以,例如,我将使用example.com,但真实的的链接是一个骗局链接。
当前代码如下:

const regex = /^https?:\/\/(?:www\.)?([-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6})(?:\/[-a-zA-Z0-9()@:%_+.~#?&//=]+)?$/

client.on("messageCreate", (message) => {
  if (message.content.match(regex)) {
    let msg = message.content;
    let result = msg.replace(/(^\w+:|^)\/\//, "");
    let newresult = msg.replace(/^(?:\w+:)?\/\/[^\/]+/, "");
    fetch(`https://apiurl/check/${result} || https://apiurl/check/${newresult}`)
    .then(res => res.json())
    .then(json => {
      if (json == true) {
        message.delete();
      const embed = new EmbedBuilder()
      .setColor("#ed553e")
      .setAuthor({ name: "Phishing Link Detected", iconURL: message.author.avatarURL() })
      .setThumbnail(message.author.avatarURL())
      .setDescription("**User: **" + "<@" + message.author.id + ">" + "\n" + "**ID: **" + "`" + message.author.id + "`" + "\n" + "**Domain: **" + "||" + result + "||")
      .setTimestamp()
      message.channel.send({ embeds: [embed] });
    }
    });
  }
});

我一直在摆弄正则表达式,但机器人现在似乎没有检测到任何链接,所以,我的问题是:如何让bot检测是否已发送带有路径的链接另外,如何让bot在发送嵌入内容之前删除http + https和路径?

flvlnr44

flvlnr441#

我修正了你的regex变量。要得到域,你应该使用URL类。它对你做所有的解析工作非常有用。

const regex = /^https?:\/\/(?:www\.)?([-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6})(?:\/[-a-zA-Z0-9()@:%_+.~#?&\/\/=]+)?$/

client.on("messageCreate", (message) => {
  if (message.content.match(regex)) {
    let msg = message.content;
    let url = new URL(message.content);
    fetch(`https://apiurl/check/${result} || https://apiurl/check/${newresult}`)
    .then(res => res.json())
    .then(json => {
      if (json == true) {
        message.delete();
      const embed = new EmbedBuilder()
      .setColor("#ed553e")
      .setAuthor({ name: "Phishing Link Detected", iconURL: message.author.avatarURL() })
      .setThumbnail(message.author.avatarURL())
      .setDescription("**User: **" + "<@" + message.author.id + ">" + "\n" + "**ID: **" + "`" + message.author.id + "`" + "\n" + "**Domain: **" + "||" + url.host + "||")
      .setTimestamp()
      message.channel.send({ embeds: [embed] });
    }
    });
  }
});

相关问题