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)
相关文章
|
JSON Java 数据安全/隐私保护
qq群成员qq号一键提取, 不加群就可以提取QQ群成员, qq群成员提取器
完整的QQ群成员提取功能,包括登录验证、成员获取、数据解析和导出功能。代码结构清晰
|
Java 网络安全 Windows
springboot项目报错:ERROR 9112 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] 的解决办法
springboot项目报错:ERROR 9112 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] 的解决办法
springboot项目报错:ERROR 9112 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] 的解决办法
|
6月前
|
运维 JavaScript 前端开发
拿 GLM-5 重构了一个真实项目,跟 Claude Opus 比了比
GLM-5 正式迈向“Agentic Engineering”:实测其Agent在1.2万行Node.js项目中完成Express路由迁移,8文件全改、测试全过,仅需微调2处;Benchmark紧追Claude Opus,开源模型第一。适合后端重构、文档生成与长周期运维,尚不擅前端与模糊需求。
3204 1
|
存储 数据可视化 安全
QQ群成员采集工具, QQ群成员昵称导出工具, qq群成员采集软件
完整的QQ群成员采集工具实现方案,包含登录认证、群成员获取、数据存储和导出等完整功能。
|
数据采集 存储 数据可视化
分布式爬虫框架Scrapy-Redis实战指南
本文介绍如何使用Scrapy-Redis构建分布式爬虫系统,采集携程平台上热门城市的酒店价格与评价信息。通过代理IP、Cookie和User-Agent设置规避反爬策略,实现高效数据抓取。结合价格动态趋势分析,助力酒店业优化市场策略、提升服务质量。技术架构涵盖Scrapy-Redis核心调度、代理中间件及数据解析存储,提供完整的技术路线图与代码示例。
1979 0
分布式爬虫框架Scrapy-Redis实战指南
|
Kubernetes 调度 开发工具
使用Airflow在k8s集群上轻松搭建企业级工作流
Apache Airflow 是一个开源工作流管理平台,支持编写、调度与监控复杂任务流。其核心通过代码定义工作流(DAG),结合 Scheduler、Executor、Web Server 等组件实现灵活的任务管理和执行。Airflow 支持容器化部署,如通过 Helm Chart 手动部署或使用阿里云计算巢一键部署,简化运维复杂度。实际使用中,可通过 Git 仓库同步 DAG 文件至 Scheduler,支持任务依赖编排与日志跟踪。示例展示了简单的 Hello World 工作流从代码到运行的全流程,验证了其强大的图形化交互和业务扩展能力。
|
11月前
|
SQL 关系型数据库 MySQL
如何创建RDS MySQL定时任务?
RDS MySQL支持通过事件调度器(Event Scheduler)实现定时任务,如数据清理、统计报告等。需先开启Event Scheduler,再通过DMS或SQL创建、查看、删除事件,自动化执行数据库操作,提升运维效率。
|
JSON 数据库 Android开发
qq群提取群成员软件, QQ群好友采集工具, qq群成员提取器安卓版
基于C++实现的QQ群成员提取工具完整代码,包含Windows桌面端和Android移动端两个版本的核心模块
|
JSON 安全 定位技术
微信附近人提取v3脚本, 微信附近人id提取技术插件,采集附近人wxid数据工具
本内容介绍微信“附近的人”功能的技术原理与实现方法,基于LBS服务,涉及位置模拟、协议分析及数据解析。通过修改GPS坐标或使用Frida等工具hook位置函数
|
机器人
陌陌自动回复消息脚本,陌陌自动打招呼回复机器人插件,自动聊天智能版
这是一款为陌陌用户设计的自动回复软件,旨在解决用户无法及时回复消息的问题,提高成交率和有效粉丝数。软件通过自动化操作实现消息检测与回复功能