python 之 获取QQ好友列表
python 之 获取QQ好友列表
# -*- coding: UTF-8 -*-
import httplib2
import json
import re
def one():
def LongToInt(value): # 由于int+int超出范围后自动转为long型,通过这个转回来
if value > 0x7fffffff or value < 0x80000000:
return int(value & 0x7fffffff)
else:
return int(value)
def LeftShiftInt(number, step): # 由于左移可能自动转为long型,通过这个转回来
if (number << step) > 0x7fffffff or (number << step) < 0x80000000:
return int((number << step) - 0x200000000)
else:
return int(number << step)
def getNewGTK(p_skey, skey, rv2):
b = p_skey or skey or rv2
a = 5381
for i in range(0, len(b)):
a = a + LeftShiftInt(a, 5) + ord(b[i])
a = LongToInt(a)
return a & 0x7fffffff
h = httplib2.Http()
url = 'http://m.qzone.com/friend/mfriend_list?g_tk=[g_tk]&res_uin=[QQ号码]&res_type=normal&format=json&count_per_page=10&page_index=0&page_type=0&mayknowuin=&qqmailstat='
# 输入qq号
myqq='QQ账号'
# 输入cookie
cookieStr = '一串很长的值'
headers = {'Cookie': cookieStr}
if re.search(r'p_skey=(?P<p_skey>[^;]*)', cookieStr):
p_skey = re.search(r'p_skey=(?P<p_skey>[^;]*)', cookieStr).group('p_skey')
else:
p_skey = None
if re.search(r'skey=(?P<skey>[^;]*)', cookieStr):
skey = re.search(r'skey=(?P<skey>[^;]*)', cookieStr).group('skey')
else:
skey = None
if re.search(r'rv2=(?P<rv2>[^;]*)', cookieStr):
rv2 = re.search(r'rv2=(?P<rv2>[^;]*)', cookieStr).group('rv2')
else:
rv2 = None
print('gtk='+str(getNewGTK(p_skey, skey, rv2)))
url = url.replace('[g_tk]', str(getNewGTK(p_skey, skey, rv2)))
url = url.replace('[QQ号码]', myqq)
print('url:'+ url)
resp, content = h.request(url, 'GET', headers=headers)
print(resp)
print(content)
output = json.loads(content) # json字符串转字典
if output['code'] == -3000:
print(output['message'])
else:
items_list = output['data']['list']
print('-------------------------------------------------------')
print(items_list)
print('-------------------------------------------------------')
qqlist = set()
for item in items_list:
# qqlist.add('uin:'+str(item['uin'])+'/nick:'+item['nick']+'/remark:'+item['remark'])
# qqlist.add(item['nick'])
qqlist.add(item['remark'])
# 打印信息并输出到文件
print('获取QQ号个数' + str(len(qqlist)))
filename = 'qqlist.txt'
fileobj = open(filename, 'w',encoding='utf-8')
result = [str(qq) + '\n' for qq in sorted(qqlist)]
fileobj.writelines(result)
fileobj.flush()
fileobj.close()
print('写入完成')
这篇文章是很久之前,网上大佬那边copy的,也没去找原文链接了,如博主看见,记得私聊我加上原文链接
分类:
Python
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)