Я защищаю веб-приложение и применяю технику пробивания портов. Реализация на стороне сервера работает, и я делаю небольшое настольное приложение, чтобы «стучать» по портам. Я решил сделать это с помощью javascript и API-интерфейса выборки, доступного в настоящее время в большинстве браузеров.
Для проверки я открыл браузер и написал следующую функцию:
(async function() {
for ( port of [7000, 8000, 9000] ) {
await fetch("https://xx.xx.xx.xx:" + port)
.catch(() => console.info("packet sent on port ", port))
// I only catch because the server rejects the connection.
// With the TCP SYN sent it's enough.
}
})();
Запуск этого в Chrome поверх Ubuntu 18.10 работает точно так, как ожидалось, но когда я скопировал эту функцию на компьютер с Windows 7, поведение выборки как-то случайно:
Просматривая журналы сервера, я понимаю, что для каждого порта существует несколько подключений (не постоянно), и иногда порядок менялся.
Обычное поведение на моем компьютере с Linux:
openWeb: Stage 1
openWeb: Stage 2
openWeb: Stage 3
При работе на компьютере под управлением Windows:
openWeb: Stage 1
openWeb: Stage 1
openWeb: Stage 1
openWeb: Stage 2
openWeb: Stage 1
openWeb: Stage 1
openWeb: Stage 1
closeWeb: Stage 1
closeWeb: Stage 2
closeWeb: Stage 1
closeWeb: Stage 1
Порядок соединений важен, и поэтому он не работает с демоном прослушивателя стука.
Использовал Chrome Dev Tools для анализа сетевой активности и ничего странного в том, как там отображаются соединения, нет.
Обновлено: Использовал модуль сеть вместо выборка узла и получил тот же результат.
Возможно, это как-то связано с отказом сервера. Есть ли способ открыть эти порты и вместо этого отправить фиктивные данные? Тогда, возможно, поведение Windows будет таким же. Также вы проверили, чтобы убедиться, что Windows не блокирует эту сетевую активность?
Проверено на Windows 10, и то же самое. Возможно, если я открою эти порты и поставлю прослушиватель, это сработает, но это не то, что мне нужно.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


*indows 7 была выпущена в 2009 году. Вы сообщили об ошибке? Такое же поведение происходит в * windows 10?