是否可以从 HTTP 请求中获取(粗略的)手机位置
Posted
技术标签:
【中文标题】是否可以从 HTTP 请求中获取(粗略的)手机位置【英文标题】:Is It Possible to get a (rough) Mobile Phone Location from a HTTP Request 【发布时间】:2010-01-07 05:58:26 【问题描述】:如果我没记错的话,谷歌会为地图网站执行此操作。我知道谷歌的移动地图应用程序可以确定粗略的位置(我假设使用某种手机信号塔查找),但我似乎记得在移动浏览器上查看时该网站有点接近当前位置。
有人知道如何/如果可能吗? IP 地址是否会根据塔或区域而变化(似乎他们会使用运营商常用的某种网关)?
【问题讨论】:
【参考方案1】:对于常规的 HTTP 请求,您唯一的选择是 GeoIP,但这只会给您国家和运营商带来的好处。
根据您使用的应用程序和设备,有多种地理定位选项,例如 iPhone 和 android 浏览器支持 html5 地理 javascript 功能,因此您可以在页面中放置一些代码以向您发送位置。但是这些都涉及到一些客户端代码。
另一个选项涉及与网络进行交易,他们可以在请求中将电话号码作为附加标头提供给您,然后您可以通过运营商的 API 查询此号码,以从网络。然而,他们为此功能收取相当多的费用,而且精度可能从城市环境中的 100m 到农村地区的 35Km 不等。
【讨论】:
你能引用你提到的后一个选项吗? 我也想要这方面的资料。这个包含用户电话号码的标题数据在哪里?它是从浏览器应用程序发送的吗?那么手机运营商就无法控制它。运营商是否将标头信息注入通过其网络发送的 http 数据?【参考方案2】:这是不可能的。
1.) 通过查询网络详细信息定位。
即使您通过查询网络或小区 ID 详细信息从已安装的应用程序中获得大致位置,它也不会那么可靠。您将无法根据该大致位置执行任何操作。
2.) 通过查询IP定位。
其次,在一个国家/地区,一家电信公司将拥有其地理定位的 GPRS 或 EDGE 网关,并且网络上的所有设备都通过该网关连接到互联网。所以基本上你不能依靠 IP 的位置细节,因为那将是网关的 IP,而不是设备的 IP(在 EDGE 的情况下)。
最终,如果您需要根据位置执行任何操作, 位置本身需要精确而不是近似。
【讨论】:
只是为了回应粗体字:位置的使用在不精确或近似位置就足够了。如果我想猜测时区,向用户显示附近的天气状况,选择我的网站的国家特定版本,或任何其他任务,我不需要 GPS 精度之类的东西。定位方法的近似程度取决于您的用例,但用例多种多样。 在我看来,谷歌以从手机信号塔“三角测量”位置而闻名。当我第一次在黑莓上看到它时(几年前),它相对接近——对于某些用途来说已经足够了。我试图确定的是,仅通过分析 HTTP 请求是否有可能。我似乎有传言说 Kindle 有一个粗略的位置查看谷歌地图(网络不是应用程序)。【参考方案3】:我们使用 Google Gears 有一段时间了,它可以在 Windows Mobile 5.0 及更高版本的设备上运行。谷歌最近停止了这项服务。雅虎现在已经开始了一个叫做雅虎火鹰的东西。感觉不错,还没看我还没有 Yahoo 帐户。
【讨论】:
【参考方案4】:您有关于此的 Google API 文档:
http://code.google.com/apis/gears/geolocation_network_protocol.html
希望对你有帮助...
【讨论】:
【参考方案5】:今天有点晚了,但没有提到的另一个选项是 MaxMind 地理 IP 查找。输入 IP 地址,它将为您提供位置。有提供城市级别准确性的免费服务(使用简单的 API)。还有一个收费的更准确的数据库。我在测试过程中注意到市区有多个塔/IP 地址,MaxMind 数据库知道这些。您将获得位置信息以及电信提供商。
http://www.maxmind.com/
【讨论】:
以上是关于是否可以从 HTTP 请求中获取(粗略的)手机位置的主要内容,如果未能解决你的问题,请参考以下文章