python中如何识别当前位置?

发布于 2024-09-07 11:25:44 字数 145 浏览 5 评论 0原文

我的客户在德国和美国有两个办事处,Python 程序应该识别办事处位置。实现这一点的最优雅的方式是什么?它只需要承认这个国家。此外,也可能会出现没有永久互联网连接的情况。该程序可以在 Windows 上运行,但解决方案应该与操作系统无关。

有什么建议吗? 谢谢

My client has two offices in Germany and USA and a python program should recognize the office location. What will be the most elegant way to implement this? It only have to recognize the country. Furthermore it also could happens that there will be no permanent internet connection. The program works on windows but the solution should be os independent.

Any suggestions?
Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

没有伤那来痛 2024-09-14 11:25:44

AFAIK,没有优雅的解决方案。您可以做出有根据的猜测,但是,举个例子:我在德国拔掉笔记本电脑的电源,去了美国。我将其插入美国办公室 - 区域设置相同,时区没有改变,现在怎么办?

您可以猜测的事情:

  • 区域和语言设置(但美国的德国人可以使用 de_DE)
  • 时区(但我们是在纽约还是在巴西?相同的 TZ 偏移量;在您的情况下,(PDT/EDT)并且 CET 足够不同)
  • 内部 IP 地址(假设您的办公室有不同的内部地址(例如“10.5.20.0/24 - 德国,192.168.4.0/24 - 美国”;VPN 怎么样,未连接的设备怎么样?)
  • 外部 IP地址(如果您需要美国/欧洲规模的准确性,这是可以接受的;当然,VPN 会搞砸,并且问题表明外部连接可能不可用)
  • 保留哪台计算机所在位置的列表(混乱且难以维护)
  • 保存一个用户所在位置的列表,
  • 记住该计算机上次程序启动时的位置(以及是否已手动更正)

通过为每个事物分配分数并检查每个事物,您可以获得概率 计算计算机所在位置,但您可能会得到一些错误的猜测,因此也请进行手动覆盖。

在一般情况下,综合得分可能相当准确;你需要做的是找到边缘情况和角落情况,然后找到一些方法来识别它们。

AFAIK, there's no elegant solution. You can make educated guesses, but then, take this example: I unplug my laptop in Germany and go to the USA. I plug it in the US office - the regional settings are the same, the time zone didn't change, now what?

Things from which you can make a guess:

  • regional and language settings (but a German in the USA can be using de_DE)
  • time zone (but are we in NYC or in Brazil? same TZ offset; in your case, (PDT/EDT) and CET is different enough)
  • internal IP address (assuming your offices have different internal addressing (e.g. "10.5.20.0/24 - Germany, 192.168.4.0/24 - USA"; what of the VPNs, what about unconnected devices?)
  • external IP address (if you need accuracy on the scale USA/Europe, this is passable; of course, VPNs mess this up, and question says external connectivity may not be available)
  • keeping a list of which computer is where (messy and hard to maintain)
  • keeping a list of which user is where
  • remembering where this computer was on last program start (and whether it was corrected manually)

By assigning a score to each of these things, and checking for each, you could get a probability score where the computer is. You might get some incorrect guesses though, so make a manual override, too.

The combined score might be quite accurate in the general case; what you need to do is find the edge and corner cases, then find some way to identify those.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文