from PIL import Image
import time
import requests
import json
import re
requests.packages.urllib3.disable_warnings()
def scanfIm():
url = "https://graph.qq.com/qclogin/get_qr"
headers = {
'Host': 'graph.qq.com',
'Content-Type': 'application/x-www-form-urlencoded',
'Connection': 'keep-alive',
'User-Agent': 'open-sdk/1.0.0.18 Windows/10.0.17763',
}
# precode是关键点
data = {
"client_id": "101478239",
"precode": precode,
"sn": "xsn",
"size": "100",
"app_type": "1",
"dev_hmac": "SX1QTl4vuhgBjNKq2I5GkHKzxfKMNL4Y6jo_XkKvXWE",
"nonce": "8620503023166533470"
}
r = requests.post(url, headers=headers, data=data, verify=False)
j = json.loads(r.text)
img_url = j['img_url']
query_url = j['query_url']
im = Image.open(requests.get(img_url, stream=True, verify=False).raw)
im.resize((150, 150))
im.show()
im.save('qr.png')
while True:
ret = isscan(query_url)
if ret == 1:
getctk(query_url)
break
if ret == 3:
break
print(str(ctk)+"---"+str(openid)+"---"+str(accesstoken))
getjumpurl()
def getjumpurl():
url = "https://graph.qq.com/qclogin/get_jump"
headers = {
'Host': 'graph.qq.com',
'Content-Type': 'application/x-www-form-urlencoded',
'Connection': 'keep-alive',
'User-Agent': 'open-sdk/1.0.0.18 Windows/10.0.17763',
}
data = {
"ctk": ctk,
"dev_hmac": "SX1QTl4vuhgBjNKq2I5GkHKzxfKMNL4Y6jo_XkKvXWE",
"nonce": "8620503023166533470",
"openid": openid,
"accesstoken": accesstoken,
"src_appid": "101478239",
"dst_appid": "101478239",
"redirect_uri": "https%3A%2F%2Fp.guanjia.qq.com%2Fbin%2Fuser%2Fopenidjump.php%3Fredirect%3Dhttps%3A%2F%2Fs.pcmgr.qq.com%2Fuser_v3%2F",
"state": "ADTAG%3DCLIENT.GJ.TASK.sid%3D1%26version%3D13.6.20660.301%26guid%3Decc7dda358ffeea1744c0337549d029f%26timestamp%3D12282851"
}
r = requests.post(url, headers=headers, data=data, verify=False)
j = json.loads(r.text)
jump_url = j['jump_url']
getlocurl(jump_url)
def getlocurl(jump_url):
header = {
'Host': 'graph.qq.com',
'Connection': 'keep-alive',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.641.134 Safari/537.36 QBCore/3.43.641.400 QQBrowser/9.0.2524.400',
'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.5;q=0.4',
'Accept-Encoding': 'gzip, deflate'
}
# 这里是302状态码,为重定向转发
s = requests.session()
r = s.get(jump_url, headers=header,
allow_redirects=False, verify=False)
locurl = r.headers["Location"]
getcookie(locurl)
def getcookie(locurl):
global cookies
header = {
'Host': 'p.guanjia.qq.com',
'Connection': 'keep-alive',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.641.134 Safari/537.36 QBCore/3.43.641.400 QQBrowser/9.0.2524.400',
'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.5;q=0.4',
'Accept-Encoding': 'gzip, deflate'
}
# 这里是302状态码,为重定向转发
s = requests.session()
r = s.get(locurl, headers=header,
allow_redirects=False, verify=False)
cookie = r.headers["Set-Cookie"]
__qc__openid = re.findall(r'__qc__openid=.*?;', str(cookie))[0]
pm_name = re.findall(r'pm_name=.*?;', str(cookie))[0]
__qc__k = re.findall(r'__qc__k=.*?;', str(cookie))[0]
pm_head = re.findall(r'pm_head=.*?;', str(cookie))[0]
cookies = str(__qc__openid+pm_name+__qc__k+pm_head)
cookies = extract_cookies(cookies)
print(cookies)
def getctk(url):
global ctk, openid, accesstoken
headers = {
'Host': 'graph.qq.com',
'Content-Type': 'application/x-www-form-urlencoded',
'Connection': 'keep-alive',
'User-Agent': 'open-sdk/1.0.0.18 Windows/10.0.17763',
}
while True:
r = requests.get(url, headers=headers, verify=False)
j = json.loads(r.text)
n = len(j)
if n > 2:
accesstoken = j['accesstoken']
ctk = j['ctk']
openid = j['openid']
break
def isscan(url):
headers = {
'Host': 'graph.qq.com',
'Content-Type': 'application/x-www-form-urlencoded',
'Connection': 'keep-alive',
'User-Agent': 'open-sdk/1.0.0.18 Windows/10.0.17763',
}
r = requests.get(url, headers=headers, verify=False)
j = json.loads(r.text)
msg = j['msg']
ret = j['ret']
print(str(msg)+"--"+str(ret)+"\n")
if ret == 2:
print('waitting...')
return 2
if ret == 1:
print('scanf successful!')
return 1
if ret == 3:
print('have no using qecode')
return 3
t = int(round(time.time()*1000))
t10 = str(int(time.time()))
def getDetails():
url = "https://p.guanjia.qq.com/bin/user/qrydjjs.php?callback=jQuery17208707432234659791_" + \
str(t)+"&isopenid=1&_="+str(t)
headers = {
'Host': 'p.guanjia.qq.com',
'Connection': 'keep-alive',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.641.134 Safari/537.36 QBCore/3.43.641.400 QQBrowser/9.0.2524.400',
'Referer': 'https://s.pcmgr.qq.com/user_v3/?ADTAG=CLIENT.GJ.TASK.sid=1&version=13.6.20660.301&guid=ecc7dda358ffeea1744c0337549d029f×tamp=104119463',
'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.5;q=0.4',
'Accept-Encoding': 'gzip, deflate'
}
r = requests.get(url, headers=headers, cookies=cookies, verify=False)
rs = str(re.findall(r'{.*?}', str(r.text))[0])+"}"
j = json.loads(rs, strict=False)
totalSpeedupDays = j['result']['totalSpeedupDays']
print(totalSpeedupDays)
def extract_cookies(cookies):
cookies = dict([l.split("=", 1) for l in cookies.split("; ")])
return cookies
# 请求加速的
def reqtospeed():
url = "https://p.guanjia.qq.com/bin/user/speeduppickup.php?op=start&callback=jQuery17207531308580655605_" + \
str(t)+"&isopenid=1&_="+str(t)
headers = {
'Host': 'p.guanjia.qq.com',
'Connection': 'keep-alive',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.641.134 Safari/537.36 QBCore/3.43.641.400 QQBrowser/9.0.2524.400',
'Referer': 'https://s.pcmgr.qq.com/user_v3/inc/speedupb.html?t=0.08087191707454622',
'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.5;q=0.4',
'Accept-Encoding': 'gzip, deflate'
}
r = requests.get(url, headers=headers, cookies=cookies, verify=False)
rs = str(re.findall(r'{.*?}', str(r.text))[0])+"}"
j = json.loads(rs, strict=False)
u32Status = j['result']['u32Status']
if u32Status == 1:
print('request to Speed successful')
if u32Status == 3:
print('Speed have finished,need not to request!')
else:
print('request to Speed failed')
# 请求加速的时长
def querspeed():
url = "https://p.guanjia.qq.com/bin/user/speeduppickup.php?op=query&callback=jjQuery17207531308580655605_" + \
str(t)+"&isopenid=1&_="+str(t)
headers = {
'Host': 'p.guanjia.qq.com',
'Connection': 'keep-alive',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.641.134 Safari/537.36 QBCore/3.43.641.400 QQBrowser/9.0.2524.400',
'Referer': 'https://s.pcmgr.qq.com/user_v3/inc/speedupb.html?t=0.08087191707454622',
'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.5;q=0.4',
'Accept-Encoding': 'gzip, deflate'
}
r = requests.get(url, headers=headers, cookies=cookies, verify=False)
rs = str(re.findall(r'{.*?}', str(r.text))[0])+"}"
j = json.loads(rs, strict=False)
u32Status = j['result']['u32Status']
u32SpeedupSec = j['result']['u32SpeedupSec']
if u32Status == 1:
print('request Speed successful')
if u32SpeedupSec != 1800 and u32Status == 2:
print('Speeding... '+str(u32SpeedupSec))
if u32SpeedupSec == 1800 and u32Status == 3:
# 加速时间已完成,然后请求领取加速时长
sucspeed()
if u32Status == 4 and u32SpeedupSec == 1800:
print('Speed have finished')
# 加速成功的
def sucspeed():
url = "https://p.guanjia.qq.com/bin/user/speeduppickup.php?op=update&callback=jQuery17207531308580655605_" + \
str(t)+"&isopenid=1&_="+str(t)
headers = {
'Host': 'p.guanjia.qq.com',
'Connection': 'keep-alive',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.641.134 Safari/537.36 QBCore/3.43.641.400 QQBrowser/9.0.2524.400',
'Referer': 'https://s.pcmgr.qq.com/user_v3/inc/speedupb.html?t=0.08087191707454622',
'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.5;q=0.4',
'Accept-Encoding': 'gzip, deflate'
}
r = requests.get(url, headers=headers, cookies=cookies, verify=False)
rs = str(re.findall(r'{.*?}', str(r.text))[0])+"}"
j = json.loads(rs, strict=False)
u32Status = j['result']['u32Status']
if u32Status == 1:
print('Speed successful,exit...')
else:
print('Speed loading...')
if __name__ == '__main__':
scanfIm()
time.sleep(3)
reqtospeed()
time.sleep(5)
querspeed()
time.sleep(5)
sucspeed()
QQ腾讯管家等级加速
最新推荐文章于 2023-08-31 23:24:55 发布