我正在开发一个使用 Node.js 和 Socket.IO 的实时跟踪应用程序。在目标站点上的跟踪代码中,我有一些代码可以抓取浏览器的用户代理字符串并将其发送回服务器。这通常可以正常工作,但有几次此数据设置为未定义(这就是它发生的地方)。
目前,我在服务器上只有一个巨大的 try/catch 块,因此在运行我定义的用于检测它是什么浏览器的方法时它不会崩溃(它在尝试运行 match() 方法时会崩溃)。我假设这发生在机器人或其他没有用户代理或已被篡改的浏览器中。我错了吗?还有其他原因吗?
Socket.IO 是否为浏览器检测提供任何东西?无论哪种方式,我都知道我需要使浏览器检测功能更加强大,但我只是让这个项目起步。
如果没有更好的方法来做到这一点,我是否最好只检查发送到服务器的数据是否未定义并将其视为“其他”浏览器?
看到总连接数和总浏览器数的差异了吗?目前,相差 100 多一点。如果没有发生此浏览器跟踪问题,数字应该完全相同(因为每个连接都会有浏览器、分辨率、操作系统和 URL)。