{ "user_id_list": "user_id_list.txt", // 用户ID列表文件路径或用户ID数组,格式:每行一个用户ID,或 ["123456", "789012"] "only_crawl_original": 0, // 是否只爬取原创微博 0 = 爬取全部(原创+转发),1 = 只爬取原创微博 "since_date": "2026-01-01", // 开始爬取的时间范围(格式:YYYY-MM-DD),只爬取该日期之后发布的微博 "end_date": "", // 截止爬取的时间范围(格式:YYYY-MM-DD 或 YYYY-MM-DDTHH:MM:SS),为空则不限制,只爬取该日期之前发布的微博 "start_page": 1, // 从第几页开始爬取,通常保持为1,断点续传时可调整 "page_weibo_count": 20, // 每页爬取的微博数量(10-50之间),建议:10-20,太大可能被限制 "write_mode": [ "markdown", "csv", "json" ], // 输出格式(可多选),可选项:csv, json, mysql, mongo, sqlite, post, markdown,示例:["markdown"] 或 ["markdown", "csv", "json"] "markdown_split_by": "day_by_month", // markdown文件分割方式,可选项:day(按天,平铺),day_by_month(按天,按月归档到子文件夹),month(按月),year(按年),all(所有数据在一个文件) "markdown_sort_order": "new_to_old", // markdown中同一分组内多条微博的排序方式,可选项:new_to_old(从新到旧,最新在前),old_to_new(从旧到新,最早在前) "markdown_image_order": "live_photo_first", // markdown中图片与Live Photo的排列顺序,可选项:live_photo_first(Live Photo排在图片前面),image_first_interleaved(图片优先,同名Live Photo插入到对应图片下方) "missing_weibo_report": 0, // 是否在每次爬取结束后,在 output_directory 下生成本次爬取较上次缺失(已删除/未爬到)的微博ID报告 0 = 不生成,1 = 生成 "markdown_preview": { "link_preview": 0, // 网页链接是否预览(!语法) 0 = 普通链接 [text](url),1 = 预览图片 ![](url) "original_video_preview": 0, // 原创微博视频是否预览 0 = 普通链接,1 = 预览 "retweet_video_preview": 0, // 转发微博视频是否预览 0 = 普通链接,1 = 预览 "original_image_preview": 1, // 原创微博图片是否预览 0 = 普通链接,1 = 预览 "retweet_image_preview": 1, // 转发微博图片是否预览 0 = 普通链接,1 = 预览 "original_live_photo_preview": 0, // 原创微博Live Photo是否预览 0 = 普通链接,1 = 预览 "retweet_live_photo_preview": 0, // 转发微博Live Photo是否预览 0 = 普通链接,1 = 预览 "inline_image_preview": 1 // 正文中"查看图片"是否预览 0 = 普通链接,1 = 预览 }, // ========================================================================== // 为什么会有两个配置块(markdown_file_dir 和 download_folder_name)? // // 这取决于是否在 write_mode 中启用了 "markdown"。 // // —————————————————————————————————————————————————————————————————————— // 场景一:启用了 "markdown"(write_mode 含 "markdown") // // 程序会生成 .md 文件,并下载媒体文件到本地。 // // 您应该修改以下两个配置块的全部项,并让相同媒体的值保持一致: // ● markdown_file_dir → 决定 .md 文件里链接的路径 // 同时决定图片的下载目录 // ● download_folder_name → 决定视频和 Live Photo 的下载目录 // (其中图片项在 md 模式下不生效,可忽略) // // —————————————————————————————————————————————————————————————————————— // 场景二:没有启用 "markdown"(write_mode 不含 "markdown") // // 程序不会生成 .md 文件,只下载媒体文件到本地。 // // 你只需修改 download_folder_name 的全部六项: // ● download_folder_name → 决定所有媒体文件的下载目录 // ● markdown_file_dir → 不参与任何逻辑,完全忽略 // // —————————————————————————————————————————————————————————————————————— // // 图片的下载目录在 md 模式下改由 markdown_file_dir 接管; // 视频和 Live Photo 的下载目录在所有模式下统一由 download_folder_name 接管。 // // ========================================================================== "markdown_file_dir": { "original_image_dir": "img", // md 中图片链接路径 & 图片下载目录 "retweet_image_dir": "img", "original_video_dir": "原创微博视频", // md 中视频链接路径 "retweet_video_dir": "转发微博视频", "original_live_photo_dir": "原创微博Live Photo视频", // md 中 Live Photo 链接路径 "retweet_live_photo_dir": "转发微博Live Photo视频" }, "download_folder_name": { "original_image_folder": "原创微博图片", // 图片下载目录(仅非 md 模式生效) "retweet_image_folder": "转发微博图片", "original_video_folder": "原创微博视频", // 视频下载目录(所有模式生效) "retweet_video_folder": "转发微博视频", "original_live_photo_folder": "原创微博Live Photo视频", // Live Photo 下载目录(所有模式生效) "retweet_live_photo_folder": "转发微博Live Photo视频" }, "original_pic_download": 0, // 是否下载原创微博图片 0 = 不下载,1 = 下载 "retweet_pic_download": 0, // 是否下载转发微博图片 0 = 不下载,1 = 下载 "original_video_download": 0, // 是否下载原创微博视频 0 = 不下载,1 = 下载 "retweet_video_download": 0, // 是否下载转发微博视频 0 = 不下载,1 = 下载 "original_live_photo_download": 0, // 是否下载原创微博Live Photo 0 = 不下载,1 = 下载 "retweet_live_photo_download": 0, // 是否下载转发微博Live Photo 0 = 不下载,1 = 下载 "download_comment": 0, // 是否下载评论 0 = 不下载,1 = 下载 "comment_max_download_count": 100, // 单条微博最大评论下载数量, 仅当 download_comment = 1 时生效 "comment_pic_download": 0, // 是否下载评论图片 0 = 不下载,1 = 下载 "download_repost": 0, // 是否下载转发 0 = 不下载,1 = 下载 "repost_max_download_count": 100, // 单条微博最大转发下载数量, 仅当 download_repost = 1 时生效 "output_directory": "weibo_data", // 数据输出目录 "user_id_as_folder_name": 0, // 是否以用户ID作为子文件夹名称 0 = 否,1 = 是 "remove_html_tag": 1, // 是否移除微博内容中的HTML标签 0 = 否,1 = 是 "cookie": "YOUR_WEIBO_COOKIE_HERE", // 微博Cookie(重要!) // 登录微博后,在浏览器开发者工具中获取 // 格式:SCF=...; SUB=...; SUBP=...; ALF=...; SSOLoginState=... "sqlite_db_path": "weibodata.db", // SQLite数据库文件路径,仅当 write_mode 包含 sqlite 时生效 "mysql_config": { "host": "localhost", "port": 3306, "user": "root", "password": "123456", "charset": "utf8mb4" }, // MySQL数据库配置(仅当 write_mode 包含 mysql 时需要) "store_binary_in_sqlite": 0, // 是否在SQLite中存储二进制数据(图片、视频) 0 = 只存路径,1 = 存储二进制数据(文件会很大) "mongodb_URI": "mongodb://[username:password@]host[:port][/[defaultauthdb][?options]]", "post_config": { "api_url": "https://api.example.com", "api_token": "" }, // MongoDB连接字符串(仅当 write_mode 包含 mongo 时需要) "anti_ban_config": { "enabled": true, // 是否启用反封禁机制 "max_weibo_per_session": 500, // 单次运行最大微博数量,达到此数量后自动暂停,防止一次性爬取过多 "batch_size": 50, // 批次大小,每爬取这么多条微博后,执行批次延迟 "batch_delay": 30, // 批次延迟时间(秒),每批次后的强制等待时间 "request_delay_min": 8, // 请求延迟最小值(秒) "request_delay_max": 15, // 请求延迟最大值(秒) "max_session_time": 600, // 最大单次运行时间(秒),达到此时间后强制休息 "max_api_errors": 5, // 最大API错误次数,达到此次数后强制休息 "rest_time_min": 180, // 休息时间最小值(秒),触发休息条件后暂停的时间 "random_rest_probability": 0.01, // 每次休息后,随机触发额外休息的概率 "user_agents": [ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 Edg/136.0.0.0", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0", "Mozilla/5.0 (iPhone; CPU iPhone OS 17_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Mobile/15E148 Safari/604.1", "Mozilla/5.0 (Linux; Android 14; SM-S9180) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.113 Mobile Safari/537.36" ], "accept_languages": [ "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7", "zh-TW,zh;q=0.9,en;q=0.8" ], "referer_list": [ "https://m.weibo.cn/", "https://weibo.com/", "https://www.weibo.com/" ] }, "write_time_in_exif": 1, // 是否将微博发布时间写入EXIF "change_file_time": 1 // 是否修改文件系统时间 }