Python提取QQ群成員QQ號(hào)及昵稱

今天遇到一個(gè)問(wèn)題,需要導(dǎo)出QQ群成員,但貌似只有群主有導(dǎo)出QQ群成員的權(quán)限。本想網(wǎng)上找找有沒(méi)有這樣的軟件,但折騰一個(gè)軟件太煩,總有刁民想謀害朕,誰(shuí)知道軟件有沒(méi)有病毒呢?因此就想著用Python寫段小代碼來(lái)獲取QQ群成員QQ號(hào)及昵稱。

折騰了十幾分鐘,搞定了,成功獲取了QQ群成員昵稱和QQ號(hào)。代碼示例如下:

import requests
import browsercookie
import random,time

class QQ(object):
    def __init__(self,gc,bkn,num):
        self.headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'}
        self.gc = gc
        self.bkn = bkn
        self.num = num//40 + 1
        self.url = 'https://qun.qq.com/cgi-bin/qun_mgr/search_group_members'

    def get_cookies(self):
        cookies = browsercookie.chrome()
        cookies = [cookie for cookie in cookies if 'qq.com' in str(cookie)]
        cookies = requests.utils.dict_from_cookiejar(cookies)
        return cookies

    def qqs(self):
        cookies = self.get_cookies()
        qqs = []
        for i in range(self.num):
            num1 = i * 40
            num2 = (i + 1) * 40
            data = {'gc': self.gc,
                    'st': '{}'.format(num1),
                    'end': '{}'.format(num2),
                    'sort': '0',
                    'bkn': self.bkn
                    }
            res = requests.post(self.url, data=data, headers=self.headers, cookies = cookies).json()
            time.sleep(random.uniform(2, 3.5))
            members = res['mems']
            for line in members:
                qq = line.get('uin', 87654321)
                nick = line.get('nick','未知')
                qq_data = '{}\t{}'.format(nick,qq)
                print(qq_data)
                qqs.append(qq_data)
        return qqs

    def save_qqs(self):
        qqs = self.qqs()
        with open('qqs.txt','w',encoding='utf-8-sig') as f:
            f.writelines([qq+'\n' for qq in qqs])

if __name__ == '__main__':
    #修改三個(gè)參數(shù),即QQ群號(hào),bkn值,群成員個(gè)數(shù)
    qq = QQ('7654321','123456789',888)
    qq.save_qqs()

代碼使用方法

首先需要安裝requests庫(kù)和browsercookie庫(kù),一個(gè)用來(lái)發(fā)送請(qǐng)求,一個(gè)用來(lái)自動(dòng)處理登陸后的cookie。實(shí)例化的時(shí)候需要傳入三個(gè)參數(shù),即gc,bkn,num。gc代表QQ群號(hào),bkn不知道啥意思,通過(guò)瀏覽器抓包獲得,num代表QQ群成員個(gè)數(shù)。

bkn通過(guò)抓包獲得,方法是首先訪問(wèn)https://qun.qq.com/,登陸之后點(diǎn)擊群管理,點(diǎn)擊成員管理,再點(diǎn)擊切換QQ群,選擇將要提取群成員的QQ群。然后右鍵檢查元素,切換到Network標(biāo)簽,下滑鼠標(biāo),找到searchgroupmembers,點(diǎn)進(jìn)去,點(diǎn)擊Headers選項(xiàng)卡,找到From Data,即可獲取bkn的值。

將QQ群號(hào),bkn值及群成員個(gè)數(shù)傳入,運(yùn)行代碼即可,數(shù)據(jù)最終保存在qqs.txt文件中。

browsercookie官方文檔自動(dòng)獲取cookie的示例在這里并不適用,需要做一層篩選,只選擇qq.com域名下的cookie并用requests.utils.dictfromcookiejar轉(zhuǎn)化,然后傳入才可獲得正確的數(shù)據(jù)。如果不做篩選直接傳入,則獲取不到數(shù)據(jù)。

PS:關(guān)注公眾號(hào)后臺(tái)回復(fù)關(guān)鍵詞【QQ群成員】即可獲得這份代碼。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 點(diǎn)擊查看原文 Web SDK 開(kāi)發(fā)手冊(cè) SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 14,278評(píng)論 0 15
  • 搜索QQ群的時(shí)候,我們輸入一個(gè)關(guān)鍵詞,就會(huì)跳出來(lái)很多很多群,那么哪個(gè)群排名在前面,哪個(gè)群就能吸引到流量。如何把自己...
    8a89bec818ec閱讀 1,593評(píng)論 0 4
  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線程,因...
    小菜c閱讀 7,295評(píng)論 0 17
  • 張三其人性格耿直,心軟嘴黑。不善恭維所以在單位領(lǐng)導(dǎo)不器重。不隨波逐流同事不喜歡。自命不凡也只能孤芳自賞了!別說(shuō)少年...
    惠德蘭馨閱讀 376評(píng)論 0 3
  • 零零散散的還有幾人,依然保持沉默,卻也算是真正要開(kāi)口的卒子,沒(méi)有什么敢不敢,只是確定了后果之后還要背大道而弛,槍打...
    澤年閱讀 352評(píng)論 0 0

友情鏈接更多精彩內(nèi)容