我正在做一个小项目,需要为我的团队成员提供一种替代方法,以便在非生产服务器上进行端口敲击并为SSH流量打开端口22(访问会在10分钟后再次关闭)。由于某些敲门方法不适用于不同设备上的不同用户,因此我们需要创建一个“万不得已的敲门客户端”,可以将其作为独立的网页打开并启动敲门序列。当然,出于安全考虑,永远不要将该文件放在Web服务器上。
我是jQuery,javascript和CSS的新手,但能够使它正常工作。但是,它不适用于所有浏览器,有时如果它不再在特定计算机上运行,则有时必须重新启动。
经过大量搜索,我真的不确定如何在将所有功能包含在单个html文件中的同时改进代码。我非常感谢您的投入。
<!DOCTYPE HTML>
<html>
<head>
<title>Gain Access- Beta version 1.0</title>
<style>
* {
font-family: Verdana, Arial, Sans-Serif;
}
#top{
margin-left:80px;
}
#heading {
margin-left: 0px;
font-size:22px;
font-weight:bold;
}
#subhead {
margin-left: 10px;
font-size:12px;
}
button {
font-size:16px;
margin-left:100px;
}
#button {
font-size: 12px;
font-family: Verdana, Arial, Sans-Serif;
position: absolute;
margin-left: 100px;
margin-top: 50px;
}
#status {
margin-left:90px;
margin-top: 80px;
position: absolute;
font-size:16px;
font-weight:bold;
}
#knocks {
margin-left:110px;
margin-top: 100px;
position: absolute;
font-size:14px;
color:blue;
}
#portals {
position: absolute;
margin-left: 110px;
margin-top: 155px;
display:none;
}
.tinyimg {
width: 1px;
height: 1px;
}
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('button').click(function(){
$('#knocks').append('<p>Knocking...</p>');
setTimeout(function(){
$('#portals').append('<img class="tinyimg" src="https://some.url.com:1111/test/url.jpg/" />');
$('#knocks').append("<p>Knock 1 of 5 complete...</p>");
}, 500);
setTimeout(function(){
$('#portals').append('<img class="tinyimg" src="https://some.url.com:2222/test/url.jpg/" />');
$('#knocks').append("<p>Knock 2 of 5 complete...</p>");
}, 3500);
setTimeout(function(){
$('#portals').append('<img class="tinyimg" src="https://some.url.com:3333/test/url.jpg" />');
$('#knocks').append("<p>Knock 3 of 5 complete...</p>");
}, 6500);
setTimeout(function(){
$('#portals').append('<img class="tinyimg" src="https://some.url.com:4444/test/url.jpg" />');
$('#knocks').append("<p>Knock 4 of 5 complete...</p>");
}, 9500)
setTimeout(function(){
$('#portals').append('<img class="tinyimg" src="https://some.url.com:5555/test/url.jpg/" />');
$('#knocks').append("<p>Knock 5 of 5 complete...</p>");
}, 12000);
setTimeout(function(){
$('#knocks').append("<p>Knocking is complete... <br>Proceed to site: <a href='http://secureurl.someurl.com'>http://secureurl.someurl.com/a></p>");
}, 13000);
});
});
</script>
</head>
<body>
<div id="top">
<p><span id="heading">Gain Access</span><br><span id="subhead">Beta version 1.0</span></p>
</div>
<button type="button">Click to Knock</button>
<div id="portals"></div> <!--The image references created by the port knocks land in this div.-->
<p id="status">Status:</p>
<div id="knocks"><p>Click button to knock</p></div> <!--The status updates generated concurrently with each port knock are displayed here.-->
</body>
</html>
最佳答案
您正在使用GET
请求图像来敲响服务器上的端口。我认为服务器不会回复这些请求,甚至不会过滤它们,因此它们最终将超时。
如果先前的尝试超时,某些浏览器可能不愿意执行相同的请求。他们还可能实现一个队列,并且仅同时发送几个请求,如果在您必须发送敲门声的下一部分(标准TCP超时为30秒)时这些请求仍然悬而未决,则会导致问题。
如果有可能,请使用WebSockets重新实现敲门协议(protocol)。
如果您对图像不满意,请尝试将"?" + $.now()
附加到您的URL,以使它们对于每个请求都变得唯一。这可能有助于防止浏览器放弃特定的请求。
关于javascript - 基于jquery的独立端口链接器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15097036/