2005年12月12日

As a consistent devotee of the AJAX scene over the past year or so I have hundreds of feeds in my reader. Recently, I've had several email requests from readers requesting to know what AJAX websites I visit daily. While I visit any title that interest me, these are the sites I go to consistently.

Since the coining of the the term AJAX over a year ago hundreds if not thousands of websites, blogs and forums have been buzzing with posts on the subject. As I've found this can sometimes leave search engines bewildered as to where the current and relevant information really exists. So I thought I would put together this list of what I think are some of the most relevant AJAX sites are worldwide.

Please consider this list of AJAX reference sites to be in its infancy. I don't read as many languages as I'd like to so the current list is rather limited by language. Please feel free to add to this list by adding a comment to this post with other useful AJAX resource sites. If you think the idea of a moderated AJAX website resource list is a good idea let me know and I'll set up a wiki.

Special thanks to all of the hard working developers who are spending their free time share their knowledge with all of us!

English
Ajaxian
Simply one of the best AJAX sites on the web. Daily updates, insightful commentary and coverage of Ajax development around the world.

AJAX Blog
Daily AJAX content with sreenshots and commentary.

AJAX Camp
Ajax Camp is a community for learning, interacting, and asking questions about web-based development using Javascript and Ajax.

AjaxForums
Very active forums focusing on AJAX

AJAX Freaks
This website exists to provide you with information to use while learning or developing AJAX. If you need AJAX Help or you would like to provide AJAX Help to other developers, you are in the right place.

AJAX Geek
All things ajax, css, dhtml, xml, javascript, and geekier

AJAX Goals
AJAX site with forums, code samples, news and articles

AJAX Guru
AJAX blog by Kishore

AJAX Impact
Very nice AJAX Community with great references

AjaxLessons
AjaxLessons.com is a resource for ajax tutorials as well as information surrounding Ajax and web 2.0.

AJAX Line
AJAX Community with a blog, forum and tutorials

Ajaxlinks
AJAX links, code samples and news

AJAX Magazine
AJAX blog focusing on new AJAX developments.

AJAXMatters
Ajax Matters is an informational site about AJAX (short for "Advanced Javascripting and XML" or "Asynchronous JavaScripting and XML") and how these technologies are applied to web development. Simply put, I started Ajax Matters to collect and share information about the XMLHTTPRequest object, JavaScript and XML.

AJAX Patterns
The publicly editable repository of all things Ajax. Design Patterns, Frameworks, Libraries, Tools and Links

AJAX Projects
AJAX Projects categorized by programming language

AJAX Review
AJAX and web 2.0 dissected. The purpose of this site is simple. Take nifty web-tools, analyze them, post screenshots, and help people find useful (and not so useful) web applications

AJAX Talk
Discuss the new web

Ajax Technology Forums
Asynchronous JavaScript And XML Ajax forums, discussions and tech issues.

Ajax Tutorial
Ajax help for newbies

AJAXwith
AJAX resources and information

AJAX World
AJAX discussion group with over a thousand members!

Aspects of AJAX
AJAX blog with loads of resources

Coding In Paradise
Excellent and thoughtful AJAX tutorials and techniques by Brad Neuberg

Cyber Dummy
AJAX code samples and source code

Fiftyfoureleven
Fiftyfoureleven.com consists of a weblog and resources that focus on web development: designing, programming, copywriting and more.

Jep's Rich User Interfaces blog
About AJAX Performance and some other things by Jep Castelein of Backbase

Logicalley
AJAX blog by Chris van de Steeg author of LiveGrid

Mozilla Developer Center
Great site to get a first look at AJAX.

Panasonic Youth
AJAX blog by Rob Sanheim with a focus on AJAX and Java Technology

Protolize
Protolize is a place where we share most commonly used and helpful tools out there that we like to use as a web designer + developer.

Rob Gonda
Great AJAX Coldfusion content with commentary

Software As She’s Developed
AJAX, Java Technology, patterns, usability by Michael Mahemoff

There and Back Again
The weblog of Joshua Eichorn, AJAX, PHP and Open Source

Tony Yoo
I've been getting many requests from people asking for this page where they can access different resources that are not included in Protolize.org website. So I've decided to keep this page up for those people.

Web 2.0 Technologies
Blog with resources for AJAX, javaScript and rails

Italian
On Ajax
Italian blog covering AJAX developments

Open AJAX
Italian AJAX community site with forums, demos and articles

Sastroup
Italian language site with resources for AJAX, javascript and PHP.

German
Ajax Aspekte
German language AJAX blog with loads of resources

AJAX Community
German language site devoted to AJAX and web 2.0 developments.

Ajax Info
German language blog focusing on AJAX and web 2.0.

Ajax Scripting
A nice German language ajax blog.

Alvit - The Web Developers Handbook
A German website written in English full of web dev resources. There is a nice section on AJAX, DOM and css

Mathertel
German blog presented in English with some nice AJAX references and projects by Matthias Hertel

Japanese
Ajax Blog
Japanese Ajax presented in English (Asynchronous JavaScript + XML) blog by Yukio Andoh.

Atmarkit
Japanese language AJAX site providing code samples and source code

Hatena
Japanese site presented in English with AJAX resources

Korean

OK JSP
Korean language site coving AJAX, JSP and XML

Spanish
Ingeniuz
Spanish language site with a useful AJAX section
posted @ 2006-06-13 10:02 Dorian's Blog 阅读(329) | 评论 (0)编辑 收藏
 
     摘要: Network Working Group J. RosenbergRequest for Comments: 3261 dynamicsoftObsoletes: 2543 ...  阅读全文
posted @ 2006-03-01 11:28 Dorian's Blog 阅读(1081) | 评论 (0)编辑 收藏
 
原来是真的。我也无聊中俗了把,在网络中赚钱。
 
 
http://www.ads4cn.com/newsbar/refferer.asp?greco              (newsbar广告)
 
http://www.8qu.net/register.asp?net=greco                      (八趣通宝)
 
http://www.sohoads.com/sabar/reg.asp?sj=greco                   (soho广告)
 
点击以上地址,免费注册即可。
 
 
简单介绍如下:
 
【 newsbar】
 
NewsBar是由新闻时报和易趣通过中国广告网发起的广告条赚钱方式,所以真实性绝对不容质疑,创办于2004-5-23。NewsBar自创办以来,以其良好的信誉得到网友广泛支持,几乎一直以每7秒增加一个新会员的速度飞速发展。目前已经突破800,000会员。NewsBar会员中,有部分成员每月收入均超过¥1000元。 努努力,下一个兼职月赚千元的就是你哦。

    注册地址: http://www.ads4cn.com/newsbar/refferer.asp?greco
 
【八趣通宝】
 
八趣通宝是国内最新的网赚,发展空间巨大,挂着就能赚钱!!像挂QQ一样挂着就能轻松狂挣人民币或Q币,登陆后只有铜钱大的图标在任务栏里不影响任何上网空间。另外它操作也比较人性化,已经通过本站的收款验证,所以在这里强强烈推荐!当然,这些都是在免费加入的前提下。不必担心上当受骗。
 
 
【soho】
 
这是咱中国人自己的广告运营商,网站正处于高速发展期。基础打好了,往后您的收益可是相当可观的,而您要做的只是坐在电脑前看看广告,就跟看电视广告一样。看电视可没人因为您看了广告给您钱啊!
 
 
 
【个人心得】
1、无需一点的财力投入,只赚不赔,是个有前景的好生意。
2、精力投入要量力而为。不要为了这点小钱浪费,否则得不偿失。
3、积极发展下线伙伴,高高兴兴一起赚钱。
 
大家也可以玩玩试试。
 
 
PS:本人已经不玩了,呵呵,费时费力。
posted @ 2006-02-23 10:33 Dorian's Blog 阅读(316) | 评论 (0)编辑 收藏
 
posted @ 2006-01-04 14:04 Dorian's Blog 阅读(312) | 评论 (0)编辑 收藏
 
    有心禅师德高望重,博学多闻,担任寂相寺住持,但来此向他问道的人虽多,可惜很少人能够契入。他有一位师弟名叫有得,根基迟钝,又有一目失明,平常都帮师兄做一些幕后工作,从未对客说法。
有一天,有心禅师刚好出们,有一禅僧来此参访,希望能当面请求开示,有得师弟不得已,只好硬着头皮以“无言对答”的方法来接见这位禅僧。
两人对面都不发一言,只是用手指笔画,不久之后,禅僧非常欣喜地向有得礼拜,拜后告辞。路上遇到有心禅师,因此就夸有得实在是个了不起的禅师法将,并滔滔地说着他向有得请益的经过道:“首先,我竖一指,表示大觉世尊,人天无二;他就竖起两指,表示佛、法二者,一体两面,是二而一。之后,我竖三指,表示佛、法、僧三宝,和合而往,缺一不可;他就在我面前捏起拳头,表示三者皆由一悟而得。至此,我已技穷,只得向他礼拜而出”。
禅僧说后离去,有心禅师回来,有得非常气氛地向他报告道:“刚才有一个禅僧非常无理,他一进门向我瞧了一眼,接着就竖起一指,讽刺我只有一只眼睛!我因他是来参访的禅僧,对他客气,所以我就竖起两指,表示他有两只眼睛,非常幸运。谁知道这个人非常无理,竟然举起三只指头,暗示他和我两个人只有三只眼睛,你说气不气人?因此我举起拳头,正要好好揍他,他就急忙磕个头跑掉了”。
有心禅师听后,不禁哑然失笑。
在人际交往的过程中,常常发生沟通上的误会,避免这种误会,彼此畅通无阻地交流,才能达到交际的目的。
posted @ 2005-12-19 17:53 Dorian's Blog 阅读(380) | 评论 (0)编辑 收藏
 
   









posted @ 2005-12-19 13:47 Dorian's Blog 阅读(374) | 评论 (0)编辑 收藏
 
    欲成就大的事业,必须具有豁达的人生观。豁达是一种超脱,是自我精神的解放。努力开拓人生,增进众生的福报,但却让我们看清楚,没有一样东西在生命终了时能带得走,所以要懂得达观,懂得放下,不要执著。
    人生百年,七十、八十也算是命大了。人这一辈子与其悲悲戚戚、郁郁寡欢地过,倒不如痛痛快快、潇潇洒洒地活。可人生一世,那么多的风风雨雨,坎坎坷坷,怎么才能活得精精神神的?豁达才是人生的奥秘。豁达是一种超脱,是自我精神的解放,人要是成天被名利缠得牢牢的,得失算得精精的,树叶子掉下来悲悲伤伤的,那还豁达个啥!豁达就要有点豪气,乍暖还寒寻常事,淡妆浓抹总相宜。凡事到了淡,就到了最高境界,天高云淡,一片光明。人肯定要有追求,追求是一回事,结果是一回事。你就记住一句话:事物的发生发展都必须符合时空条件,有“时”无“空”,有“空”无“时”都不行,那你就得认了.人活得累,是心累,常唠叨这几句话就会轻松得多:“功名利禄四道墙,人人翻滚跑得忙;若是你能看得穿,一生快活不嫌长。”
    豁达是一种宽容。恢宏大度,胸无芥蒂,肚大能容,吐纳百川。飞短流长怎么样,黑云压城又如何?心中自有一束不灭的阳光。以风清月朗的态度,从从容容地对待一切,待到廓清云雾,必定是柳暗花明。
豁达是一种开朗。豁达的人,心大,心宽,悲愁痛苦的情绪,都在嬉笑怒骂,大喊大叫中斯个粉碎。你说,世界上的事都公平?不公平有的是,你能让它都公平?我们要按生活本来的面目看生活,而不是按着自己的意愿看生活。风和日丽,你要欣赏,光怪陆离,你也要品尝,这才自然,你就不会有太多牢骚,太多的不公平。不过,“月有阴晴圆缺”对谁都一样,“十年河东,十年河西”,一切都会随着时间的推移而变化。阴阳对峙,此消彼长,升降入出,这就是生机,拿这大宇宙来看你这个小宇宙,你能超越的了?
    豁达是一种自信,人要是没有精神支撑,剩下的就是一具皮囊。人的这个精神就是自信,自信就是力量,自信给人智勇,自信可以使人消除烦恼,自信可以使人摆脱困境。有了自信,就充满了光明。

posted @ 2005-12-19 13:41 Dorian's Blog 阅读(562) | 评论 (1)编辑 收藏
 
来自:http://blog.donews.com/zwell/archive/2005/08/22/520301.aspx

1、研究说明

  Tencent在tqq.tencent.com的8000有一个使用HTTP的QQ接口,通过这个接口,可以进行一些基本的操作,如:登陆、登出、改变登陆状态(上线、忙碌、离线、隐身)、添加删除好友、查看好友信息、发送验证信息(接受被加为好友、申请加对方为好友、拒绝被加为好友)、收发用户消息、系统信息。

  目前我研究的是1.1版本的HTTP QQ协议,研究是微程在的成果上进行的,不敢说有什么超越,只不过更为详细和准确。

2、接口说明:

  接口位置:tqq.tencent.com:8000
  通信协议:HTTP
  数据传输方法:POST
  HTTP请求格式:

POST HTTP/1.1
Host: tqq.tencent.com:8000
Content-Type: text/plain; charset=UTF-8
Content-length: 长度
Connection: close

数据

  其中长度为 数据 的长度,数据的格式:
  VER=1.1&CMD=命令&SEQ=标记&UIN=QQ号&....

  以上4个参数是每个请求都必有的。其中,VER表示协议的版本,目前为1.1,据说1.2已经出来了,这个乱写的话,服务器返回NULL; CMD为操作的指令,有Login、List、Query_Stat、GetInfo、AddToList、Ack_AddToList、 DelFromList、Change_Stat、GetMsgEx、CLTMSG、Logout;SEQ为当前请求的标记,防止重复发送,可以用当前时间,也可以用随机数;UIN是当前执行操作的QQ号。不过不同的CMD还需要不同的参数,下面我就公布我的研究成果。

3、研究方法:

  我对目前网上的资料不够满意,就自己写程序,发送多条相同CMD不同参数的请求,根据服务器的返回,来做判断。感兴趣的朋友可以参考一下,此处可以跳过。
  下面我公布我探测的代码(PHP):

[code:1:1bbf2dec18]
<?
$uin = "QQ号";
$pwd = md5("QQ密码");

//登陆测试
$poststring[] = "VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M5=1&LC=9326B87B234E7235";
//注意:登陆测试不能同时进行,必须等到服务器认为QQ断开了,才能够测试,不然结果不可信
/*******
$poststring[] = "VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M5=0&LC=9326B87B234E7235";
$poststring[] = "VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M5=1&LC=9326B87B234E7235";
$poststring[] = "VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M5=2&LC=9326B87B234E7235";
$poststring[] = "VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M5=3&LC=9326B87B234E7235";
$poststring[] = "VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M6=1&LC=9326B87B234E7235";
$poststring[] = "VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M6=1&LC=1223423545756679";
*******/


//得到好友列表
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin;
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0";
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=160";
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=0";
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=".rand(1,10);
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=0";
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=160&UN=0";
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=160&UN=0";
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=".rand(1,200)."&UN=0";
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=".rand(1,200)."&UN=0";
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=".rand(1,200)."&UN=0";
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=".rand(1,10);
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=".rand(1,10);
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=".rand(1,10);
$poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=106814";

//得到在线列表
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin;
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0";
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=160";
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=0";
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=".rand(1,10);
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=0";
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=160&UN=0";
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=160&UN=0";
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=".rand(1,200)."&UN=0";
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=".rand(1,200)."&UN=0";
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=".rand(1,200)."&UN=0";
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=".rand(1,10);
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=".rand(1,10);
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=".rand(1,10);
$poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=106814";

//查看好友信息
$poststring[] = "VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$uin."&LV=0&UN=106814";
$poststring[] = "VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$uin."&LV=1&UN=106814";
$poststring[] = "VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$uin."&LV=2&UN=106814";
$poststring[] = "VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$uin."&LV=3&UN=106814";
$poststring[] = "VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$uin."&LV=4&UN=106814";
$poststring[] = "VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$uin."&LV=5&UN=106814";

//增加好友
$poststring[] = "VER=1.1&CMD=AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814";

//发送验证
$poststring[] = "VER=1.1&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&CD=0&RS=TEST";
$poststring[] = "VER=1.1&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&CD=1&RS=TEST";
$poststring[] = "VER=1.1&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&CD=2&RS=TEST";
$poststring[] = "VER=1.1&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&CD=3&RS=TEST";
$poststring[] = "VER=1.1&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&CD=4&RS=TEST";
$poststring[] = "VER=1.1&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&CD=5&RS=TEST";

//删除好友
$poststring[] = "VER=1.1&CMD=DelFromList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814";

//改变状态
for($i=0;$i<=60;$i=$i+5)
{
$poststring[] = "VER=1.1&CMD=Change_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&ST=".$i;
}

//获得消息
$poststring[] = "VER=1.1&CMD=GetMsgEx&SEQ=".rand(1000,9000)."&UIN=".$uin."";

//发送消息
$poststring[] = "VER=1.1&CMD=CLTMSG&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&MG=TEST";

//登出
$poststring[] = "VER=1.1&CMD=Logout&SEQ=".rand(1000,9000)."&UIN=".$uin."";

$file = fopen("p.txt","w");

foreach($poststring as $k=>$v)
{
ss_timing_start();
$fp = fsockopen('tqq.tencent.com', '8000', $errno, $errstr, $timeout = 10); 

if(!$fp){ 
 //error tell us 
 $content = $k.chr(13).chr(10)."ERROR:$errstr ($errno)"; 
   
}else{ 

  //send the server request 
  fputs($fp, "POST HTTP/1.1\r\n"); 
//  fputs($fp, "Host: $host\r\n"); 
//  fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n"); 
  fputs($fp, "Content-length: ".strlen($v)."\r\n"); 
  fputs($fp, "Connection: close\r\n\r\n"); 
  fputs($fp, $v . "\r\n\r\n"); 

  //loop through the response from the server 
  $res = "";
  while(!feof($fp)) { 
   $res .= fgets($fp, 4096); 
  } 
  //close fp - we are done with it 
  fclose($fp); 

  $content = $v.chr(13).chr(10).$res;

ss_timing_stop(); 
$content .= chr(13).chr(10)."Time: ".ss_timing_current().chr(13).chr(10)."--------------------------------------".chr(13).chr(10);
fputs($file,$content);
}
fclose($file);
?>
<?
function ss_timing_start ($name = "default") { 
global $ss_timing_start_times; 
$ss_timing_start_times[$name] = explode(' ', microtime()); 

function ss_timing_stop ($name = "default") { 
global $ss_timing_stop_times; 
$ss_timing_stop_times[$name] = explode(' ', microtime()); 

function ss_timing_current ($name = "default") { 
global $ss_timing_start_times, $ss_timing_stop_times; 
if (!isset($ss_timing_start_times[$name])) { 
return 0; 

if (!isset($ss_timing_stop_times[$name])) { 
$stop_time = explode(' ', microtime()); 

else { 
$stop_time = $ss_timing_stop_times[$name]; 

$current  =  $stop_time[1]-$ss_timing_start_times[$name][1]; 
$current += $stop_time[0]-$ss_timing_start_times[$name][0]; 
return $current; 

?>
[/code:1:1bbf2dec18]

4、研究成果:

(1).登陆
  说明:在你做任何其他操作以前,你必须登陆。只有在登陆以后,你的其他指令才有可能被正确执行(返回RES=0),不然服务器会返回RES= 20,不过有个例外,就是logout。当你成功登陆以后,服务器就会根据你的IP*和参数中的UIN来验证身份。一台电脑可以同时登陆多个QQ,互不影响,就是因为有参数UIN。
  *至于我能够确定服务器是通过IP来验证的,是因为服务器不可能通过我的请求获得其他信息了^_^

  提交数据:VER=1.1&CMD=Login&SEQ=标记&UIN=QQ号&PS=QQ密码&M5=1&LC=9326B87B234E7235
  说明:QQ密码是通过md5加密的字符串,在PHP中可以直接用md5()进行加密;
     M5这个参数的作用还不清楚,但最好为1。
     LC这个参数有点神秘,不能有丝毫改动,不然服务器就没有响应(没有响应就是返回NULL)。

  返回:VER=1.1&CMD=LOGIN&SEQ=标记&UIN=QQ号&RES=0&RS=0&HI=60&LI=300(成功)
     VER=1.1&CMD=LOGIN&SEQ=标记&UIN=QQ号&RES=0&RS=1&RA=密码错误(密码错误)
     VER=1.1&CMD=LOGIN&SEQ=标记&UIN=QQ号&RES=5(QQ号非法,如100)
     NULL(UIN为字符、PS为空、LC错误)

(2).得到好友列表
  提交数据:VER=1.1&CMD=List&SEQ=标记&UIN=QQ号&TN=160&UN=0
  说明:TN、UN还不清楚具体表示什么,但是TN的值会影响返回的结果,有没有UN对结果没有影响

  返回:VER=1.1&CMD=LIST&SEQ=标记&UIN=QQ号&RES=0&FN=9(当TN=0或没有TN参数时,FN表示好友数)
     VER=1.1&CMD=LIST&SEQ=标记&UIN=QQ号&RES=0&FN= 1&SN=9&UN=3814526,...,(当TN存在且非0时,FN=1,SN表示好友数,UN为好友列表,用","分割)
     VER=1.1&CMD=LIST&SEQ=标记&UIN=QQ号&RES=20(没有正确登陆)
     NULL(UIN、TN、UN为字符)

(3).得到在线好友列表
  提交数据:VER=1.1&CMD=Query_Stat&SEQ=标记&UIN=QQ号&TN=50&UN=0
  说明:TN、UN还不清楚具体表示什么,但是TN的值会影响返回的结果,有没有UN对结果没有影响

  返回:VER=1.1&CMD=QUERY_STAT&SEQ=标记&UIN=QQ号&RES= 0&FC=0,&FN=1&SN=1&ST=10,&UN=106814,&NK=Hackfan  好,(当TN存在且非0时,FN=1,SN表示在线好友数,FC、ST、UN、NK的值用','分割,分别表示头像、状态、号码、昵称)
     VER=1.1&CMD=QUERY_STAT&SEQ=标记&UIN=QQ号&RES=20(没有正确登陆)
     NULL(UIN、TN、UN为字符)
  说明:FC为QQ头像的的ID,如的头像ID为270,那么其头使用的图片为91.bmp,其算法为ID/3+1;
     ST为QQ用户的状态,10为上线,20为离线(或隐身),30为忙碌;

  特别说明:当参数TN=0或不存在时,服务器返回:
VER=1.1&CMD=Query_Stat&SEQ=标记&UIN=QQ号
HTTP/1.1 200 OK
Server: tencent imserver/1.0.0
Content-Type: text/plain; charset=UTF-8
Content-Length: 56

VER=1.1&CMD=QUERY_STAT&SEQ=标记&UIN=QQ号&RES=0&FN=1
HTTP/1.1 200 OK
Server: tencent imserver/1.0.0
Content-Type: text/plain; charset=UTF-8
Content-Length: 77

VER=1.1&CMD=QUERY_STAT&SEQ=标记&UIN=QQ号&RES=0&FC=&FN=1&SN=0&ST=&UN=&NK=
  返回了2次,第一次的结果中,FN为在线好友数,第二次返回的数据基本没用。

(4).查看好友信息
  提交数据:VER=1.1&CMD=GetInfo&SEQ=标记&UIN=QQ号&LV=查询类型&UN=被查询QQ号码
  说明:LV=0,1为精简查询,LV=2为普通查询,LV>=3为详细查询

  返回:VER=1.1&CMD=GETINFO&SEQ=标记&UIN=QQ号&RES=0&LV=0&UN=106814&NK=Hackfan 好(精简查询)
     VER=1.1&CMD=GETINFO&SEQ=标记&UIN=QQ号&RES=0&AD =地址&AG=19&EM=hackfan@qq.com&FC=0&HP=http: //blog.hackfan.net&JB=学生
&LV=2&PC=邮编&PH=电话&PR= The guy is updating to .NET Frameword......&PV=江苏&RN=胡吉阳&SC= 毕业院校&SX=0&UN=106814&NK=Hackfan 
好(普通查询)
     VER=1.1&CMD=GETINFO&SEQ=标记&UIN=QQ号&RES=0&AD =地址&AG=19&BT=2&CO=6&CT=苏州&CV=%01&CY=中华人民共和国
&EM=hackfan@qq.com&FC=0&HP=http://blog.hackfan.net&ID =-&JB=学生&LV=3&MO=136********&MT=0&MV=&PC=邮编& PH=电话&PR=The guy is 
updating to .NET Frameword......&PV=江苏&RN=胡吉阳&SC=毕业院校&SH=3&SX=0&UN=106814&NK=Hackfan 好(详细查询)
     VER=1.1&CMD=GETINFO&SEQ=标记&UIN=QQ号&RES=20(没有正确登陆)
     NULL(UIN、LV、UN为字符)

  说明:AD为联系地址
     AG为年龄
     BT为血型
     CO为星座
     CT为城市
     CV为未知*
     CY为国家
     EM为Email
     FC为头像
     HP为网站
     ID为未知
     JB为职业
     LV为查询代码(就是发送的LV)
     MO为移动电话
     MT为未知
     MV为未知
     PC为邮编
     PH为联系电话
     PR为简介
     PV为省
     RN为真实姓名
     SC为毕业院校
     SH为生肖
     SX为性别
     UN为QQ号
     NK为昵称

     血型:0 => '',
        1 => 'A型',
        2 => 'B型',
        3 => 'O型',
        4 => 'AB型',
        5 => '其他'


     星座:0 => '',
        1 => '水瓶座',
        2 => '双鱼座',
        3 => '牡羊座',
        4 => '金牛座',
        5 => '双子座',
        6 => '巨蟹座',
        7 => '狮子座',
        8 => '处女座',
        9 => '天秤座',
        10 => '天蝎座',
        11 => '射手座',
        12 => '摩羯座'

     生肖:0 => '',
        1 => '鼠',
        2 => '牛',
        3 => '虎',
        4 => '兔',
        5 => '龙',
        6 => '蛇',
        7 => '马',
        8 => '羊',
        9 => '猴',
        10 => '鸡',
        11 => '狗',
        12 => '猪'

     性别:0 => '男',
        1 => '女'

(5).增加好友
  提交数据:VER=1.1&CMD=AddToList&SEQ=标记&UIN=QQ号&UN=对方QQ号

  返回:VER=1.1&CMD=AddToList&SEQ=标记&UIN=QQ号&RES=0&CD=0&UN=对方QQ号(允许被加为好友,此时他已经是你的好友)
     VER=1.1&CMD=AddToList&SEQ=标记&UIN=QQ号&RES=0&CD=1&UN=对方QQ号(需要验证)
     VER=1.1&CMD=AddToList&SEQ=标记&UIN=QQ号&RES=0&CD=2&UN=对方QQ号(决绝被加为好友)
     VER=1.1&CMD=AddToList&SEQ=标记&UIN=QQ号&RES=20(没有正确登陆)
     NULL(UIN、UN为字符)

(5).发送验证
  说明:1、如果你加对方为好友,你需要发送验证
     2、对方加你为好友,发送了验证,你要通过或者拒绝
     这2种情况需要发送验证消息

  提交数据:VER=1.1&CMD=Ack_AddToList&SEQ=标记&UIN=QQ号&UN=对方QQ号&CD=验证类型&RS=理由
  说明:CD为0表示“通过验证”,CD为1表示“拒决加为对方为好友”,CD为2表示“为请求对方加为好友”。

  返回:VER=1.1&CMD=Ack_AddToList&SEQ=标记&UIN=QQ号&RES=0(成功)
     VER=1.1&CMD=Ack_AddToList&SEQ=标记&UIN=QQ号&RES=3(*)
     VER=1.1&CMD=Ack_AddToList&SEQ=标记&UIN=QQ号&RES=20(没有正确登陆)
     NULL(UIN、UN、CD为字符,RS为非UTF-8字符)
  *如果服务器返回RES=3,那么这次对话的响应时间在20s。当发送验证请求的时候,必须连发2次(请求内容不必一样),其中一条RES=3,对方收不到,一条RES=0,对方能够收到。当CD>=3时,RES=3,响应时间20s。

(6).删除好友
  提交数据:VER=1.1&CMD=DelFromList&SEQ=标记&UIN=QQ号&UN=删除的QQ号

  返回:VER=1.1&CMD=DelFromList&SEQ=标记&UIN=QQ号&RES=0&(成功)
     VER=1.1&CMD=DelFromList&SEQ=标记&UIN=QQ号&RES=3(响应时间30s,重复发送的后果)
     VER=1.1&CMD=DelFromList&SEQ=标记&UIN=QQ号&RES=20(没有正确登陆)
     NULL(UIN、UN为字符)

(7).改变状态
  提交数据:VER=1.1&CMD=Change_Stat&SEQ=标记&UIN=QQ号&ST=状态代码
  说明:状态代码:10为上线,20为离线,30为忙碌,40为隐身,其他视为非法

  返回:VER=1.1&CMD=Change_Stat&SEQ=标记&UIN=QQ号&RES=0&(成功)
     VER=1.1&CMD=Change_Stat&SEQ=标记&UIN=QQ号&RES=3(失败,原因不明,响应时间20s,可能是过于频繁的改变状态引起的)
     VER=1.1&CMD=Change_Stat&SEQ=标记&UIN=QQ号&RES=20(没有正确登陆)
     NULL(UIN为字符,ST非法)

  特别说明:如果你改变好友,将会给所有好友发送一条系统信息,内容就是状态代码;如果隐身,发送的状态代码为20,表示离线。
       同理,当你的好友改变状态,你也会收到一条系统信息。

(9).获得消息
  提交数据:VER=1.1&CMD=GetMsgEx&SEQ=标记&UIN=QQ号

  返回:VER=1.1&CMD=GETMSGEX&SEQ=标记&UIN=QQ号&RES=0& MN=4&MT=99,99,99,9,&UN=36791785,99833581,99833581,106814,&MG= 20,30,10,hi ,(MN表示信息数量,MT、UN、MG的值用","分割,分别表示消息类型、发送人号码、消息内容)
     VER=1.1&CMD=GETMSGEX&SEQ=标记&UIN=QQ号&RES=0&MN=0&MT=&UN=&MG=(表示没有信息)
     VER=1.1&CMD=GETMSGEX&SEQ=标记&UIN=QQ号&RES=20(没有正确登陆)
     NULL(UIN为字符)
  说明:关于MT:
       9为用户消息,99为系统消息,2为请求信息,3为通过验证,4为拒绝被加好友
     关于MG:
       当MT=9时,MG为用户发送的消息内容
       当MT=99时,
         MG=10(QQ_STATUS_ONLINE)表示对方上线
         MG=20(QQ_STATUS_OFFLINE)表示对方下线
         MG=30(QQ_STATUS_BUSY)表示对方进入忙碌状态
       当MT=2时,MG为对方请求你验证的信息
       当MT=3时,表示对方通过你的验证
       当MT=4时,MG为对方拒绝你理由

(10).发送消息
  提交数据:VER=1.1&CMD=CLTMSG&SEQ=标记&UIN=QQ号&UN=对方QQ号&MG=发送内容

  返回:VER=1.1&CMD=CLTMSG&SEQ=标记&UIN=QQ号&RES=0&(成功发送,对方不一定能收到哦)
     VER=1.1&CMD=CLTMSG&SEQ=标记&UIN=QQ号&RES=3(发送过快)
     VER=1.1&CMD=CLTMSG&SEQ=标记&UIN=QQ号&RES=20(没有正确登陆)
     NULL(UIN、UN为字符,MG含非UTF-8字符)
  说明:1、当你发消息时,以下情形对方可能看不到(其实是收到了,QQ不提示)你发送的消息:
       你俩互为陌生人,且对方没有和你说过话
       你在他的陌生人列表里,并且他没有和你说过话(没有验证)
     2、当你过快发送消息时,系统会给你一个惩罚,RES=3,相应时间20s
     3、当我发送含有小写字母h的信息时,服务器有可能返回NULL

(11).登出
  提交数据:VER=1.1&CMD=Logout&SEQ=标记&UIN=QQ号

  返回:VER=1.1&CMD=LOGOUT&SEQ=标记&UIN=QQ号&RES=0(成功,好像永远成功的,不管你是否登陆)
     NULL(UIN为字符)
posted @ 2005-12-12 14:54 Dorian's Blog 阅读(647) | 评论 (1)编辑 收藏