如何存储或获取搜索到的不准确路线



在这种情况下,我如何将/inda路由保存在路由器的变量中?app.get(‘*’, function(req, res){ //Save rute here; }

如果你只想把坏路由记录到一个文件中,你可以这样做。只要让这是你定义的最后一条路线,这样所有其他路线都有机会在它之前匹配:

app.get("*", (req, res) => {
// log the unhandled route
fs.appendFile("bad-routes.txt", req.path + "n", (err) => {
if (err) {
console.log(`Error attempting to append ${req.path} to bad-routes.txt`);
}
});
res.sendStatus(404);
});

注意,在这个列表中,你可能会发现爬虫(而不是用户(也在探测你的网站。

上面只记录GET请求。如果你想登录所有http动词,你可以这样做:

app.use((req, res) => {
// log the unhandled route
fs.appendFile("bad-routes.txt", `${req.method}: ${req.path}n`, (err) => {
if (err) {
console.log(`Error attempting to append ${req.path} to bad-routes.txt`);
}
});
res.sendStatus(404);
});

如果多个请求都试图登录,则fs.appendFile()可能存在一些竞争条件。在这种情况下,使用共享流会更安全,这样可以安全地对写入进行排序:

let logUnhandledStream;
app.use((req, res) => {
// log the unhandled route
if (!logUnhandledStream) {
logUnhandledStream = fs.createWriteStream("bad-routes.txt", { flags: "a" });
logUnhandledStream.on('error', err => {
console.log(`Error attempting to log to bad-routes.txt`, err);
});
}
logUnhandledStream.write(`${req.method}: ${req.path}n`);
res.sendStatus(404);
});

最新更新