Делюсь nodejs кодом для одноименного кубика в BAS.
Требуется предварительно установить в бас nmp пакет socksv5
Запуск его приводит к развертыванию на компе socks5 прокси , этот прокси сервер можно юзать как свой личный прокси.
Авторизация по логину и паролю, в коде они указаны , можете те что вы хотите.
Прокси открывается на рандомном свободном порту.
Порт подключения к проксю будет сохранен в [[PORT]].
Ip поднятого сервера - сами определите это не хитро сделать!
Код:
const socks = require('socksv5');
const net = require('net');
const auth = {
login: 'qwerty123',
password: 'aqwesdfg222'
};
const srv = socks.createServer(function(info, accept, deny) {
accept();
});
// Аутентификация
srv.useAuth(socks.auth.UserPassword(function(user, password, cb) {
if (user === auth.login && password === auth.password) {
cb(true);
} else {
cb(false);
}
}));
// Поиск свободного порта и запуск SOCKS сервера
const server = net.createServer();
server.listen(0, () => {
const port = server.address().port;
server.close(() => {
srv.listen(port, '0.0.0.0', function() {
[[PORT]] = port;
console.log(`SOCKS5 прокси сервер запущен на порту: ${port}`);
});
});
});
Следующий nodejs кубик отроет порт из [[PORT]] для внешних подключений на компе где запустился только что прокси-сервер, это выполняется создание правила в брандмауэре винды:
const { exec } = require('child_process');
// Указанный порт для правила брандмауэра
const port = [[PORT]];
const ruleName = `OpenPort${port}`;
console.log(`Начинаем добавление правила в брандмауэр для порта ${port}.`);
// Команда для добавления правила в брандмауэр
const command = `netsh advfirewall firewall add rule name="${ruleName}" dir=in action=allow protocol=TCP localport=${port}`;
// Выполнение команды для открытия порта
exec(command, (error, stdout, stderr) => {
if (error) {
console.error(`Ошибка при добавлении правила в брандмауэр: ${error}`);
return;
}
if (stderr) {
console.error(`Ошибка в выводе команды: ${stderr}`);
return;
}
console.log(`Правило для порта ${port} успешно добавлено в брандмауэр с именем '${ruleName}'.`);
console.log(stdout);
});
Этот код останавливает работу прокси сервера. Нужно выполнять в среде cmd\bat , например в басе этот тут: Управление Процессами>Запустить Процесс
Код:
netstat -ano | findstr [[PORT]]