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的,也没去找原文链接了,如博主看见,记得私聊我加上原文链接

posted @   Ivan丶ky  阅读(397)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示