WAP获取访客手机号码
- 发表于
- PHP
抓取网站访客手机号
我们先了解一下常规移动网络的连接方式
- WIFI,手机wifi上网其实电信、联通、移动的移动运营平台没啥事,因为他走的路由器其实是走的传统的有线上网。所以wifi上网默认走的有线,不扣流量,也无法获得号码了
- 常规三网访问方式
- 中国移动APN:CMWAP(2G) CMNET(3G)
- 中国电信APN:CTWAP(2G) CTNET(3G)
- 只有移动网络有效(电信手机、移动、联通),其他方式访问无效
手机访问网站流程,以联通为例,其他都一样
3GNET的访问方式是,网络直连,及把你的手机当做一台PC一样,给你一个独立的通道接入互联网,联通只提供线路,不做服务器中转让你直达ChinaNet然后再中转到目标网站
3GWAP的访问方式是,压缩访问,方式是手机先发出一个访问的请求,由联通的WAP服务器中转站接收到你的请求后,由WAP服务器派出指定请求去访问你的网站,然后获取到数据后,经由WAP中转服务器进行数据压缩后回传到你的手机上。
经过以上分析大家应该都清楚,通过程序抓取WAP网站访客的手机号是完全可以显现的。但并非100%能获取到。
PHP WAP获取访客手机号码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
function getPhoneNumber() { if (isset($_SERVER['HTTP_X_NETWORK_INFO '])) { $str1 = $_SERVER['HTTP_X_NETWORK_INFO ']; $getstr1 = preg_replace('/(.*,)(11[d])(,.*)/i ', '2 ', $str1); Return $getstr1; } elseif (isset($_SERVER['HTTP_X_UP_CALLING_LINE_ID '])) { $getstr2 = $_SERVER['HTTP_X_UP_CALLING_LINE_ID ']; Return $getstr2; } elseif (isset($_SERVER['HTTP_X_UP_SUBNO '])) { $str3 = $_SERVER['HTTP_X_UP_SUBNO ']; $getstr3 = preg_replace('/(.*)(11[d])(.*)/i ', '2 ', $str3); Return $getstr3; } elseif (isset($_SERVER['DEVICEID '])) { Return $_SERVER['DEVICEID ']; } else { Return false; } } |
JAVA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
// 如果通信运营商给送的话,一般在Http请求头的x-up-calling-line-id项里 String mobile = request.getHeader("x-up-calling-line-id"); // GPRS if (mobile == null) { mobile = request.getHeader("x-up-subno"); // CDMA } if (mobile == null) { mobile = request.getHeader("x-network-info"); } if (mobile == null) { mobile = request.getHeader("deviceid"); } if (mobile == null) { // 有些wap门户站点跳转过来,手机号码由参数mobile传递过来 mobile = request.getParameter("mobile"); } if (mobile != null) { // 某些情况下,手机号码前面会加上中国国际区号86,需要去掉 if (mobile.length() == 13 && mobile.startsWith("86")) { mobile = mobile.substring(2); } // TODO: 现在,程序可以认为用户身份(手机号码)已经确认,免登录(手机上输入账号密码不太容易) } else { // TODO: 无法取得手机号码的情况 } |
取手机号码常用参数
1 2 3 4 |
String Mobile_GPRS = request.getHeader("X-up-calling-line-id"); String Mobile_CDMA = request.getHeader("x-up-subno"); String Mobile_INFO = request.getHeader("x-network-info"); String Mobile_DEVI = request.getHeader("deviceid"); |
既然原理和DEMO都有好,其它语言自行扩展就行。
原文连接:WAP获取访客手机号码
所有媒体,可在保留署名、
原文连接
的情况下转载,若非则不得使用我方内容。