分类“其他语言”下的文章

各种浏览器的userAgent

IE
而IE各个版本典型的userAgent如下:
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Mozilla/4.0 (compatible; MSIE 5.0; Windows NT)
其中,版本号是MSIE之后的数字。
Firefox
Firefox几个版本的userAgent大致如下:
Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1
Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070309 Firefox/2.0.0.3
Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070803 Firefox/1.5.0.12  其中,版本号是Firefox之后的数字。
Opera
Opera典型的userAgent如下:
Opera/9.27 (Windows NT 5.2; U; zh-cn)
Opera/8.0 (Macintosh; PPC Mac OS X; U; en)
Mozilla/5.0 (Macintosh; PPC Mac OS X; U; en) Opera 8.0
其中,版本号是靠近Opera的数字。
Safari
Safari典型的userAgent如下:
Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13
Mozilla/5.0 (iPhone; U; CPU like Mac OS X) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.3
其版本号是Version之后的数字。
Chrome
Chrome的userAgent是:
Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13
其中,版本号在Chrome之后的数字。
Navigator
目前,Navigator的userAgent是:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080219 Firefox/2.0.0.12 Navigator/9.0.0.6
其中,版本号在Navigator之后的数字。

【转载】基于HTTP的QQ协议分析以及见解

最近为了一个项目对QQ协议进行研究,有些心得,不敢独享,故把其中一项协议–基于HTTP的QQ协议V1.1的不完整成果,拿出来与大家分享一下。

大家说到QQ协议都觉得很神秘,是因为QQ不像MSN或者ICQ协议都已经官方公布了,而QQ的没有公布。研究它的人也不是特别的多,虽然已经有了基于QQ 协议所写成的第三方软件 foicq, qq plugins for gaim, LumaQQ,但是由于他们是基于二进制Stream的协议过于复杂,大家阅读代码也有一定的难度,再加上网络上解析QQ协议的文章也不是十分多,所以基于QQ网络协议的应用程序也是寥寥无几的。现在我就把基于HTTP的QQ协议进行一个粗浅的剖析,希望对大家有所帮助。源码部分就用我喜欢的DELPHI 和现在比较流行的C#语言对QQ协议的实现进行具体分析。

1、找寻支持QQ HTTP协议的服务器。

大家也许会被一些假像所迷惑,也许会认为QQ的HTTP服务器是基于80口进行通信的(如:218.17.209.23:80),其实不然,正真基于HTTP的服务器应该是:http://tqq.tencent.com:8000,它是一个通过8000口进行通讯的服务器。

由于QQ的HTTP服务器并不支持HTTP协议中GET方法,它支持POST方法。所以我们要给QQ的HTTP协议传参数,那么就必需要用POST方式才行。

2、C#和DELPHI是实现HTTP的POST方法的通信。

C#:

C# 里System.Web空间下提供了一个叫做WebClient的对象,使用此对象就可以使C#直接对服务器发送Web客户端的请求。那么我们要对服务器提交POST方法那么就必须使用其UploadData()方法才行。首先把要请求的信息先转换为字节(因为POST提交的是字符的流数据),然后再做为 UploadData()的参数。使用UploadData()进行数据提交,最后返回,POST的回馈信息。如下:

WebClient _client = new WebClient();

string postValues = “VER=1.0&CMD=Query_Stat&SEQ=12321&UIN=29501213&TN=50&UN=0″;

Byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(postValues);

Byte[] pageData = _client.UploadData(Host,”POST”,byteArray);

这样,我们就利用C#进行了一次HTTP的POST方法提交了。

DELPHI:

Delphi里我们利用一个比较流行的第三方VCL,INDY HTTP(这个组件D6,D7里面自带)进行HTTP通信。使用其的POST方法便可以进行HTTP的POST通信,因为组件比较好用,我就不在其描述具体的过程了。大家可以参考以下代码:
Continue reading ‘【转载】基于HTTP的QQ协议分析以及见解’ »

wap开发中取到真实的手机号码

WAP开发中需要真实的手机号码

现公布方法如下:
asp中
mobileNO=left(Request.ServerVariables("http_x-up-subno"),13)
asp.net中
string mobileno=Request["HTTP_x_up_subno"];
if(mobileno!=null)
{
 mobileno=mobileno.Substring(2,11);
}

据说还有一个HTTP HEADER也可以取到,名为“x-up-calling-line-id”
我没有试,感兴趣的朋友可以试试.

移动wap产品
得取到真实的手机号码
Request.ServerVariables("HTTP_X_Up_Calling_line_ID")

广东移动还可以这样
得取到真实的手机号码
request("MISC_MSISDN")

每个请求方式产生的Header信息的不同

服务器在收到浏览器请求的时候,可能会有不同的header信息,我们做个测试。

做个简单的php文件,打印出接受到的header信息:
foreach($_SERVER as $k=>$v){
if(substr($k,0,5)==’HTTP_’)echo “[$k] => $v\n”;
}
?>

注:php接受到信息都在 $_SERVER[HTTP_xxxxx] 变量里。

IE访问

[HTTP_ACCEPT] => image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/x-silverlight, application/x-shockwave-flash, */*
[HTTP_ACCEPT_LANGUAGE] => zh-cn
[HTTP_ACCEPT_ENCODING] => gzip, deflate
[HTTP_USER_AGENT] => Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; CIBA)
[HTTP_HOST] => www.aslibra.com
[HTTP_CONNECTION] => Keep-Alive

google浏览器

[HTTP_HOST] => www.aslibra.com
[HTTP_CONNECTION] => keep-alive
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.33 Safari/530.5
[HTTP_ACCEPT] => application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
[HTTP_ACCEPT_ENCODING] => gzip,deflate,bzip2,sdch
[HTTP_ACCEPT_LANGUAGE] => zh-CN,zh;q=0.8
[HTTP_ACCEPT_CHARSET] => UTF-8,*;q=0.5

firefox

[HTTP_HOST] => www.aslibra.com
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[HTTP_ACCEPT_LANGUAGE] => zh-cn,zh;q=0.5
[HTTP_ACCEPT_ENCODING] => gzip,deflate
[HTTP_ACCEPT_CHARSET] => gb2312,utf-8;q=0.7,*;q=0.7
[HTTP_KEEP_ALIVE] => 300
[HTTP_CONNECTION] => keep-alive

file_get_contents

[HTTP_HOST] => www.aslibra.com

wget

[HTTP_USER_AGENT] => Wget/1.9+cvs-stable (Red Hat modified)
[HTTP_HOST] => www.aslibra.com
[HTTP_ACCEPT] => */*
[HTTP_CONNECTION] => Keep-Alive

curl

[HTTP_USER_AGENT] => curl/7.12.1 (i386-redhat-linux-gnu) libcurl/7.12.1 OpenSSL/0.9.7a zlib/1.2.1.2 libidn/0.5.6
[HTTP_HOST] => www.aslibra.com
[HTTP_PRAGMA] => no-cache
[HTTP_ACCEPT] => */*

curl访问经过squid代理
( curl http://www.aslibra.com/ -x 127.0.0.1:3128 )

[HTTP_USER_AGENT] => curl/7.12.1 (i386-redhat-linux-gnu) libcurl/7.12.1 OpenSSL/0.9.7a zlib/1.2.1.2 libidn/0.5.6
[HTTP_HOST] => www.aslibra.com
[HTTP_PRAGMA] => no-cache
[HTTP_ACCEPT] => */*
[HTTP_VIA] => 1.1 cache.aslibra.com:3128 (squid/2.5.STABLE14)
[HTTP_X_FORWARDED_FOR] => 127.0.0.1
[HTTP_CACHE_CONTROL] => max-age=259200
[HTTP_CONNECTION] => keep-alive

我们可以看出来,每个方式都有很大的不同,一般服务器可以通过HTTP_USER_AGENT做出不同的限制。
要做欺骗行为,那也可以调整header信息达到效果。
一般浏览器会发出 [HTTP_ACCEPT_ENCODING] => gzip,deflate 表示可以接受代码压缩