//參數只能爲數字的
var g_version=encodeURIComponent("201309220930");
var g_pt_version=encodeURIComponent("10047");//發佈版本號
var g_qtarget=encodeURIComponent("-1");
var isLoadVC = false;
var g_appid =encodeURIComponent("501004106");
var g_uin = 0;
var g_domain = encodeURIComponent("qq.com");
var g_target = encodeURIComponent("_self");
var g_https = true;
var g_low_login=encodeURIComponent("0");
var g_login_sig=encodeURIComponent("2mK7RUAmDy6JI3tSvPOs3PkLas*mM6g2bqffMx6dIvs11MiWf8mMDkPhm0UW3htZ"); //安全參數
var g_daid=encodeURIComponent("164");//業務隔離id
var g_regmaster=encodeURIComponent("");//雙登陸態
var g_forget="http://ptlogin2.qq.com/ptui_forgetpwd";
咱們能夠經過var g_login_sig的值獲得login_sig。css
ptui_checkVC('0','!XLF','\x00\x00\x00\x00\x02\x0b\x88\xe6');
返回的值有三個,第一個0表示不須要驗證碼,1表示須要驗證碼。當第一個爲0的時候,第二個參數爲驗證碼,第三個參數爲uin,能夠理解爲驗證碼標識吧。
若是須要驗證碼,請求返回的是:
ptuiCB('0','0','http://ptlogin4.web2.qq.com/check_sig?pttype=1&uin=34310374&service=login&nodirect=0
&ptsig=DhJ8N-3qER1eSKmIoHFix*0LcUQN1IqG7XASHP1RzxE_&s_url=
http%3A%2F%2Fw.qq.com%2Fproxy.html%3Flogin2qq
%3D1%26webqq_type%3D10&f_url=&ptlang=2052&ptredirect=100&aid=501004106&daid=164&j_later=0&low_login_hour
=0®master=0',
'0','登陸成功!', '飛無痕落無聲');
返回的結果的第三個值,是須要繼續302的一個地址
繼續請求這個地址,這個地址主要的做用是賦值cookie和跳轉。
請求完畢後,接着進行第二次登錄。
第二次登錄
第二次登錄是一個post請求,請求的參數以下
{"retcode":0,"result":{"uin":34310374,"cip":2084660302,"index":1075,"port":47529,"status":"online","vfwebqq"
:"1571c0e077478cad6b3a36c159a1845f391ce90909f155be3022f1
c87
42b60f526354e2513105467",
"psessionid":"83
68046764001d636f6e6e7365727665725f77656271714031302e3133332e34312e383400003d8800001e
a00162020b88e66d
0000000a406771476958665165796d000000281571c0e077478cad6b3a36c159a1845f391ce90909f155be3022f1c8742b60f526354e2513105467"
,
"user_state":0,"f":0}}
retcode爲0表是登陸成功了,後面的psessionid等參數再後面獲取qq聯繫人和發消息會用到,下篇文章會講到。
至此,SmartQQ登陸完畢,這裏面要主要的到時用HttpWebRequest的時候遇到cookie跨域的時候,某些cookie會訪問不到,必須手動修改cookie的域,這個問題折騰了很多時間,騰訊的cookie是好幾個子域的。
點擊下載代碼,歡迎你們交流和期待下面的文章,that'all。