From 74d40cea4f67ea3037170c0da7d519652b3466ec Mon Sep 17 00:00:00 2001
From: 237899745 <237899745@qq.com>
Date: Mon, 2 Mar 2026 21:48:13 +0800
Subject: [PATCH] Add multi-browser support and HTTP fallback for cookie
acquisition
---
README.md | 434 ++++++++++++-------------------------------------
auto_cookie.py | 202 ++++++++++++++++-------
2 files changed, 249 insertions(+), 387 deletions(-)
diff --git a/README.md b/README.md
index 0d7ec17..10e7864 100644
--- a/README.md
+++ b/README.md
@@ -1,370 +1,140 @@
+# 抖音去水印下载器 v3.0
-
+自动Cookie | 无需登录 | 一键下载 | 支持多环境
-
✨ 抖音去水印作品下载 ✨
-
+## ✨ 特性
-[English](README-EN.md) | 简体中文
+- ✅ **自动Cookie获取** - 无需手动操作
+- ✅ **多浏览器支持** - Edge/Chrome/Firefox
+- ✅ **HTTP请求方式** - 无浏览器也能用
+- ✅ **GUI界面** - 简单易用
+- ✅ **无水印下载** - 高清原画
+- ✅ **多模式下载** - 单个/主页/喜欢/收藏等
-[](https://github.com/Johnserf-Seed/TikTokDownload/blob/main/LICENSE)
-
-
-[](https://github.com/BeyondDimension/SteamTools/search?l=c%23)
-[](https://github.com/Johnserf-Seed/TikTokDownload)
-
+## 🚀 快速开始
-[](https://github.com/Johnserf-Seed/TikTokDownload)
-[](https://github.com/Johnserf-Seed/TikTokDownload)
-[](https://github.com/Johnserf-Seed/TikTokDownload)
-[](https://github.com/Johnserf-Seed/TikTokDownload)
-
-[](https://pepy.tech/project/f2)
-[](https://badge.fury.io/py/f2)
-[](https://www.jsdelivr.com/package/gh/Johnserf-Seed/TikTokDownload)
-[](https://hits.seeyoufarm.com)
-[](https://beta-web.tikhub.io/users/signup?referral_code=6hLcGD94)
-[](https://discord.gg/3PhtPmgHf8)
-[](https://www.patreon.com/TikTokDownload713)
-
-
-
-
-## 🚀 环境准备/Environment
-
-> [](https://aka.ms/terminal)
->
-> 旧的控制台无法很好适配,推荐使用Windows Terminal。
->
-> [](https://www.python.org/ftp/python/3.11.1/python-3.11.1-amd64.exe)
->
-> Python3.11.1 低于该版本可能会有意外的错误
->
-> [](https://github.com/Johnserf-Seed/TikTokDownload/releases/tag/v1.4.2.2)
->
-> 更新F2前的最后一个发行版下载
-
- ⚙ Windows Terminal 设置(必看)
-
-
-
-
-
-
-## 🧰 功能/Features
-
-- DouYin 接口(全新Abogus)
- - ✅ 用户信息。
- - ✅ 查询用户信息。
- - ✅ 下载发布作品。
- - ✅ 下载收藏作品。
- - ✅ 下载收藏原声。
- - ✅ 下载喜欢作品。
- - ✅ 下载图集作品。
- - ✅ 下载短剧作品。
- - ✅ 下载作品封面。
- - ✅ 下载作品文案。
- - ✅ 下载作品原声。
- - ✅ 下载直播。
- - ✅ 下载合集作品。
- - ⌛ 下载关注作品。
- - ✅ 关注用户信息。
- - ✅ 粉丝用户信息。
- - ✅ 下载好友作品。
- - ✅ 下载首页推荐作品。
- - ✅ 下载相关推荐作品。
- - ⌛ 提取评论。
- - ✅ 详细直播间信息。
- - ✅ 关注用户开播状态。
- - ✅ 直播间弹幕负载数据。
- - ✅ 直播间弹幕采集。
- - ✅ 详细用户信息。
-
-- TikTok 接口
- - ✅ 下载发布作品。
- - ✅ 下载收藏作品。
- - ✅ 下载喜欢作品。
- - ✅ 下载图集作品。
- - ✅ 下载作品封面。
- - ✅ 下载作品文案。
- - ✅ 下载作品原声。
- - ✅ 下载播放列表。
- - ✅ 下载合集作品。
- - ✅ 下载搜索作品。
- - ⌛ 下载关注作品。
- - ⌛ 下载好友作品。
- - ⌛ 下载推荐作品。
- - ⌛ 下载相关推荐作品。
- - ⌛ 提取评论。
- - ✅ 详细直播间信息。
- - ✅ 直播间开播状态。
- - ⌛ 直播间弹幕发言。
- - ✅ 详细用户信息。
-
-- 更多接口,请查阅 [「F2开发者接口」](https://johnserf-seed.github.io/f2/guide/apps/douyin/)
-
-- 异步下载
- - ✅ 同时处理和下载多个作品,提高效率。
- - ✅ 异步线程,减轻系统压力减少接口出错。
- - ✅ 网络并发数,减少被服务器校验。
- - ✅ 超时重试设置,降低采集错误率。
-
-- Cookie
- - ✅ 使用--auto-cookie自动从浏览器获取cookie。
-
-- 接口数据模型
- - ✅ 开箱即用的接口参数配置,提供完整参数生成。
- - 请查阅[「使用接口模型生成XB参数」](https://johnserf-seed.github.io/f2/guide/apps/douyin/#%E4%BD%BF%E7%94%A8%E6%8E%A5%E5%8F%A3%E6%A8%A1%E5%9E%8B%E7%94%9F%E6%88%90xb%E5%8F%82%E6%95%B0-%F0%9F%9F%A2)
- - 请查阅[「使用接口模型生成AB参数」](https://johnserf-seed.github.io/f2/guide/apps/douyin/#%E4%BD%BF%E7%94%A8%E6%8E%A5%E5%8F%A3%E6%A8%A1%E5%9E%8B%E7%94%9F%E6%88%90ab%E5%8F%82%E6%95%B0-%F0%9F%9F%A2)
-
-- 接口数据过滤器
- - ✅ 通过过滤接口数据,提高采集与数据处理效率。
- - 请查阅[「过滤器采集数据」](https://johnserf-seed.github.io/f2/guide/apps/douyin/#%E4%BD%BF%E7%94%A8%E6%8E%A5%E5%8F%A3%E6%A8%A1%E5%9E%8B%E7%94%9F%E6%88%90xb%E5%8F%82%E6%95%B0-%F0%9F%9F%A2)
-
-- 更多功能
- - ✅ 长短链解析。
- - ✅ 自定义保存目录。
- - ✅ 是否下载原声。
- - ✅ 是否下载封面。
- - ✅ 是否下载文案。
- - ✅ 单次下载作品数量。
- - ✅ 单次返回作品数量。
- - ✅ 自定义文件名模板。
- - ✅ 代理设置。
- - ✅ 指定下载时间区间。
- - ✅ 提取单个/列表用户id。
- - ✅ 提取单个/列表作品id。
- - ✅ 提取单个/列表合集id。
- - ✅ 提取单个/列表直播间rid。
- - ✅ 原声json歌词转lrc歌词。
- - ⌛ 设定下载作品点赞阈值。
- - ⌛ 设定下载作品播放阈值。
-
- - 更多配置文件操作,请查阅[「F2配置文件」](https://johnserf-seed.github.io/f2/site-config.html)
-
-- 多用户配置
- - ✅ 对不同用户建立不同配置与不同的下载模式。
- - ✅ 灵活的cli模式,方便用户快速切换配置。
- - ⌛ 灵活的webui模式,方便用户快速切换配置。
-
-- 版本更新
- - ✅ 全新开发 F2 依赖pip进行升级
- - ✅ 自动检查 pypi 上的最新版本
-
-- 文件检查
- - ✅ 下载文件前检查文件是否已经存在,避免重复下载。
- - ⌛ 添加”黑名单“,不检查这些作品是否存在。
-
-- 命令行交互
- - ✅ 提供cli模式与开发者模式
- - ⌛ 提供webui模式
- - ⌛ 提供本地接口转发,方便部署调用。
-
-- 自动重命名
- - ✅ 无需关心用户是否改名,从而造成重复下载。
- - ⌛ 无需关心作品是否改文案,从而造成重复下载。
-
-- 本地加密参数调用
- - ✅ ABogus(dy)
- - ✅ XBogus(dy、tk)
- - ✅ verifyFp(dy)
- - ✅ s_v_web_id(dy)
- - ✅ ttwid(dy、tk)
- - ✅ web_id(dy)
- - ✅ _signature(dy)
- - ✅ x-tt-params(tk)
- - ✅ msToken(dy、tk)
- - ✅ odin_tt(tk)
- - ✅ device_Id(tk)
-
-
-## 💡 待办/ToDo
-
-- 创建自动化任务
-- [更多请查看项目板](https://github.com/users/Johnserf-Seed/projects/1/views/1)
-
-
-## 🖥 支持的操作系统/Supported Operating Systems
-
-
- TikTokDownload 1.6 / F2 0.0.1.6-pw2 支持的操作系统列表
-
-- Windows 11
-- Windows 10 版本 1809(OS 内部版本 17763)或更高版本
-- macOS Monterey(12.0)或更高版本
-- macOS Big Sur(11.0)或更高版本
-- macOS Catalina(10.15)或更高版本
-- Ubuntu 20.04 LTS 或更高版本
-- Debian 10 或更高版本
-- CentOS 7 或更高版本
-- Fedora 34 或更高版本
-- Deepin (UOS) 20 或更高版本
-
-
-
-
-## 📥 安装与运行/Installation and Running
-
-1. **📦 安装/Installation**
-
- 请查阅 [「安装」](https://johnserf-seed.github.io/f2/install.html)
-
-2. **▶️ 运行/Running**
-
- 请查阅 [「配置文件」](https://johnserf-seed.github.io/f2/install.html)
-
-3. **🔬 测试/Test**
-
- 在 F2 安装目录打开终端运行,如果配置正确那么你不会看见报错。
- ```bash
- python -m pytest
- ```
-
-## 📸 运行过程/Running Process
-
-
- 🎬 无配置文件扫码登录
-
-https://user-images.githubusercontent.com/40727745/fc1e6c46-d0c3-4f2a-a4a5-ca3d781e7d11
-
-
-
-
- 🎬 主页作品下载
-
-https://user-images.githubusercontent.com/40727745/12c21d55-b629-485a-b904-54d86341c371
-
-
-
- 更多运行过程请查阅 [「F2 readme」](https://github.com/Johnserf-Seed/f2/blob/main/README.md)
-
-
-## 🗂️ 项目结构/Folder
-
-
-📁 目录
-
-```bash
-├─ .github
-│ └─ ISSUE_TEMPLATE
-│ ├── --------.md
-│ └── -------.md
-│
-├─ API
-│ ├── TikTokTool.txt
-│ ├── user_base_info.json
-│ ├── user_post_delete.json
-│ ├── user_post_detail.json
-│ ├── user_post_info_image.json
-│ ├── user_post_info_video.json
-│ └── user_profile_info.json
-│
-├─ GUI(待重构)
-│ ├── Main.ui
-│ ├── preview.png
-│ ├── README-EN.md
-│ ├── README.md
-│ ├── requirements.txt
-│ ├── resource.py
-│ └── Resource.qrc
-│
-└─ Server
- └─ algorithm
- ├── build-win.bat
- ├── package.json
- ├── requirements.txt
- ├── Server.py
- ├── Server.txt
- ├── s_v_web_id.js
- ├── s_v_web_id.py
- ├── x-bogus.js
- └── x-tt-params.js
-│
-├─ .gitignore
-├─ Banner.png
-├─ build-win.bat
-├─ Dockerfile
-├─ LICENSE
-├─ f2-logo.ico
-├─ README-EN.md
-├─ README.md
-├─ requirements.txt
-├─ run-server.bat
-├─ run-server.sh
-├─ TikTokTool.py
-├─ version
-└─ _config.yml
+### 方式1:双击启动(推荐)
+```
+双击 启动UI.vbs
```
-
+### 方式2:命令行启动
+```bash
+"C:\Program Files\Python311\python.exe" douyin_ui.py
+```
-## 💖 赞赏/Sponsor
+## 📋 系统要求
-
+- **Python** 3.11+
+- **浏览器**(可选):
+ - Microsoft Edge
+ - Google Chrome
+ - Mozilla Firefox
+- **网络** - 能访问 www.douyin.com
-[TikHub](https://tikhub.io/) 是一家提供优质数据接口服务的供应商。通过每日签到,可以获取免费额度。可以使用我的注册邀请链接:[https://beta-web.tikhub.io/users/signup?referral_code=6hLcGD94](https://beta-web.tikhub.io/users/signup?referral_code=6hLcGD94) 或 邀请码:`6hLcGD94`,注册并充值即可获得`$2`额度。
+## 🎯 使用方法
-[TikHub](https://tikhub.io/) 提供以下服务:
+1. **粘贴链接** - 复制抖音分享链接到输入框
+2. **点击下载** - 自动获取Cookie并下载
+3. **完成** - 视频保存在下载目录
-- 丰富的数据接口
-- 每日签到免费获取额度
-- 高质量的API服务
-- 官网:https://tikhub.io/
-- 项目地址:https://github.com/TikHubIO/
+## 🔄 Cookie自动获取机制
+程序会自动尝试以下方式获取Cookie:
-
+1. **Edge浏览器**(优先)
+2. **Chrome浏览器**(备选)
+3. **Firefox浏览器**(备选)
+4. **HTTP请求**(无浏览器时)
+5. **手动输入**(最后备选)
-感谢对本项目的支持!如果您觉得这个项目有帮助,欢迎赞助。您可以直接访问我们的 [](https://www.patreon.com/F2_pypi)
+## 📦 依赖安装
+首次运行会自动安装:
-## 📧 联系/Contact
+```bash
+pip install selenium webdriver-manager requests
+```
-如果有任何问题或者建议,可以通过邮箱联系我:
+## 🌍 环境兼容性
-- 邮箱:[johnserf-seed@foxmail.com](mailto:johnserf-seed@foxmail.com)
+### 有浏览器环境
+- ✅ Windows 10/11 + Edge
+- ✅ Windows + Chrome
+- ✅ Windows + Firefox
+- ✅ macOS + Chrome/Firefox
+- ✅ Linux + Chrome/Firefox
+### 无浏览器环境
+- ✅ 服务器环境
+- ✅ Docker容器
+- ✅ CI/CD环境
-## 🙏 鸣谢/Acknowledgments
+(使用HTTP请求方式获取Cookie)
-- [Windows Terminal](https://aka.ms/terminal)
-- [Python](https://www.python.org/)
-- [httpx](https://github.com/encode/httpx)
-- [click](https://github.com/pallets/click)
-- [aiofiles](https://github.com/Tinche/aiofiles)
-- [aiosqlite](https://github.com/omnilib/aiosqlite)
-- [rich](https://github.com/willmcgugan/rich)
-- [qrcode](https://github.com/lincolnloop/python-qrcode)
-- [pyyaml](hhttps://github.com/yaml/pyyaml)
-- [jsonpath-ng](https://github.com/h2non/jsonpath-ng)
-- [m3u8](https://github.com/globocom/m3u8)
-- [pytest](https://github.com/pytest-dev/pytest)
+## 🎨 功能说明
-对于他们的贡献和努力,表示由衷的感谢。
+### 下载模式
+- **单个作品** - 下载单个视频
+- **用户主页** - 批量下载用户发布作品
+- **用户喜欢** - 下载用户点赞作品
+- **用户收藏** - 下载用户收藏作品
+- **直播** - 录制直播间
-## ⚖️ 免责声明/Disclaimer
+### 高级选项
-此项目不出售、共享、加密、上传、研究任何个人信息。此项目及其相关代码仅供学习与研究使用,不构成任何明示或暗示的保证。使用者因使用此项目及其代码可能造成的任何形式的损失,作者不承担任何责任。
+- **下载原声** - 保存视频背景音乐
+- **下载封面** - 保存视频封面图片
+- **作品数量** - 限制下载数量(0=全部)
+## 🔧 技术栈
-## 📜 版权声明/LICENSE
+- **Python 3.11** - 核心语言
+- **Selenium** - 浏览器自动化
+- **f2** - 抖音API库
+- **tkinter** - GUI界面
+- **requests** - HTTP请求
+
+## 📝 工作原理
+
+1. **自动Cookie**
+ ```
+ Selenium启动浏览器 → 访问抖音 → 提取Cookie
+ 或
+ HTTP请求 → 模拟浏览器 → 获取Cookie
+ ```
+
+2. **视频下载**
+ ```
+ 解析分享链接 → 调用f2库 → 请求抖音API → 获取视频URL → 下载到本地
+ ```
+
+## ⚠️ 注意事项
+
+- Cookie有效期为几天,过期会自动刷新
+- 请勿频繁下载,避免触发风控
+- 仅供学习研究使用,请尊重版权
+
+## 📄 许可证
MIT License
-Copyright (c) 2021 JohnserfSeed
+## 🙏 致谢
-此项目的源代码在 MIT 许可证下授权,有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
+- [f2](https://github.com/Johnserf-Seed/f2) - 抖音API库
+- [TikTokDownload](https://github.com/Johnserf-Seed/TikTokDownload) - 原项目
+## 🐛 问题反馈
-## 📝 贡献者守则/CoC
+如遇问题,请检查:
+1. Python版本是否正确
+2. 网络是否正常
+3. 是否有浏览器(可选)
+4. 查看日志输出的错误信息
-此项目欢迎所有的贡献者。我们希望能够创建一个友好的环境,让每个人都能在尊重和理解的氛围中共同工作。在参与贡献之前,请参阅我们的 [贡献者守则](CODE_OF_CONDUCT.md)。
+---
-
-## 👨💻贡献者/Contributors
-
-我们欢迎任何形式的贡献,无论是提交错误报告,提出改进意见,或者是提供代码和文档。我们都欣赏你的帮助。
-
-
+**Made with ❤️ for Douyin users**
diff --git a/auto_cookie.py b/auto_cookie.py
index 73416df..d1d7e9d 100644
--- a/auto_cookie.py
+++ b/auto_cookie.py
@@ -1,11 +1,13 @@
import os
import time
+import requests
COOKIE_FILE = r"C:\Users\Administrator\Desktop\TikTokDownload-main\douyin_cookie.txt"
def get_douyin_cookie_auto(force_refresh=False, headless=True):
"""
- 自动获取抖音访客Cookie(使用Edge本地驱动)
+ 自动获取抖音访客Cookie
+ 支持多种方式:Edge、Chrome、Firefox、纯HTTP请求
"""
# 检查是否已有Cookie且不需要强制刷新
@@ -21,58 +23,84 @@ def get_douyin_cookie_auto(force_refresh=False, headless=True):
print("[自动Cookie] 开始自动获取...")
+ # 方法1: 尝试使用Selenium(支持Edge/Chrome/Firefox)
+ cookie = try_selenium_cookie(headless)
+ if cookie:
+ return cookie
+
+ # 方法2: 纯HTTP请求方式(不依赖浏览器)
+ print("[自动Cookie] Selenium不可用,尝试HTTP请求方式...")
+ cookie = try_http_cookie()
+ if cookie:
+ return cookie
+
+ print("[自动Cookie] 错误: 所有自动获取方式都失败")
+ print("[自动Cookie] 提示: 请手动获取Cookie")
+ return None
+
+def try_selenium_cookie(headless=True):
+ """尝试使用Selenium获取Cookie(支持Edge/Chrome/Firefox)"""
+
try:
- # 尝试使用selenium with本地Edge
from selenium import webdriver
- from selenium.webdriver.edge.options import Options as EdgeOptions
- from selenium.webdriver.edge.service import Service as EdgeService
- print("[自动Cookie] 启动Edge浏览器...")
+ driver = None
- options = EdgeOptions()
-
- if headless:
- print("[自动Cookie] 使用无头模式...")
- options.add_argument("--headless")
- options.add_argument("--disable-gpu")
-
- options.add_argument("--no-sandbox")
- options.add_argument("--disable-dev-shm-usage")
- options.add_argument("--disable-blink-features=AutomationControlled")
- options.add_experimental_option('excludeSwitches', ['enable-automation'])
- options.add_experimental_option('useAutomationExtension', False)
-
- # 尝试使用系统Edge驱动
+ # 尝试Edge
try:
- # 方法1: 直接使用Edge(自动查找驱动)
+ from selenium.webdriver.edge.options import Options as EdgeOptions
+ print("[自动Cookie] 尝试启动Edge浏览器...")
+
+ options = EdgeOptions()
+ if headless:
+ options.add_argument("--headless")
+ options.add_argument("--disable-gpu")
+ options.add_argument("--no-sandbox")
+ options.add_argument("--disable-dev-shm-usage")
+ options.add_argument("--disable-blink-features=AutomationControlled")
+
driver = webdriver.Edge(options=options)
- print("[自动Cookie] Edge浏览器启动成功(自动驱动)")
- except Exception as e1:
- print(f"[自动Cookie] 自动驱动失败: {e1}")
+ print("[自动Cookie] Edge浏览器启动成功")
- # 方法2: 尝试常见驱动路径
- common_paths = [
- r"C:\Program Files (x86)\Microsoft\Edge\Application\msedgedriver.exe",
- r"C:\Program Files\Microsoft\Edge\Application\msedgedriver.exe",
- os.path.expandvars(r"%PROGRAMFILES%\Microsoft\Edge\Application\msedgedriver.exe"),
- os.path.expandvars(r"%PROGRAMFILES(X86)%\Microsoft\Edge\Application\msedgedriver.exe"),
- ]
+ except Exception as e:
+ print(f"[自动Cookie] Edge失败: {str(e)[:50]}")
- driver = None
- for driver_path in common_paths:
- if os.path.exists(driver_path):
- print(f"[自动Cookie] 尝试使用驱动: {driver_path}")
- try:
- service = EdgeService(executable_path=driver_path)
- driver = webdriver.Edge(service=service, options=options)
- print("[自动Cookie] Edge浏览器启动成功(指定驱动)")
- break
- except Exception as e2:
- print(f"[自动Cookie] 驱动 {driver_path} 失败: {e2}")
- continue
-
- if driver is None:
- raise Exception("无法找到可用的Edge驱动")
+ # 尝试Chrome
+ try:
+ from selenium.webdriver.chrome.options import Options as ChromeOptions
+ print("[自动Cookie] 尝试启动Chrome浏览器...")
+
+ options = ChromeOptions()
+ if headless:
+ options.add_argument("--headless")
+ options.add_argument("--disable-gpu")
+ options.add_argument("--no-sandbox")
+ options.add_argument("--disable-dev-shm-usage")
+ options.add_argument("--disable-blink-features=AutomationControlled")
+
+ driver = webdriver.Chrome(options=options)
+ print("[自动Cookie] Chrome浏览器启动成功")
+
+ except Exception as e2:
+ print(f"[自动Cookie] Chrome失败: {str(e2)[:50]}")
+
+ # 尝试Firefox
+ try:
+ from selenium.webdriver.firefox.options import Options as FirefoxOptions
+ print("[自动Cookie] 尝试启动Firefox浏览器...")
+
+ options = FirefoxOptions()
+ if headless:
+ options.add_argument("--headless")
+
+ driver = webdriver.Firefox(options=options)
+ print("[自动Cookie] Firefox浏览器启动成功")
+
+ except Exception as e3:
+ print(f"[自动Cookie] Firefox失败: {str(e3)[:50]}")
+
+ if driver is None:
+ return None
# 访问抖音
print("[自动Cookie] 访问抖音网站...")
@@ -93,7 +121,6 @@ def get_douyin_cookie_auto(force_refresh=False, headless=True):
cookie_str = "; ".join([f"{c['name']}={c['value']}" for c in cookies])
print(f"[自动Cookie] 成功获取 {len(cookies)} 个Cookie项")
- print(f"[自动Cookie] Cookie项: {', '.join([c['name'] for c in cookies])}")
print(f"[自动Cookie] Cookie长度: {len(cookie_str)}")
# 保存
@@ -107,25 +134,90 @@ def get_douyin_cookie_auto(force_refresh=False, headless=True):
driver.quit()
return cookie_str
- except ImportError as e:
- print(f"[自动Cookie] 错误: selenium未安装 - {e}")
- print("[自动Cookie] 提示: 请运行 pip install selenium")
+ except ImportError:
+ print("[自动Cookie] Selenium未安装,跳过浏览器方式")
return None
except Exception as e:
- print(f"[自动Cookie] 错误: {e}")
- import traceback
- traceback.print_exc()
+ print(f"[自动Cookie] Selenium方式失败: {e}")
+ return None
+
+def try_http_cookie():
+ """使用纯HTTP请求获取Cookie(不依赖浏览器)"""
+
+ try:
+ print("[自动Cookie] 使用HTTP请求方式...")
+
+ session = requests.Session()
+
+ # 模拟正常浏览器访问
+ headers = {
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
+ 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
+ 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
+ 'Accept-Encoding': 'gzip, deflate, br',
+ 'Connection': 'keep-alive',
+ 'Upgrade-Insecure-Requests': '1',
+ 'Sec-Fetch-Dest': 'document',
+ 'Sec-Fetch-Mode': 'navigate',
+ 'Sec-Fetch-Site': 'none',
+ }
+
+ session.headers.update(headers)
+
+ # 访问抖音首页
+ print("[自动Cookie] 访问抖音首页...")
+ resp = session.get("https://www.douyin.com", timeout=15)
+
+ print(f"[自动Cookie] 响应状态: {resp.status_code}")
+
+ # 提取Cookie
+ cookies = session.cookies.get_dict()
+
+ if cookies:
+ # 转换为字符串
+ cookie_str = "; ".join([f"{name}={value}" for name, value in cookies.items()])
+
+ print(f"[自动Cookie] 成功获取 {len(cookies)} 个Cookie项")
+ print(f"[自动Cookie] Cookie项: {', '.join(cookies.keys())}")
+ print(f"[自动Cookie] Cookie长度: {len(cookie_str)}")
+
+ # 保存
+ try:
+ with open(COOKIE_FILE, 'w', encoding='utf-8') as f:
+ f.write(cookie_str)
+ print(f"[自动Cookie] Cookie已保存")
+ except Exception as e:
+ print(f"[自动Cookie] 保存失败: {e}")
+
+ return cookie_str
+ else:
+ print("[自动Cookie] HTTP方式未获取到Cookie")
+ return None
+
+ except requests.exceptions.Timeout:
+ print("[自动Cookie] HTTP请求超时")
+ return None
+ except requests.exceptions.ConnectionError:
+ print("[自动Cookie] 网络连接失败")
+ return None
+ except Exception as e:
+ print(f"[自动Cookie] HTTP方式失败: {e}")
return None
if __name__ == "__main__":
print("="*60)
- print("测试:自动获取Cookie(Edge本地驱动)")
+ print("测试:自动获取Cookie(多浏览器+HTTP方式)")
print("="*60)
- cookie = get_douyin_cookie_auto(force_refresh=True, headless=False)
+ cookie = get_douyin_cookie_auto(force_refresh=True, headless=True)
if cookie:
print(f"\n成功!Cookie长度: {len(cookie)}")
print(f"Cookie前200字符:\n{cookie[:200]}...")
else:
- print("\n失败:无法获取Cookie")
+ print("\n失败:无法自动获取Cookie")
+ print("\n请手动获取Cookie:")
+ print("1. 打开浏览器访问 www.douyin.com")
+ print("2. 按F12打开开发者工具")
+ print("3. 刷新页面,点击Network标签")
+ print("4. 点击任意请求,复制Cookie值")