我和我的一个朋友已经在一个反钓鱼机器人,虽然不和谐自己正在检测的链接现在。
我们已经成功地使机器人检测并采取行动,如果一个链接是检测到与我们使用的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和路径?
1条答案
按热度按时间flvlnr441#
我修正了你的
regex
变量。要得到域,你应该使用URL
类。它对你做所有的解析工作非常有用。