下载地址: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
AI 代码解读
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
AI 代码解读
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
AI 代码解读
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
AI 代码解读
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
AI 代码解读
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
AI 代码解读
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
AI 代码解读