修复多个失效的qq相关接口
This commit is contained in:
parent
aaf4d4ea8c
commit
97f3342fb5
|
@ -89,7 +89,7 @@ def generate_data():
|
|||
|
||||
# 创建一个自己编写的qq bot对象
|
||||
bot = Bot()
|
||||
custom_print(u'登录成功,正在获取数据...')
|
||||
custom_print(u'登录成功!')
|
||||
# 更新一下欲输出的markdown文本
|
||||
markdown_content = markdown_content.replace('{qq_number}',bot.qq_number)
|
||||
markdown_content = markdown_content.replace('{qq_icon_png}', 'data/qq_icon.png')
|
||||
|
@ -98,7 +98,7 @@ def generate_data():
|
|||
|
||||
|
||||
# 获取该登录账户的详细资料
|
||||
custom_print(u'正在获取该登录账户的详细数据...')
|
||||
custom_print(u'正在获取该账户的个人数据...')
|
||||
detail_information = bot.get_detail_information()
|
||||
# content为markdown语法文本
|
||||
content = '\n<br/><br/>\n' + '## 我的详细资料\n' + '种类|内容\n:- | :-\n'
|
||||
|
@ -139,26 +139,22 @@ def generate_data():
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# 获取所有好友列表接口已失效
|
||||
'''
|
||||
# 获取所有qq好友的备注名和qq号
|
||||
all_qq_friends = bot.get_all_friends_in_qq()
|
||||
custom_print(u'所有qq好友号码和备注名中...')
|
||||
custom_print(u'正在获取该账户的好友数据...')
|
||||
all_qq_friends = bot.get_all_friends_in_qq() # 获取所有好友列表接口已失效
|
||||
qq_number_list = []
|
||||
for key, friend_group in all_qq_friends.items():
|
||||
for info in friend_group['mems']:
|
||||
qq_number_list.append(info['uin'])
|
||||
|
||||
'''
|
||||
|
||||
|
||||
|
||||
# 获取所有群信息
|
||||
custom_print(u'获取该QQ加入的所有群信息...')
|
||||
custom_print(u'正在获取该账户的所有群信息...')
|
||||
group_list = bot.get_group()
|
||||
print(group_list)
|
||||
# content为markdown语法文本
|
||||
content = '\n\n<br/><br/>\n' + '## 我加入的群资料\n' + '序号|群名|群号|群主QQ\n:- | :-| :-| :-\n'
|
||||
# 获取某个群的群成员信息
|
||||
|
@ -179,7 +175,7 @@ def generate_data():
|
|||
|
||||
|
||||
# 获取过去30天内退出的群名单
|
||||
custom_print(u'获取过去30天退出的群...')
|
||||
custom_print(u'正在获取该账户过去30天退出的群...')
|
||||
data = bot.get_quit_of_group()
|
||||
delete_group_count = 0
|
||||
# content为markdown语法文本
|
||||
|
@ -210,7 +206,7 @@ def generate_data():
|
|||
|
||||
|
||||
# 获取过去364天内删除的好友名单
|
||||
custom_print(u'获取过去12个月删除的好友名单...')
|
||||
custom_print(u'正在获取该账户过去12个月删除的好友名单...')
|
||||
delete_friend_list = bot.get_delete_friend_in_360day()
|
||||
delete_friend_count = len(delete_friend_list)
|
||||
# content为markdown语法文本
|
||||
|
@ -238,7 +234,7 @@ def generate_data():
|
|||
# 判断此次登录的qq是否为vip或者svip
|
||||
# content为markdown语法文本
|
||||
content = '\n\n<br/><br/>\n' + '## 财产分析\n'
|
||||
custom_print(u'判断该QQ是否为高级用户...')
|
||||
custom_print(u'正在判断该账户是否为VIP...')
|
||||
data = bot.is_vip_svip()
|
||||
isSvip = data['isSvip']
|
||||
isVip = data['isSvip']
|
||||
|
@ -252,14 +248,14 @@ def generate_data():
|
|||
content += '此时此刻,我是**QQ VIP**,但不是**QQ SVIP**\n'
|
||||
|
||||
# 获取qb值
|
||||
custom_print(u'获取账户QB值...')
|
||||
custom_print(u'正在获取该账户的Q币...')
|
||||
qb_value = bot.get_qb()
|
||||
timeArray = time.localtime()
|
||||
otherStyleTime = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)
|
||||
content += '截止到**{}**,我剩余的Q币个数为:**{}**个\n\n'.format(otherStyleTime,qb_value)
|
||||
|
||||
# 获取代付信息
|
||||
custom_print(u'获取代付信息中...')
|
||||
custom_print(u'正在获取该账户的代付信息...')
|
||||
pay_list = bot.get_pay_for_another()
|
||||
content += '截止到**{}**,我收到的代付信息条数为:**{}**个'.format(otherStyleTime, len(pay_list))
|
||||
if(len(pay_list) > 0):
|
||||
|
@ -283,7 +279,7 @@ def generate_data():
|
|||
|
||||
|
||||
# 亲密度排行榜 谁在意我
|
||||
custom_print(u'分析好友亲密度数据-谁在意我...')
|
||||
custom_print(u'正在分析好友亲密度数据-谁在意我...')
|
||||
# content为markdown语法文本
|
||||
content = '\n\n<br/><br/>\n' + '## 谁在意我\n'
|
||||
data_list = bot.who_care_about_me()
|
||||
|
@ -292,14 +288,15 @@ def generate_data():
|
|||
n = len(data_list)
|
||||
|
||||
if (len(data_list) > 0):
|
||||
content += '序号|头像|QQ|亲密度\n:- | :-| :-| :-\n'
|
||||
content += '序号|头像|昵称|QQ|亲密度\n:- | :-| :-| :-\n'
|
||||
for index, sub_data in enumerate(data_list[:n]):
|
||||
uin = sub_data['uin']
|
||||
score = sub_data['score']
|
||||
name = sub_data['name']
|
||||
profile = bot.get_profile_picture(uin, size=40)
|
||||
with open('data/' + str(uin) + '.jpg', 'wb') as f:
|
||||
f.write(profile)
|
||||
content += '{}|![](data/{}.jpg)|{}|{}\n'.format(index, uin, uin, score)
|
||||
content += '{}|![](data/{}.jpg)|{}|{}|{}\n'.format(index, uin, name, uin, score)
|
||||
|
||||
# 更新一下欲输出的markdown文本
|
||||
markdown_content += content
|
||||
|
@ -312,7 +309,7 @@ def generate_data():
|
|||
|
||||
|
||||
# 亲密度排行榜 我在意谁
|
||||
custom_print(u'分析好友亲密度数据-我在意谁...')
|
||||
custom_print(u'正在分析好友亲密度数据-我在意谁...')
|
||||
# content为markdown语法文本
|
||||
content = '\n\n<br/><br/>\n' + '## 我在意谁\n'
|
||||
data_list = bot.i_care_about_who()
|
||||
|
@ -321,14 +318,15 @@ def generate_data():
|
|||
n = len(data_list)
|
||||
|
||||
if (len(data_list) > 0):
|
||||
content += '序号|头像|QQ|亲密度\n:- | :-| :-| :-\n'
|
||||
content += '序号|头像|昵称|QQ|亲密度\n:- | :-| :-| :-\n'
|
||||
for index, sub_data in enumerate(data_list[:n]):
|
||||
uin = sub_data['uin']
|
||||
score = sub_data['score']
|
||||
name = sub_data['name']
|
||||
profile = bot.get_profile_picture(uin, size=40)
|
||||
with open('data/' + str(uin) + '.jpg', 'wb') as f:
|
||||
f.write(profile)
|
||||
content += '{}|![](data/{}.jpg)|{}|{}\n'.format(index, uin, uin, score)
|
||||
content += '{}|![](data/{}.jpg)|{}|{}|{}\n'.format(index, uin, name, uin, score)
|
||||
|
||||
# 更新一下欲输出的markdown文本
|
||||
markdown_content += content
|
||||
|
@ -338,11 +336,12 @@ def generate_data():
|
|||
|
||||
|
||||
|
||||
|
||||
# 每个步骤完成后,保存markdown文件,以便防止程序出错时能够保存到最新的数据
|
||||
with open('{}的个人QQ历史报告.md'.format(bot.qq_number), 'w', encoding='utf-8') as file:
|
||||
file.write(markdown_content)
|
||||
custom_print(u'所有数据获取完毕, 并生成了一份报告文件:[{}的个人QQ历史报告.md], 该文件为markdown格式文件, 请下载typora软件以便查看该格式文件, 下载地址为https://typora.io/#windows'.format(bot.qq_number))
|
||||
|
||||
custom_print(u'所有数据获取完毕, 并在当前工作目录下生成了一份报告文件:[{}的个人QQ历史报告.md]'.format(bot.qq_number))
|
||||
custom_print(u'该文件为markdown格式, 请下载typora软件以便查看该文件, 下载地址为https://typora.io/')
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@ class Bot(object):
|
|||
# 登录qun.qq.com
|
||||
|
||||
# 访问网页,为了获取参数pt_login_sig
|
||||
login_url = 'http://ui.ptlogin2.qq.com/cgi-bin/login?appid=549000912&s_url=http://qun.qq.com/member.html'
|
||||
login_url='https://xui.ptlogin2.qq.com/cgi-bin/xlogin?pt_disable_pwd=1&appid=715030901&daid=73&hide_close_icon=1&pt_no_auth=1&s_url=https%3A%2F%2Fqun.qq.com%2Fmember.html%23'
|
||||
html = get_html(login_url, '')
|
||||
# 对返回的cookies进行转化为dict类型,方便处理
|
||||
cookies_back_dict = dict_from_cookiejar(html.cookies)
|
||||
|
@ -65,7 +65,8 @@ class Bot(object):
|
|||
self.cookies_merge_dict_in_qun_qq_com.update(cookies_back_dict)
|
||||
|
||||
# 访问网页,为了获取参数ptqrtoken
|
||||
qrcode_url = 'https://ptlogin2.qq.com/ptqrshow?appid=549000912&e=2&l=M&s=4&d=72&v=4&t=0.39550762134604156'
|
||||
#qrcode_url = 'https://ptlogin2.qq.com/ptqrshow?appid=549000912&e=2&l=M&s=4&d=72&v=4&t=0.39550762134604156'
|
||||
qrcode_url='https://ssl.ptlogin2.qq.com/ptqrshow?appid=715030901&e=2&l=M&s=3&d=72&v=4&t=0.055986512113441966&daid=73&pt_3rd_aid=0'
|
||||
html = get_html(qrcode_url, '')
|
||||
# 对返回的cookies进行转化为dict类型,方便处理
|
||||
cookies_back_dict = dict_from_cookiejar(html.cookies)
|
||||
|
@ -81,13 +82,10 @@ class Bot(object):
|
|||
image_label['image'] = image
|
||||
|
||||
|
||||
|
||||
# 实时检测二维码状态
|
||||
while (True):
|
||||
# 目标网址
|
||||
target_url = 'http://ptlogin2.qq.com/ptqrlogin?u1=http://qun.qq.com/member.html&' + 'ptqrtoken=' + str(
|
||||
ptqrtoken) + '&ptredirect=1&h=1&t=1&g=1&from_ui=1&ptlang=2052&action=0-0-1499652067577&js_ver=10224&js_type=1&login_sig=' + str(
|
||||
pt_login_sig) + '&pt_uistyle=40&aid=549000912&'
|
||||
target_url ='https://ssl.ptlogin2.qq.com/ptqrlogin?u1=https%3A%2F%2Fqun.qq.com%2Fmember.html%23&ptqrtoken={}&ptredirect=1&h=1&t=1&g=1&from_ui=1&ptlang=2052&action=1-5-1647508149682&js_ver=22030810&js_type=1&login_sig={}&pt_uistyle=40&aid=715030901&daid=73&ptdrvs=zE3Wcrd07f4ZnrPfNLLsdLfVh-6bEh5vNlgIR2dcTfep1pxoywDr2Yw03vvhZswWdGxT2OCdJkA_&sid=2353889993957767859&'.format(ptqrtoken, pt_login_sig)
|
||||
|
||||
# 登录,需要带上访问cookies
|
||||
html = get_html(target_url, self.cookies_merge_dict_in_qun_qq_com)
|
||||
|
@ -119,21 +117,22 @@ class Bot(object):
|
|||
self.qq_number = qq_list[0]
|
||||
|
||||
|
||||
#print(html.text)
|
||||
# 登录成功后,会返回一个地址,需要对该地址进行访问以便获取新的返回cookies
|
||||
startIndex = (html.text).find('http')
|
||||
startIndex = (html.text).find('https')
|
||||
endIndex = (html.text).find('pt_3rd_aid=0')
|
||||
url = (html.text)[startIndex:endIndex] + 'pt_3rd_aid=0'
|
||||
|
||||
# 这里需要注意的是,需要禁止重定向,才能正确获得返回的cookies
|
||||
html = get(url, cookies=self.cookies_merge_dict_in_qun_qq_com, allow_redirects=False)
|
||||
# 需要禁止重定向, allow_redirects=False
|
||||
# 需要关闭SSL验证, verify=False
|
||||
html = get(url, cookies = self.cookies_merge_dict_in_qun_qq_com, allow_redirects=False, verify=False)
|
||||
# 把返回的cookies合并进去
|
||||
cookies_back_dict = dict_from_cookiejar(html.cookies)
|
||||
self.cookies_merge_dict_in_qun_qq_com.update(cookies_back_dict)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def login_qzone_qq_com(self):
|
||||
# 登录qzone.qq.com
|
||||
# 访问网页,为了获取参数pt_login_sig
|
||||
|
@ -306,7 +305,6 @@ class Bot(object):
|
|||
submit_data = {'bkn': bkn}
|
||||
html = post_html('https://qun.qq.com/cgi-bin/qun_mgr/get_group_list', self.cookies_merge_dict_in_qun_qq_com, submit_data)
|
||||
group_info = loads(html.text)
|
||||
print(group_info)
|
||||
return group_info['join']
|
||||
|
||||
|
||||
|
@ -326,14 +324,19 @@ class Bot(object):
|
|||
|
||||
def get_all_friends_in_qq(self):
|
||||
|
||||
'''
|
||||
# 获取所有qq好友基本信息
|
||||
# bkn由参数skey通过另一个加密函数得到
|
||||
bkn = hash33_bkn(self.cookies_merge_dict_in_qun_qq_com['skey'])
|
||||
submit_data = {'bkn': bkn}
|
||||
html = post_html('https://qun.qq.com/cgi-bin/qun_mgr/get_friend_list', self.cookies_merge_dict_in_qun_qq_com, submit_data)
|
||||
friend_info = loads(html.text)
|
||||
# print(friend_info)
|
||||
return friend_info['result']
|
||||
'''
|
||||
|
||||
# 获取所有好友列表接口已失效
|
||||
return None
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -662,16 +665,20 @@ class Bot(object):
|
|||
# bkn由参数skey通过另一个加密函数得到
|
||||
bkn = hash33_bkn(self.cookies_merge_dict_in_qzone_qq_com['p_skey'])
|
||||
|
||||
# 获取参数qzonetoken
|
||||
urllib3.disable_warnings()
|
||||
target_url = 'https://user.qzone.qq.com/' + self.qq_number
|
||||
html = get_html(target_url, self.cookies_merge_dict_in_qzone_qq_com)
|
||||
qzonetoken = re.findall(r'{ try{return "(.+?)";', html.text)
|
||||
qzonetoken = qzonetoken[0]
|
||||
# # 获取参数qzonetoken
|
||||
# urllib3.disable_warnings()
|
||||
# target_url = 'https://user.qzone.qq.com/' + self.qq_number
|
||||
# print(target_url)
|
||||
# html = get_html(target_url, self.cookies_merge_dict_in_qzone_qq_com)
|
||||
# print(html.text)
|
||||
# qzonetoken = re.findall(r'{ try{return "(.+?)";', html.text)
|
||||
# qzonetoken = qzonetoken[0]
|
||||
|
||||
|
||||
# 获取谁在意我数据
|
||||
target_url = 'https://rc.qzone.qq.com/proxy/domain/r.qzone.qq.com/cgi-bin/tfriend/friend_ship_manager.cgi?uin=' + self.qq_number + '&do=2&rd=0.32313768189269365&fupdate=1&clean=0&g_tk=' + str(bkn) + '&qzonetoken=' + str(qzonetoken) + '&g_tk=' + str(bkn)
|
||||
#target_url = 'https://rc.qzone.qq.com/proxy/domain/r.qzone.qq.com/cgi-bin/tfriend/friend_ship_manager.cgi?uin=' + self.qq_number + '&do=2&rd=0.32313768189269365&fupdate=1&clean=0&g_tk=' + str(bkn) + '&qzonetoken=' + str(qzonetoken) + '&g_tk=' + str(bkn)
|
||||
target_url = 'https://user.qzone.qq.com/proxy/domain/r.qzone.qq.com/cgi-bin/tfriend/friend_ship_manager.cgi?uin={}&do=2&rd=0.6629930546880991&fupdate=1&clean=1&g_tk={}&g_tk={}'.format(self.qq_number, bkn, bkn)
|
||||
|
||||
urllib3.disable_warnings()
|
||||
html = get_html(target_url, self.cookies_merge_dict_in_qzone_qq_com)
|
||||
|
||||
|
@ -692,16 +699,17 @@ class Bot(object):
|
|||
# bkn由参数skey通过另一个加密函数得到
|
||||
bkn = hash33_bkn(self.cookies_merge_dict_in_qzone_qq_com['p_skey'])
|
||||
|
||||
# 获取参数qzonetoken
|
||||
urllib3.disable_warnings()
|
||||
target_url = 'https://user.qzone.qq.com/' + self.qq_number
|
||||
html = get_html(target_url, self.cookies_merge_dict_in_qzone_qq_com)
|
||||
qzonetoken = re.findall(r'{ try{return "(.+?)";', html.text)
|
||||
qzonetoken = qzonetoken[0]
|
||||
# # 获取参数qzonetoken
|
||||
# urllib3.disable_warnings()
|
||||
# target_url = 'https://user.qzone.qq.com/' + self.qq_number
|
||||
# html = get_html(target_url, self.cookies_merge_dict_in_qzone_qq_com)
|
||||
# qzonetoken = re.findall(r'{ try{return "(.+?)";', html.text)
|
||||
# qzonetoken = qzonetoken[0]
|
||||
|
||||
|
||||
# 获取我在意谁数据
|
||||
target_url = 'https://rc.qzone.qq.com/proxy/domain/r.qzone.qq.com/cgi-bin/tfriend/friend_ship_manager.cgi?uin=' + self.qq_number + '&do=1&rd=0.9680629025032721&fupdate=1&clean=1&g_tk=' + str(bkn) + '&qzonetoken=' + str(qzonetoken) + '&g_tk=' + str(bkn)
|
||||
#target_url = 'https://rc.qzone.qq.com/proxy/domain/r.qzone.qq.com/cgi-bin/tfriend/friend_ship_manager.cgi?uin=' + self.qq_number + '&do=1&rd=0.9680629025032721&fupdate=1&clean=1&g_tk=' + str(bkn) + '&qzonetoken=' + str(qzonetoken) + '&g_tk=' + str(bkn)
|
||||
target_url = 'https://user.qzone.qq.com/proxy/domain/r.qzone.qq.com/cgi-bin/tfriend/friend_ship_manager.cgi?uin={}&do=1&rd=0.6629930546880991&fupdate=1&clean=1&g_tk={}&g_tk={}'.format(self.qq_number, bkn, bkn)
|
||||
urllib3.disable_warnings()
|
||||
html = get_html(target_url, self.cookies_merge_dict_in_qzone_qq_com)
|
||||
|
||||
|
|
|
@ -12,14 +12,14 @@ def get_html(url,submit_cookies):
|
|||
|
||||
# 设置请求头,模拟人工
|
||||
header = {
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36',
|
||||
'Referer' : 'http://ui.ptlogin2.qq.com/cgi-bin/login?appid=549000912&s_url=http://qun.qq.com/member.html'
|
||||
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36',
|
||||
'Referer': 'http://ui.ptlogin2.qq.com/cgi-bin/login?appid=549000912&s_url=http://qun.qq.com/member.html'
|
||||
}
|
||||
# 屏蔽https证书警告
|
||||
urllib3.disable_warnings()
|
||||
|
||||
# 网页访问,get方式
|
||||
html = get(url, cookies = submit_cookies, headers=header, verify=False)
|
||||
html = get(url, cookies=submit_cookies, headers=header, verify=False)
|
||||
|
||||
return html
|
||||
|
||||
|
@ -29,13 +29,13 @@ def post_html(url,submit_cookies,submit_data):
|
|||
|
||||
# 设置请求头,模拟人工
|
||||
header = {
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36',
|
||||
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36',
|
||||
'Referer' : 'https://qun.qq.com/member.html'
|
||||
}
|
||||
# 屏蔽https证书警告
|
||||
urllib3.disable_warnings()
|
||||
|
||||
# 网页访问,post方式
|
||||
html = post(url, data=submit_data, cookies = submit_cookies, headers=header, verify=False)
|
||||
html = post(url, data=submit_data, cookies=submit_cookies, headers=header, verify=False)
|
||||
|
||||
return html
|
Loading…
Reference in New Issue