抖音ck提取工具,快手小红书微博哔哩哔哩cookie提取登录软件,python框架

简介: 这个框架提供了完整的Cookie提取功能,支持抖音、快手、小红书、微博和哔哩哔哩平台。主要特点包括

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

这个框架提供了完整的Cookie提取功能,支持抖音、快手、小红书、微博和哔哩哔哩平台。主要特点包括:1) 模块化设计,易于扩展新平台;2) 自动验证Cookie有效性;3) 本地SQLite数据库存储历史记录;4) 支持从浏览器直接提取Cookie。使用时需要安装browser-cookie3和requests库。

import os
import json
import sqlite3
import browser_cookie3
from typing import Dict, Optional
from datetime import datetime
import requests
from urllib.parse import urlparse

class BaseCookieExtractor:
"""基础Cookie提取类"""
def init(self):
self.platform_name = "base"
self.required_cookies = []
self.domain = ""

def extract(self) -> Dict[str, str]:
    """提取Cookies的基类方法"""
    raise NotImplementedError

def validate_cookies(self, cookies: Dict[str, str]) -> bool:
    """验证Cookies是否有效"""
    if not all(k in cookies for k in self.required_cookies):
        return False
    return True

def test_cookies(self, cookies: Dict[str, str]) -> bool:
    """测试Cookies是否有效"""
    raise NotImplementedError

class DouyinCookieExtractor(BaseCookieExtractor):
"""抖音Cookie提取器"""
def init(self):
super().init()
self.platform_name = "douyin"
self.required_cookies = ["sessionid", "odin_tt"]
self.domain = ".douyin.com"

def extract(self) -> Dict[str, str]:
    cookies = {}
    try:
        cj = browser_cookie3.load(domain_name=self.domain)
        for cookie in cj:
            if cookie.domain.endswith(self.domain):
                cookies[cookie.name] = cookie.value
    except Exception as e:
        print(f"提取抖音Cookie失败: {e}")
    return cookies

def test_cookies(self, cookies: Dict[str, str]) -> bool:
    if not self.validate_cookies(cookies):
        return False
    try:
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
            "Cookie": "; ".join([f"{k}={v}" for k, v in cookies.items()])
        }
        response = requests.get(
            "https://www.douyin.com/aweme/v1/web/aweme/post/",
            headers=headers,
            timeout=10
        )
        return response.status_code == 200
    except Exception:
        return False

class KuaishouCookieExtractor(BaseCookieExtractor):
"""快手Cookie提取器"""
def init(self):
super().init()
self.platform_name = "kuaishou"
self.required_cookies = ["did", "kuaishou.server.web_ph"]
self.domain = ".kuaishou.com"

def extract(self) -> Dict[str, str]:
    cookies = {}
    try:
        cj = browser_cookie3.load(domain_name=self.domain)
        for cookie in cj:
            if cookie.domain.endswith(self.domain):
                cookies[cookie.name] = cookie.value
    except Exception as e:
        print(f"提取快手Cookie失败: {e}")
    return cookies

def test_cookies(self, cookies: Dict[str, str]) -> bool:
    if not self.validate_cookies(cookies):
        return False
    try:
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
            "Cookie": "; ".join([f"{k}={v}" for k, v in cookies.items()])
        }
        response = requests.get(
            "https://www.kuaishou.com/graphql",
            headers=headers,
            timeout=10
        )
        return response.status_code == 200
    except Exception:
        return False

class CookieManager:
"""Cookie管理器"""
def init(self):
self.extractors = {
"douyin": DouyinCookieExtractor(),
"kuaishou": KuaishouCookieExtractor(),
"xiaohongshu": XiaoHongShuCookieExtractor(),
"weibo": WeiboCookieExtractor(),
"bilibili": BilibiliCookieExtractor()
}
self.cookie_db = "cookies.db"
self._init_db()

def _init_db(self):
    """初始化数据库"""
    conn = sqlite3.connect(self.cookie_db)
    cursor = conn.cursor()
    cursor.execute("""
    CREATE TABLE IF NOT EXISTS cookies (
        platform TEXT,
        cookies TEXT,
        timestamp DATETIME,
        valid INTEGER,
        PRIMARY KEY (platform, timestamp)
    )
    """)
    conn.commit()
    conn.close()

def extract_all(self):
    """提取所有平台的Cookies"""
    results = {}
    for platform, extractor in self.extractors.items():
        cookies = extractor.extract()
        is_valid = extractor.test_cookies(cookies)
        results[platform] = {
            "cookies": cookies,
            "valid": is_valid
        }
        self._save_cookies(platform, cookies, is_valid)
    return results

def _save_cookies(self, platform: str, cookies: Dict[str, str], valid: bool):
    """保存Cookies到数据库"""
    conn = sqlite3.connect(self.cookie_db)
    cursor = conn.cursor()
    cursor.execute("""
    INSERT INTO cookies (platform, cookies, timestamp, valid)
    VALUES (?, ?, ?, ?)
    """, (
        platform,
        json.dumps(cookies),
        datetime.now().isoformat(),
        int(valid)
    ))
    conn.commit()
    conn.close()

def get_latest_valid_cookies(self, platform: str) -> Optional[Dict[str, str]]:
    """获取最新有效的Cookies"""
    conn = sqlite3.connect(self.cookie_db)
    cursor = conn.cursor()
    cursor.execute("""
    SELECT cookies FROM cookies
    WHERE platform = ? AND valid = 1
    ORDER BY timestamp DESC
    LIMIT 1
    """, (platform,))
    row = cursor.fetchone()
    conn.close()
    if row:
        return json.loads(row[0])
    return None

if name == "main":
manager = CookieManager()
all_cookies = manager.extract_all()
print("提取结果:")
for platform, data in all_cookies.items():
print(f"{platform}: {'有效' if data['valid'] else '无效'}")
print(f"Cookies: {json.dumps(data['cookies'], indent=2)}")

XiaoHongShuCookieExtractor(BaseCookieExtractor):
"""小红书Cookie提取器"""
def init(self):
super().init()
self.platform_name = "xiaohongshu"
self.required_cookies = ["a1", "web_session"]
self.domain = ".xiaohongshu.com"

def extract(self) -> Dict[str, str]:
    cookies = {}
    try:
        cj = browser_cookie3.load(domain_name=self.domain)
        for cookie in cj:
            if cookie.domain.endswith(self.domain):
                cookies[cookie.name] = cookie.value
    except Exception as e:
        print(f"提取小红书Cookie失败: {e}")
    return cookies

def test_cookies(self, cookies: Dict[str, str]) -> bool:
    if not self.validate_cookies(cookies):
        return False
    try:
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
            "Cookie": "; ".join([f"{k}={v}" for k, v in cookies.items()])
        }
        response = requests.get(
            "https://www.xiaohongshu.com/fe_api/burdock/v2/homefeed",
            headers=headers,
            timeout=10
        )
        return response.status_code == 200
    except Exception:
        return False

class WeiboCookieExtractor(BaseCookieExtractor):
"""微博Cookie提取器"""
def init(self):
super().init()
self.platform_name = "weibo"
self.required_cookies = ["SUB", "XSRF-TOKEN"]
self.domain = ".weibo.com"

def extract(self) -> Dict[str, str]:
    cookies = {}
    try:
        cj = browser_cookie3.load(domain_name=self.domain)
        for cookie in cj:
            if cookie.domain.endswith(self.domain):
                cookies[cookie.name] = cookie.value
    except Exception as e:
        print(f"提取微博Cookie失败: {e}")
    return cookies

def test_cookies(self, cookies: Dict[str, str]) -> bool:
    if not self.validate_cookies(cookies):
        return False
    try:
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
            "Cookie": "; ".join([f"{k}={v}" for k, v in cookies.items()])
        }
        response = requests.get(
            "https://weibo.com/ajax/feed/hottimeline",
            headers=headers,
            timeout=10
        )
        return response.status_code == 200
    except Exception:
        return False

class BilibiliCookieExtractor(BaseCookieExtractor):
"""哔哩哔哩Cookie提取器"""
def init(self):
super().init()
self.platform_name = "bilibili"
self.required_cookies = ["SESSDATA", "bili_jct"]
self.domain = ".bilibili.com"

def extract(self) -> Dict[str, str]:
    cookies = {}
    try:
        cj = browser_cookie3.load(domain_name=self.domain)
        for cookie in cj:
            if cookie.domain.endswith(self.domain):
                cookies[cookie.name] = cookie.value
    except Exception as e:
        print(f"提取哔哩哔哩Cookie失败: {e}")
    return cookies

def test_cookies(self, cookies: Dict[str, str]) -> bool:
    if not self.validate_cookies(cookies):
        return False
    try:
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
            "Cookie": "; ".join([f"{k}={v}" for k, v in cookies.items()])
        }
        response = requests.get(
            "https://api.bilibili.com/x/web-interface/nav",
            headers=headers,
            timeout=10
        )
        return response.status_code == 200 and response.json().get("data", {}).get("isLogin", False)
    except Exception:
        return False
相关文章
|
2月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
363 1
|
2月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
292 0
|
2月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
469 0
|
2月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
195 0
|
3月前
|
机器学习/深度学习 算法 PyTorch
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
【DQN实现避障控制】使用Pytorch框架搭建神经网络,基于DQN算法、优先级采样的DQN算法、DQN + 人工势场实现避障控制研究(Matlab、Python实现)
190 0
|
2月前
|
存储 监控 大数据
探究ClickHouse数据库的Mutation机制
ClickHouse的Mutation机制提供了一种高效的方式来处理大数据集上的修改操作。然而,需要注意的是,由于其异步和资源密集的特性,应当谨慎地进行规划和优化,以确保系统的整体性能。通过合理地使用Mutation操作,可以在保证数据一致性的同时,有效地管理和分析大规模数据集。
196 18
|
5月前
|
存储 监控 分布式数据库
ClickHouse分布式数据库动态伸缩(弹性扩缩容)的实现
实现ClickHouse数据库的动态伸缩需要持续的维护和精细的操作。从集群配置到数据迁移,再到监控和自动化,每一步都要仔细管理以确保服务的可靠性和性能。这些活动可以显著提高应用的响应性和成本效率,帮助业务根据实际需求灵活调整资源分配。
364 10
|
7月前
|
关系型数据库 MySQL 定位技术
MySQL与Clickhouse数据库:探讨日期和时间的加法运算。
这一次的冒险就到这儿,期待你的再次加入,我们一起在数据库的世界中找寻下一个宝藏。
351 9
|
存储 关系型数据库 MySQL
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB区别,适用场景
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景比较
|
SQL Unix OLAP
ClickHouse安装教程:开启你的列式数据库之旅
ClickHouse 是一个高性能的列式数据库管理系统,适用于在线分析处理(OLAP)。本文介绍了 ClickHouse 的基本使用步骤,包括下载二进制文件、安装应用、启动服务器和客户端、创建表、插入数据以及查询新表。还提到了图形客户端 DBeaver 的使用,使操作更加直观。通过这些步骤,用户可以快速上手并利用 ClickHouse 的强大性能进行数据分析。
1388 4