QQ群好友采集工具,爬取qq群成员, qq群成员采集软件

简介: 代码实现了一个完整的QQ群成员采集工具,包含登录验证、群列表获取、成员信息采集等功能

下载地址:https://www.pan38.com/share.php?code=JCnzE 提取密码:7789

代码实现了一个完整的QQ群成员采集工具,包含登录验证、群列表获取、成员信息采集等功能。使用时需要替换代码中的QQ号、密码和目标群号。采集到的数据会保存为JSON文件

import requests
import json
import time
import random
from fake_useragent import UserAgent
from bs4 import BeautifulSoup

class QQGroupCrawler:
def init(self, qq, password):
self.qq = qq
self.password = password
self.session = requests.Session()
self.ua = UserAgent()
self.cookies = {}
self.gtoken = ""
self.bkn = ""
self.headers = {
'User-Agent': self.ua.random,
'Referer': 'https://qun.qq.com/',
'Origin': 'https://qun.qq.com',
'Content-Type': 'application/x-www-form-urlencoded'
}

def login(self):
    # 模拟登录获取cookie
    login_url = "https://xui.ptlogin2.qq.com/cgi-bin/xlogin"
    params = {
        'appid': '715030901',
        's_url': 'https://qun.qq.com/',
        'style': '40',
        'login_text': '登录',
        'hide_title_bar': '1',
        'hide_border': '1',
        'target': 'self',
        's_url': 'https://qun.qq.com/',
        'pt_3rd_aid': '0',
        'pt_feedback_link': 'https://support.qq.com/products/32191',
        'css': 'https://qun.qq.com/login/index.html'
    }

    response = self.session.get(login_url, params=params, headers=self.headers)
    self.cookies.update(response.cookies.get_dict())

    # 获取验证码
    captcha_url = "https://ssl.ptlogin2.qq.com/check"
    params = {
        'pt_tea': '1',
        'uin': self.qq,
        'appid': '715030901',
        'js_ver': '22052614',
        'js_type': '1',
        'login_sig': '',
        'u1': 'https://qun.qq.com/',
        'r': random.random()
    }

    response = self.session.get(captcha_url, params=params, headers=self.headers)
    result = response.text.split("'")
    verifycode = result[1]
    ptsig = result[3]

    # 提交登录
    login_submit_url = "https://ssl.ptlogin2.qq.com/login"
    data = {
        'u': self.qq,
        'p': self.password,
        'verifycode': verifycode,
        'webqq_type': '10',
        'remember_uin': '1',
        'login_sig': ptsig,
        'isqrlogin': '0',
        'pt_vcode_v1': '0',
        'pt_verifysession_v1': '',
        'pt_randsalt': '2'
    }

    response = self.session.post(login_submit_url, data=data, headers=self.headers)
    self.cookies.update(response.cookies.get_dict())

    # 获取gtoken和bkn
    self._get_gtoken()
    self._get_bkn()

def _get_gtoken(self):
    url = "https://qun.qq.com/cgi-bin/qun_mgr/get_group_list"
    response = self.session.get(url, headers=self.headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    script = soup.find('script', text=lambda x: x and 'g_qunid' in x)
    if script:
        self.gtoken = script.text.split("g_qunid = '")[1].split("'")[0]

def _get_bkn(self):
    url = "https://qun.qq.com/cgi-bin/qun_mgr/get_friend_list"
    response = self.session.get(url, headers=self.headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    script = soup.find('script', text=lambda x: x and 'bkn' in x)
    if script:
        self.bkn = script.text.split("bkn = ")[1].split(";")[0]

def get_group_list(self):
    url = "https://qun.qq.com/cgi-bin/qun_mgr/get_group_list"
    params = {
        'bkn': self.bkn,
        't': int(time.time() * 1000)
    }

    response = self.session.get(url, params=params, headers=self.headers)
    return json.loads(response.text)

def get_group_members(self, group_id):
    url = "https://qun.qq.com/cgi-bin/qun_mgr/search_group_members"
    data = {
        'gc': group_id,
        'st': '0',
        'end': '20',
        'sort': '0',
        'bkn': self.bkn
    }

    response = self.session.post(url, data=data, headers=self.headers)
    return json.loads(response.text)

def get_all_group_members(self, group_id, batch_size=20):
    all_members = []
    start = 0
    while True:
        url = "https://qun.qq.com/cgi-bin/qun_mgr/search_group_members"
        data = {
            'gc': group_id,
            'st': str(start),
            'end': str(start + batch_size),
            'sort': '0',
            'bkn': self.bkn
        }

        response = self.session.post(url, data=data, headers=self.headers)
        result = json.loads(response.text)

        if 'mems' not in result or not result['mems']:
            break

        all_members.extend(result['mems'])
        start += batch_size
        time.sleep(random.uniform(0.5, 1.5))  # 防止请求过于频繁

    return all_members

def save_to_file(self, data, filename):
    with open(filename, 'w', encoding='utf-8') as f:
        json.dump(data, f, ensure_ascii=False, indent=4)

def run(self, group_id):
    try:
        self.login()
        print("登录成功!")

        members = self.get_all_group_members(group_id)
        print(f"获取到 {len(members)} 个群成员")

        filename = f"qq_group_{group_id}_members.json"
        self.save_to_file(members, filename)
        print(f"数据已保存到 {filename}")

        return members
    except Exception as e:
        print(f"发生错误: {str(e)}")
        return None

if name == "main":

# 使用示例
qq = "你的QQ号"
password = "你的QQ密码"
group_id = "你要采集的QQ群号"

crawler = QQGroupCrawler(qq, password)
crawler.run(group_id)
相关文章
|
2月前
|
人工智能 监控 安全
面对MCP"工具投毒",我们该如何应对
本文探讨了MCP(Model Context Protocol)的安全风险与防护措施。MCP作为AI系统与外部工具交互的标准框架,虽提升了插件兼容性,但也带来了“工具投毒”等安全威胁。攻击者可通过篡改工具描述,诱导模型执行非授权操作,如读取敏感文件。文章详细分析了攻击原理,并通过复刻实验展示了如何利用MCP客户端/服务器代码实现此类攻击。为应对风险,提出了基于大模型智能评估和eBPF技术的两种安全可观测方案:前者通过内置评估模板检测潜在威胁,后者实时监控系统运行时行为,结合两者可有效提升MCP系统的安全性。
897 92
面对MCP"工具投毒",我们该如何应对
|
2天前
|
Web App开发 数据安全/隐私保护 iOS开发
贴吧私信群发工具,采集贴吧ID信息,批量群发贴吧私信插件
这个实现包含两个主要模块:用户ID采集和私信发送。采集模块通过解析贴吧页面获取用户ID
|
Python
用flask-admin写一个文件管理系统的程序-第1课
用flask-admin写一个文件管理系统的程序-第1课
628 1
用flask-admin写一个文件管理系统的程序-第1课
|
缓存 Android开发
解决bug:Android 更换新logo图标后,运行项目图标没有变化
解决bug:Android 更换新logo图标后,运行项目图标没有变化
776 0
|
前端开发
图标库的正确使用方式
今天来教大家在实际开发中引入图标库
759 2
图标库的正确使用方式
|
数据采集 移动开发 安全
简单三步,高效提升App裂变分享率
通过裂变形成病毒式的传播,从而促成交易转化。这个链路需要满足两个条件:一是App要有一定量级的粉丝积累,通过某种和粉丝间建立的关系(可以是内容,可以是奖励),促使粉丝裂变分享到各类平台(微信、QQ、微博等),滚雪球式积累更多粉丝;二是必须保证其他用户打开分享链接回流到App的比例很高,才能有较高转化。
简单三步,高效提升App裂变分享率
|
机器学习/深度学习 人工智能 运维
智能风控未来已来
本文主要会分享三个方面的内容,由小红书反作弊的策略和算法负责人 汪浩然讲讲他和阿里风控的故事、阿里云的风控产品赋能以及阿里的机器学习平台赋能,最后介绍一下智能风控以及智能风控依靠的云计算能力。
5577 0
智能风控未来已来
|
存储 Kubernetes 算法
从零开始入门 K8s | etcd 性能优化实践
etcd 是容器云平台用于存储关键元信息的组件。阿里巴巴使用 etcd 已经有 3 年的历史, 在今年 双11 过程中它又一次承担了关键角色,接受了 双11 大压力的检验。本文作者从 etcd 性能背景出发,带领我们了解了 etcd server 端性能优化及 etcd client 使用最佳实践,希望能够为大家运行一个稳定而且高效的 etcd 集群提供帮助。
从零开始入门 K8s | etcd 性能优化实践
|
算法 Java BI
IP 转换_IP2Region | 学习笔记
快速学习IP 转换_IP2Region
972 0
IP 转换_IP2Region | 学习笔记