今天遇到一個(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群成員】即可獲得這份代碼。