13

除了这个 X-header 之外,是否有任何 HTTP 标头可以用来检测移动用户号码x-up-calling-line-id

我想尽可能地从所有浏览器中检测以覆盖所有平台手机。

4

3 回答 3

41

我会给你与我对一个非常相似的问题给出的完全相同的答案,因为它应该提供一些关于你想要实现的目标的洞察力。

获取访问 WAP 站点的用户的 MSISDN 的能力取决于许多因素。

首先,用户必须使用移动数据。如果用户在 WiFi 上,那么您将不会收到此信息。

其次,用户的移动网络必须支持 MSISDN 在 HTTP 标头中的传递。

一些移动网络会在所有请求上发送标头。其他人仅在通过特定 APN 时发送。有些只将此标头发送到特定的 IP 地址/块。我什至遇到过将 MSISDN 作为 $_GET 变量发送的网络。您将需要检查您打算支持的每个网络。

例如,直到大约 6 个月前,南非的一个特定网络过去一直在标头中发送 MSISDN,现在为了在标头中接收 MSISDN,您的服务器地址需要与它们一起列入白名单。

还要记住,标头很容易被欺骗,除非您保证自己是 HTTP 请求的发起者,否则不应依赖标头,例如在您在 Android 应用程序中使用 Web 视图的情况下 - 您需要自己采取足够的措施。

考虑到所有这些,您应该寻找以下内容:

查看您的标题是否有以下任何内容。这根本不是 MSISDN 标头的完整列表,它们只是我在移动开发冒险中遇到的那些。

  • X-MSISDN
  • X_MSISDN
  • HTTP_X_MSISDN
  • X-UP-CALLING-LINE-ID
  • X_UP_CALLING_LINE_ID
  • HTTP_X_UP_CALLING_LINE_ID
  • X_WAP_NETWORK_CLIENT_MSISDN

我所做的是通过标题查找任何匹配项。如果我没有找到任何匹配项,我会再次使用特定于国家/地区的 MSISDN 正则表达式针对这些值运行标头,以查看我不知道的键的标头中是否有任何潜在的 MSISDN。如果我找到一个潜在的匹配项,我会将密钥和数据添加到我以后可以通过的列表中,以便添加到我的已知 MSISDN 标头列表中。

我希望这已经购买了一些清晰度。最重要的是要记住,这不是获取 MSISDN 的可靠方法。

于 2012-06-22T07:37:16.303 回答
4

老实说,你不会想要这个功能。假设您访问了几个网站,它们从标题“x-up-calling-line-id”中获取了您的电话号码。这些网站将您的电话号码出售给电话推销员。你想处于那种境地吗?

技术原因不同。电话号码永远不会存储在电话上(通常)。SIM 卡由 IMSI 号码标识,并且归属位置注册表(在 MSC)包含一个将 IMSI 映射到电话号码的条目。因此,要回答您的问题,这是不可能的。

于 2011-12-08T09:02:30.743 回答
1

在 PHP 中使用 apache_request_headers() 来获取 MSISDN。但是,用户的移动网络必须支持在 HTTP 标头中传递 MSISDN。

于 2016-05-23T10:49:38.003 回答