def get_quit_of_group(self): # 获取最近30天内退出的群 # 需要提交的数据 # bkn由参数skey通过另一个加密函数得到 bkn = hash33_bkn(self.cookies_merge_dict_in_qun_qq_com['skey']) submit_data = {'bkn': str(bkn)} # 设置请求头,模拟人工 header = { 'Accept': 'application/json, text/javascript, */*; q=0.01', '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', 'Content-Type': 'text/plain', 'origin': 'https://huifu.qq.com', 'referer': 'https://huifu.qq.com/recovery/index.html?frag=0' } # 屏蔽https证书警告 requests.packages.urllib3.disable_warnings() # 网页访问,post方式 html = requests.post('https://huifu.qq.com/cgi-bin/gr_grouplist', data=submit_data, cookies=self.cookies_merge_dict_in_qun_qq_com, headers=header, verify=False) # 将返回数据解析为python对象 result = json.loads(html.text) return result
def get_members_in_group(self, group_number): # 获取某个群的群成员 # bkn由参数skey通过另一个加密函数得到 bkn = hash33_bkn(self.cookies_merge_dict_in_qun_qq_com['skey']) url = 'http://qinfo.clt.qq.com/cgi-bin/qun_info/get_members_info_v1?friends=1&name=1&gc=' + str( group_number) + '&bkn=' + str(bkn) + '&src=qinfo_v3' html = get_html(url, self.cookies_merge_dict_in_qun_qq_com) group_member = json.loads(html.text) return group_member
def get_info_in_qq_friend(self, qq_number): # 获取某个qq好友的详细信息 # 需要提交的数据 # bkn由参数skey通过另一个加密函数得到 bkn = hash33_bkn(self.cookies_merge_dict_in_qun_qq_com['skey']) submit_data = { 'keyword': str(qq_number), 'ldw': str(bkn), 'num': '20', 'page': '0', 'sessionid': '0', 'agerg': '0', 'sex': '0', 'firston': '0', 'video': '0', 'country': '1', 'province': '65535', 'city': '0', 'district': '0', 'hcountry': '1', 'hprovince': '0', 'hcity': '0', 'hdistrict': '0', 'online': '0' } # 需要提交的cookies # cookies = {'uin':self.cookies_merge_dict_in_qun_qq_com['uin'], 'skey':self.cookies_merge_dict_in_qun_qq_com['skey'], 'ptisp':self.cookies_merge_dict_in_qun_qq_com['ptisp'], 'RK':self.cookies_merge_dict_in_qun_qq_com['RK'], 'ptcz':self.cookies_merge_dict_in_qun_qq_com['ptcz']} # 设置请求头,模拟人工 header = { 'Accept': 'application/json, text/javascript, */*; q=0.01', 'Origin': 'http://find.qq.com', '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', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'Referer': 'http://find.qq.com/', } # 屏蔽https证书警告 requests.packages.urllib3.disable_warnings() # 网页访问,post方式 html = requests.post('http://cgi.find.qq.com/qqfind/buddy/search_v3', data=submit_data, cookies=self.cookies_merge_dict_in_qun_qq_com, headers=header, verify=False) # 将好友信息解析为python对象 friend_info = json.loads(html.text) # print(friend_info) return friend_info['result']['buddy']['info_list'][0]
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 = json.loads(html.text) # print(friend_info) return friend_info['result']
def get_group(self): # 获取所有群基本信息 # 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_group_list', self.cookies_merge_dict_in_qun_qq_com, submit_data) group_info = json.loads(html.text) # print(group_info) return group_info['join']
def get_delete_friend_in_360day(self): # 获取最近一年删除的好友名单 # 需要提交的数据 # bkn由参数skey通过另一个加密函数得到 bkn = hash33_bkn(self.cookies_merge_dict_in_qun_qq_com['skey']) qq_number = str(self.qq_number) skey = str(self.cookies_merge_dict_in_qun_qq_com['skey']) url = 'https://proxy.vip.qq.com/cgi-bin/srfentry.fcgi?bkn=' + str( bkn ) + '&ts=&g_tk=' + str( bkn ) + '&data={"11053":{"iAppId":1,"iKeyType":1,"sClientIp":"","sSessionKey":"' + skey + '","sUin":"' + qq_number + '"}}' # 设置请求头,模拟人工 header = { 'Accept': 'application/json, text/javascript, */*; q=0.01', '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', 'Accept-Encoding': 'gzip, deflate', 'Referer': 'https://huifu.qq.com/recovery/index.html?frag=1', 'Origin': 'https://huifu.qq.com', 'Connection': 'close' } # 屏蔽https证书警告 requests.packages.urllib3.disable_warnings() # 网页访问,post方式 html = requests.get(url, cookies=self.cookies_merge_dict_in_qun_qq_com, headers=header, verify=False) # 将返回数据解析为python对象 result = json.loads(html.text) # print(result) # 364天内没有删除的好友 delFriendList = result['11053']['data']['delFriendList'] if (len(delFriendList) == 0): return {} # 364天内有删除的好友 qq_number_list = delFriendList['364']['vecUin'] # 返回364天内的被删除的好友名单 return qq_number_list
def is_vip_svip(self): # 判断此次登录的qq是否为vip或者svip # 需要提交的数据 # bkn由参数skey通过另一个加密函数得到 bkn = hash33_bkn(self.cookies_merge_dict_in_qun_qq_com['skey']) qq_number = str(self.qq_number) skey = str(self.cookies_merge_dict_in_qun_qq_com['skey']) url = 'https://proxy.vip.qq.com/cgi-bin/srfentry.fcgi?bkn=' + str( bkn ) + '&ts=&g_tk=' + str( bkn ) + '&data={"11053":{"iAppId":1,"iKeyType":1,"sClientIp":"","sSessionKey":"' + skey + '","sUin":"' + qq_number + '"}}' # 设置请求头,模拟人工 header = { 'Accept': 'application/json, text/javascript, */*; q=0.01', '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', 'Accept-Encoding': 'gzip, deflate', 'Referer': 'https://huifu.qq.com/recovery/index.html?frag=1', 'Origin': 'https://huifu.qq.com', 'Connection': 'close' } # 屏蔽https证书警告 requests.packages.urllib3.disable_warnings() # 网页访问,post方式 html = requests.get(url, cookies=self.cookies_merge_dict_in_qun_qq_com, headers=header, verify=False) # 将返回数据解析为python对象 result = json.loads(html.text) isSvip = result['11053']['data']['isSvip'] isVip = result['11053']['data']['isVip'] return {'isSvip': isSvip, 'isVip': isVip}
def get_members_in_group(self, group_number): # 获取某个群的群成员 # bkn由参数skey通过另一个加密函数得到 bkn = hash33_bkn(self.cookies_merge_dict['skey']) # 由于接口限制每次最多获取20个成员的信息,所以我们先获取一遍,得到群成员的数量,再在后面重复获取几次 submit_data = { 'gc': group_number, 'st': '0', 'end': '0', 'sort': '0', 'bkn': bkn, } html = post_html( 'https://qun.qq.com/cgi-bin/qun_mgr/search_group_members', self.cookies_merge_dict, submit_data) group_member = json.loads(html.text) group_count = group_member['count'] # print(group_count) now_count = 0 members_in_group_list = [] while (now_count <= group_count): if (now_count <= group_count - 20): submit_data = { 'gc': group_number, 'st': str(now_count), 'end': str(now_count + 20), 'sort': '0', 'bkn': bkn, } html = post_html( 'https://qun.qq.com/cgi-bin/qun_mgr/search_group_members', self.cookies_merge_dict, submit_data) group_member = json.loads(html.text) # print('end_count:{}'.format(now_count+20)) # print(group_member['mems']) #将群成员数据合并到原有的列表中 members_in_group_list += group_member['mems'] now_count += 20 else: submit_data = { 'gc': group_number, 'st': str(now_count), 'end': str(group_count), 'sort': '0', 'bkn': bkn, } html = post_html( 'https://qun.qq.com/cgi-bin/qun_mgr/search_group_members', self.cookies_merge_dict, submit_data) group_member = json.loads(html.text) # print('end_count:{}'.format(group_count)) # print(group_member['mems']) #将群成员数据合并到原有的列表中 members_in_group_list += group_member['mems'] now_count += 20 print(members_in_group_list) time.sleep(2) # 对得到的群成员列表进行去重操作 tmp_list = [] for member in members_in_group_list: if member not in tmp_list: tmp_list.append(member) members_in_group_list = tmp_list return members_in_group_list