原理
因为能允许跨域访问的URL实在太少,所以使用Ajax
技术来实现貌似不太可能,还好,有了一个比较好的思路。
因为例如img
,script
等标签都可以进行跨域访问外部资源,所以这就给了我们想象空间。如果我们创建一个script
,然后地址为内网的ip+端口,如果加载成功(就算代码执行出错)也会触发onload
事件,这时候我们所要达到的目的已经完成了。
实现
先简单贴一些代码:
function scan(ip, port){ var s = document.createElement("script"); s.src = "http://" + ip + ":" + port; s.onload = function(){ console.log("[*] IP:%s PORT:%s OPEN!", ip, port); } document.body.appendChild(s); }然后我们使用
for
循环扫描端口,例如:
for (var i = 0; i < 100; i++) { scan("10.1.1.1", i); };这时候如果对方端口打开,就会触发
onload
事件了,事件里的功能代码可以随意扩展~