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 Shea€?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 閱讀(337) | 評論 (0)編輯 收藏
           
               摘要: Network Working Group J. RosenbergRequest for Comments: 3261 dynamicsoftObsoletes: 2543 ...  閱讀全文
          posted @ 2006-03-01 11:28 Dorian's Blog 閱讀(1087) | 評論 (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 閱讀(324) | 評論 (0)編輯 收藏
           
          posted @ 2006-01-04 14:04 Dorian's Blog 閱讀(319) | 評論 (0)編輯 收藏
           
              有心禪師德高望重,博學多聞,擔任寂相寺住持,但來此向他問道的人雖多,可惜很少人能夠契入。他有一位師弟名叫有得,根基遲鈍,又有一目失明,平常都幫師兄做一些幕后工作,從未對客說法。
          有一天,有心禪師剛好出們,有一禪僧來此參訪,希望能當面請求開示,有得師弟不得已,只好硬著頭皮以“無言對答”的方法來接見這位禪僧。
          兩人對面都不發一言,只是用手指筆畫,不久之后,禪僧非常欣喜地向有得禮拜,拜后告辭。路上遇到有心禪師,因此就夸有得實在是個了不起的禪師法將,并滔滔地說著他向有得請益的經過道:“首先,我豎一指,表示大覺世尊,人天無二;他就豎起兩指,表示佛、法二者,一體兩面,是二而一。之后,我豎三指,表示佛、法、僧三寶,和合而往,缺一不可;他就在我面前捏起拳頭,表示三者皆由一悟而得。至此,我已技窮,只得向他禮拜而出”。
          禪僧說后離去,有心禪師回來,有得非常氣氛地向他報告道:“剛才有一個禪僧非常無理,他一進門向我瞧了一眼,接著就豎起一指,諷刺我只有一只眼睛!我因他是來參訪的禪僧,對他客氣,所以我就豎起兩指,表示他有兩只眼睛,非常幸運。誰知道這個人非常無理,竟然舉起三只指頭,暗示他和我兩個人只有三只眼睛,你說氣不氣人?因此我舉起拳頭,正要好好揍他,他就急忙磕個頭跑掉了”。
          有心禪師聽后,不禁啞然失笑。
          在人際交往的過程中,常常發生溝通上的誤會,避免這種誤會,彼此暢通無阻地交流,才能達到交際的目的。
          posted @ 2005-12-19 17:53 Dorian's Blog 閱讀(388) | 評論 (0)編輯 收藏
           
             









          posted @ 2005-12-19 13:47 Dorian's Blog 閱讀(382) | 評論 (0)編輯 收藏
           
              欲成就大的事業,必須具有豁達的人生觀。豁達是一種超脫,是自我精神的解放。努力開拓人生,增進眾生的福報,但卻讓我們看清楚,沒有一樣東西在生命終了時能帶得走,所以要懂得達觀,懂得放下,不要執著。
              人生百年,七十、八十也算是命大了。人這一輩子與其悲悲戚戚、郁郁寡歡地過,倒不如痛痛快快、瀟瀟灑灑地活。可人生一世,那么多的風風雨雨,坎坎坷坷,怎么才能活得精精神神的?豁達才是人生的奧秘。豁達是一種超脫,是自我精神的解放,人要是成天被名利纏得牢牢的,得失算得精精的,樹葉子掉下來悲悲傷傷的,那還豁達個啥!豁達就要有點豪氣,乍暖還寒尋常事,淡妝濃抹總相宜。凡事到了淡,就到了最高境界,天高云淡,一片光明。人肯定要有追求,追求是一回事,結果是一回事。你就記住一句話:事物的發生發展都必須符合時空條件,有“時”無“空”,有“空”無“時”都不行,那你就得認了.人活得累,是心累,常嘮叨這幾句話就會輕松得多:“功名利祿四道墻,人人翻滾跑得忙;若是你能看得穿,一生快活不嫌長。”
              豁達是一種寬容。恢宏大度,胸無芥蒂,肚大能容,吐納百川。飛短流長怎么樣,黑云壓城又如何?心中自有一束不滅的陽光。以風清月朗的態度,從從容容地對待一切,待到廓清云霧,必定是柳暗花明。
          豁達是一種開朗。豁達的人,心大,心寬,悲愁痛苦的情緒,都在嬉笑怒罵,大喊大叫中斯個粉碎。你說,世界上的事都公平?不公平有的是,你能讓它都公平?我們要按生活本來的面目看生活,而不是按著自己的意愿看生活。風和日麗,你要欣賞,光怪陸離,你也要品嘗,這才自然,你就不會有太多牢騷,太多的不公平。不過,“月有陰晴圓缺”對誰都一樣,“十年河東,十年河西”,一切都會隨著時間的推移而變化。陰陽對峙,此消彼長,升降入出,這就是生機,拿這大宇宙來看你這個小宇宙,你能超越的了?
              豁達是一種自信,人要是沒有精神支撐,剩下的就是一具皮囊。人的這個精神就是自信,自信就是力量,自信給人智勇,自信可以使人消除煩惱,自信可以使人擺脫困境。有了自信,就充滿了光明。

          posted @ 2005-12-19 13:41 Dorian's Blog 閱讀(572) | 評論 (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 閱讀(655) | 評論 (1)編輯 收藏
           
          主站蜘蛛池模板: 久治县| 视频| 英山县| 普安县| 文安县| 绵阳市| 比如县| 原平市| 平舆县| 蕲春县| 卫辉市| 洞头县| 泰安市| 章丘市| 永定县| 九台市| 方山县| 微博| 略阳县| 雅安市| 微山县| 台东市| 芒康县| 齐河县| 祁连县| 铅山县| 太原市| 泌阳县| 河西区| 宁陵县| 都安| 丰顺县| 昂仁县| 抚松县| 衡阳县| 芒康县| 阜康市| 山东| 宁安市| 象山县| 富裕县|