我想使用 traceroute 在JavaScript中制作Cordova应用到另一个IP /域。我可以使用PHP中的服务器端脚本在设备中检测到我的IP,这会将我的IP地址返回给我的javascript应用程序脚本。但是是否可以通过设备应用程序中的javascript跟踪我的服务器或另一个IP?
我找到了这个 traceroute cordova插件,但是没有任何信息我该如何使用它。
https://github.com/navidmalekan/cordova-plugin-traceroute
有人遇到同样的问题吗?非常感谢您的帮助
答案 0 :(得分:0)
不幸的是,正确的 traceroute 命令需要使用ICMP。 JavaScript甚至不具备创建原始TCP或UDP套接字的能力(相反,它创建了WebSockets和WebRTC连接,它们在建立套接字时增加了对二者的抽象性,从而抽象了这两者),并且当然不具备发送ICMP消息的能力。
这并不是说 all 希望就此丧失,但您将无法获得100%准确度的精确跟踪路径。如果您的目标是查找从JavaScript客户端到您自己的服务器的路由,则可以让服务器启动到客户端的traceroute,并假设它们使用相同的反向路径到达您。这并不总是正确的,但通常相当接近。
如果您的目标是找到两个JavaScript客户端之间的路由,则这需要更多的猜测。您的服务器可以启动到 每个 客户端的跟踪路由,然后找出通用路径是什么。例如:
服务器-> ClientA
192.168.1.1
100.100.100.100
200.200.200.200
123.123.123.123
75.75.75.75
服务器-> ClientB
192.168.1.1
100.100.100.100
200.200.200.200
180.180.180.180
150.150.150.150
在这种情况下,我们可以推测路径192.168.1.1 -> 100.100.100.100 -> 200.200.200.200
是服务器退出其Autonomous System的路径,而123.123.123.123
是ClientA自治系统的入口点,{ {1}}是ClientB自治系统的入口点。因此,从ClientA到ClientB的跟踪路由 可能如下:
180.180.180.180
当然,我们不能保证这是准确的。通过ClientA的内部网络可能会有一条替代路径,使它们更接近ClientB,因此它们可能使用不同的入口点。尽管如此,总比没有好。
Cordova是用于使用HTML,JavaScript和CSS创建移动应用程序(Android应用程序)的框架。与在仅限于DOM API和其他一些HTML5 API的浏览器中操作不同,Cordova允许您通过自定义API来访问整个Android系统。通过这种方式,您可以访问他们的SD卡,相机,麦克风等。
Cordova之所以能够执行traceroute,不是因为它是JavaScript,而是因为它是Android。 JavaScript实际上正在(通过API)对用Java或C / C ++编写的外部程序进行调用,从而使traceroute
如果您要创建移动应用程序而不是网站,那么这可能是您的选择