1. 程式人生 > >WebQQ 2018(一)第一次登入

WebQQ 2018(一)第一次登入

  • 檢查登入狀態

GET: 

返回:

{"retcode":0} 表示已登入
{"retcode":100101} 登入狀態過期
  • 獲取登入二維碼
  1. GET:

       Cookies:{'pt_clientip': 'b0867167015c4d89', 'pt_login_sig': '4HK13eIvDKukz6asiRtvlHqc*WSmDlsAoGLUovq8AKFxg*m5kLJpXRp-luEKGySW', 'pt_serverip': '68626474160c148b', 'pt_user_id': '3292502229991558332', 'ptui_identifier': '000DC60CB8BFE02FFA2E37BBBCDBECC98523EBD3BF14839F77F15027'}

    2. GET:

得到一個二維碼圖片

      Cookies:{'qrsig': 'pjk64jyvOvEatA0tULOBn5i9zEO7jYCPySKlPtWE5oMWVrPXgFdt8WMY*cq-i6qY'}

  • 輪詢檢查是否掃碼成功

GET:

https://ssl.ptlogin2.qq.com/ptqrlogin?ptqrtoken={ptqrtoken}&webqq_type=10&remember_uin=1&login2qq=1&aid=501004106&u1=http%3A%2F%2Fw.qq.com%2Fproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&ptredirect=0&ptlang=2052&daid=164&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=0-0-1625495.9193351606&mibao_css=m_webqq&t=undefined&g=1&js_type=0&js_ver=10141&login_sig={login_sign}

&pt_randsalt=0

Headers:

{

 "Accept":"*/*",

  "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:27.0) Gecko/20100101 Firefox/27.0",

  "Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",

  "Referer":"https://ui.ptlogin2.qq.com/cgi-bin/login?daid=164&target=self&style=16&mibao_css=m_webqq&appid=501004106&enable_qlogin=0&no_verifyimg=1 &s_url=http%3A%2F%2Fw.qq.com%2Fproxy.html&f_url=loginerroralert &strong_login=1&login_state=10&t=20131024001"

}

引數:

login_sign :cookies["pt_login_sig"]

ptqrtoken :bknHash(cookies['qrsig'], init_str=0)

	def bknHash(self,skey, init_str=5381):
		hash_str = init_str
		for i in skey:
			hash_str += (hash_str << 5) + ord(i)
			hash_str = int(hash_str & 2147483647)
		return hash_str

響應:

       當未掃描時    :ptuiCB('66','0','','0','二維碼未失效。(4056963952)', '')

       已掃描且確認:ptuiCB('0','0','http://ptlogin2.web2.qq.com/check_sig?pttype=1&uin=35946169&service=ptqrlogin&nodirect=0&ptsigx=11e3bd037d9ab1b3650d90335a66e7db32d3210049f1b060dab4de2a1154bc8574412099b5ada0abce9e6bfbe651a039fa463cad14934a0ad8d163296ec3af7a&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&regmaster=0&pt_login_type=3&pt_aid=0&pt_aaid=16&pt_light=0&pt_3rd_aid=0','0','登 錄成功!', 'メMoving。っ')

   掃描成功並確認後,返回結果中的URL儲存下來

3.GET 訪問上一步獲取到的URL,

http://ptlogin2.web2.qq.com/check_sig?pttype=1&uin=35946169&service=ptqrlogin&nodirect=0&ptsigx=11e3bd037d9ab1b3650d90335a66e7db32d3210049f1b060dab4de2a1154bc8574412099b5ada0abce9e6bfbe651a039fa463cad14934a0ad8d163296ec3af7a&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&regmaster=0&pt_login_type=3&pt_aid=0&pt_aaid=16&pt_light=0&pt_3rd_aid=0

儲存請求後返回的Cookies,後面用到

4.獲取vfwebqq

GET:

引數:

響應:

{'retcode': 0, 'result': {'vfwebqq': '49ffa4c595e289720dac8234db28bda95128e97c4fcca3303f65b00af39bd2bb7ef8df4f87cfcd5f'}}

5.第二次登入

POST:

        r='{"ptwebqq":"","clientid":53999199,"psessionid":"","status":"online"}'
        r = r.encode('ISO-8859-1')   

{ 'r': r  }

cookies:

pgv_pvi = self.p('pgv_pvi')
pgv_pvi = pgv_pvi if pgv_pvi!='' else ctx.call('r')

cookies['pgv_si'] = pgv_si
cookies['pgv_pvi'] = pgv_pvi
cookies['pgv_info'] = 'ssid=pgv_pvid=1051433466'


def p(self,c):
	cookies = self.cookies
	result = cookies[c] if (c in cookies) else ''
	return result

響應:

{"result":{"cip":23600812,"f":0,"index":1075,"port":47450,"psessionid":"8368046764001d636f6e6e7365727665725f77656271714031302e3133332e34312e383400001ad00000066b026e040015808a206d0000000a406172314338344a69526d0000002859185d94e66218548d1ecb1a12513c86126b3afb97a3c2955b1070324790733ddb059ab166de6857","status":"online","uin":35946169,"user_state":0,"vfwebqq":"59185d94e66218548d1ecb1a12513c86126b3afb97a3c2955b1070324790733ddb059ab166de6857"},"retcode":0}

至此,一個完整的登入流程完成。

後面再寫如何接收資訊、傳送資訊,敬請留意!!!