由於要寫個chrome外掛來進行發發私信什麼的 你懂得,,,,
由於是個外掛,就不要去研究模擬登陸啦,cookie問題不用考慮,可以用ajax任意訪問weibo的所有地址
但是如果兩人從來沒有交流過,那麼第一次發私信是要過驗證碼的
但是有種情況不需要,那就是用新浪的im,就是右下角的即時聊天的那個玩意,研究發現,如果需要呼叫者個即時聊天的介面,需要如下幾個步驟
第一步: 握手 handleshake
這是im的根地址,看前邊的數字,估計有很多伺服器,我們們隨便選一個,就它了
http://11.79.web1.im.weibo.com/im
ajax,GET傳送內容到該地址
由於新浪是用script來模擬一個get來跨域請求這個介面的,所以每次返回的內容,自動將返回內容對你設定的回撥函式進行執行,我們在ajax裡只要eval一下即可,比如:
callback([{"id":"1","minimumVersion":"1.0","supportedConnectionTypes":["websocket","callback-polling","long-polling"],"successful":true,"channel":"/meta/handshake","ext":{"timesync":{"ts":1377155460536,"tc":1377155466453,"p":0,"a":5917},"ack":true},"clientId":"1n8zz1g60ncoj1hxuumbuutbw9f5ri","version":"1.0"}])
我們只要事先定義一個callback函式即可,這一步,我們得到一個重要的引數,那就是clientId,儲存下來。
ps:看上邊返回的資料,還支援websocket,但是不知道具體的協議是什麼,沒法呼叫
第二步:連線 connect
要想傳送訊息,還需要連線
ajax,GET傳送如下內容到根地址
注意callback的用法上邊講過了,上邊的資料,注意那個clientId,是第一步的握手得到的
連線之後的返回內容,基本沒啥用,如下:
callback([{"id":"3","successful":true,"advice":{"interval":0,"reconnect":"retry","timeout":180000},"channel":"/meta/connect"}])
告訴你是否成功,等等
第三步:註冊 subscribe
也可以翻譯成出席,等等,仁者見仁
ajax,GET傳送如下資料
可以看到message是個陣列,意思是其實每次可以連續傳送多條資訊,上邊的第一條是個註冊資訊,緊接著應該是一條我上線啦的資訊,可以刪除
第四部:就可以傳送訊息咯