Initial commit: archive all

This commit is contained in:
Knowledge Base Agent
2026-02-27 20:45:02 +08:00
commit c0021e5825
27 changed files with 1239 additions and 0 deletions
+92
View File
@@ -0,0 +1,92 @@
---
title: "如何高效的爬取微信公众号"
date: 2026-02-27
duration: 0:00
author:
bvid:
platform: bilibili
url: https://zhuanlan.zhihu.com/p/1894054073625461813
tags: ["微信爬虫", "自动化测试", "数据采集", "接口逆向", "Python实战"]
---
## 标题
微信公众号自动化爬取实战:从接口原理到Selenium持久化方案
## 摘要
本报告深度解析了一篇关于微信公众号文章高效爬取的技术指导内容。随着搜狗搜索接口的失效,爬虫开发者面临新的挑战。本文详细介绍了一种基于微信公众平台(MP)后台管理接口的替代方案。该方案的核心逻辑在于利用公众号后台的“文章管理”功能,通过构造包含`fakeid`(公众号标识)和`token`(访问令牌)的请求来获取文章列表。
报告重点阐述了该技术路线的关键瓶颈——登录态(Cookie与Token)的时效性限制(约2-3天),并提出了一套完整的自动化解决方案。该方案结合了Selenium自动化测试框架与数据库存储技术,实现了从“手动扫码”到“自动监控与刷新”的闭环。通过模拟用户登录行为、提取关键鉴权参数并持久化存储,该系统能够在Token过期时自动触发更新流程,从而保证爬虫业务的长期稳定运行。本分析将深入剖析其技术架构、核心参数含义及具体实现逻辑,为数据采集工程师提供可落地的技术参考。
## 主要主题
- 微信公众号爬虫
- Selenium自动化登录
- Token与Cookie管理
- 搜狗接口失效替代方案
- 公众号后台接口解析
- 鉴权参数时效性处理
- 数据库持久化存储
- 自动化运维监控
- 反反爬虫策略
- 整体爬虫架构设计
## 关键见解
- **技术路线的迭代与转移**:内容揭示了微信生态爬虫难度的升级,从早期基于公开搜索(搜狗)的低门槛接口,被迫转移至基于账户鉴权(公众平台)的高门槛接口,这要求开发者必须具备处理复杂登录态的能力。
- **鉴权机制的脆弱性与对策**:核心痛点在于`Token`和`Cookie`的短时效性(2-3天)。传统的“一次配置永久运行”模式失效,解决方案必须引入“监听-刷新”机制,这是保证爬虫稳定性的关键。
- **Selenium作为鉴权桥梁**:虽然直接请求API效率更高,但在获取微信这种高安全性平台的登录态时,Selenium模拟真实浏览器行为(扫码)是绕过复杂加密和风控的最优解,实现了“人工辅助鉴权,程序自动采集”的分工。
- **闭环自动化架构**:提出的解决方案不仅仅是一个脚本,而是一个系统。它包含了“配置端(数据库)- 执行端- 监控端(过期检测)”的完整闭环,这是工业级爬虫的典型设计思路。
- **参数依赖关系**:深刻理解`fakeid`(资源定位)与`token`(用户授权)的分离是至关重要的。这种设计允许使用同一个管理员身份(Token),去遍历和采集多个不同公众号(Fakeid)的数据。
## 时间轴
### 第 1 部分 (00:00 - 05:00)
**背景演变与技术选型分析**
在本阶段,内容首先对微信公众号爬虫的历史背景进行了梳理,重点对比了“过去”与“现在”技术路线的巨大差异。
**1. 历史接口的衰退(搜狗模式):**
内容回顾了早期的爬虫方式,即依赖“搜狗搜索接口”。这是一个“黄金时代”的特征:无需登录、公开可访问。这种方式的技术门槛极低,开发者只需简单的HTTP请求即可获取数据。然而,随着微信平台风控策略的收紧,搜狗接口逐渐增加了验证码、IP封禁等反爬措施,直至目前基本失效。这一变化反映了互联网数据从“开放互联”向“围墙花园”演变的趋势,迫使爬虫开发者必须寻找更深层的入口。
**2. 新方案的提出(公众平台模式):**
面对旧路的堵死,作者提出了当前的主流方案——通过“微信公众号后台接口”进行爬取。这是一个重大的逻辑转变:从“搜索者”视角转变为“管理者”视角。
* **入口逻辑**:该接口原本是为公众号运营者管理自己发布的文章设计的,因此它天然包含了完整的文章列表数据。
* **核心参数解析**:
* **Fakeid**:这是公众号在微信生态中的唯一加密标识。要爬取某个号,必须先获取其Fakeid。这通常需要通过公众号后台的“搜索”功能抓包获取。
* **Token**:这是访问后台的“门票”。由于后台是私密空间,必须经过身份验证。Token通常在登录后生成,并附加在URL参数中。
**3. 鉴权门槛与时效性挑战:**
内容强调了新方案的核心难点——**鉴权**。与搜狗模式不同,后台接口强制要求登录状态。
* **Cookie**:存储了用户的会话信息。
* **Token**:动态生成的访问令牌。
这两者共同构成了身份证明。然而,微信出于安全考虑,设置了严格的有效期(文中提到约2-3天)。这意味着,如果采用传统的“手动复制Cookie”方式运行爬虫,程序每隔几天就会中断,无法实现“高效”与“自动化”的目标。
**4. 技术门槛的界定:**
作者明确列出了前置知识要求:Python/Java等编程语言、HTML/DOM结构知识、以及Selenium的基本操作。这表明本方案属于“进阶级”教程,排除了纯小白用户,面向的是具备一定逆向思维和自动化控制经验的开发者。特别是对Selenium的依赖,暗示了接下来将采用浏览器自动化技术来解决人工登录的问题。
### 第 2 部分 (05:00 - 10:00)
**Selenium自动化登录与数据持久化架构设计**
本部分深入探讨了如何解决“登录态过期”这一核心痛点,详细拆解了基于Selenium的自动化登录流程以及基于数据库的持久化策略。
**1. 自动化登录的工程实现:**
为了替代每两天手动复制一次Cookie的繁琐操作,方案引入了Selenium WebDriver。
* **流程拆解**:
1. **启动与导航**:程序启动浏览器(推荐Chrome Headless模式以适应服务器环境,尽管文中未明示,但属行业惯例),定向至微信公众号登录页。
2. **扫码介入**:这是唯一的“半自动”环节。程序会挂起等待,直到用户拿出手机扫码确认。虽然这仍需人工,但通过程序化控制,可以在服务崩溃或Token彻底失效时作为兜底手段。
3. **关键数据提取**:扫码成功后,浏览器会跳转至后台首页。此时,Selenium利用Cookie操作接口(如`driver.get_cookies()`)提取全套Cookie信息,同时从当前URL或页面源码中利用正则或DOM解析提取`token`参数。
**2. 架构设计:配置与状态的分离**
为了实现“高效”爬取,系统设计采用了“控制面”与“数据面”分离的架构:
* **数据库的角色**:数据库在这里不仅仅是存储结果,更是系统的“大脑”。
* **Target Table(目标表)**:存储待爬取公众号的名称、对应的URL及其唯一的`fakeid`。
* **Auth Table(鉴权表)**:存储最新获取的`token`和`cookie`字符串。
* **解耦优势**:这种设计使得爬虫脚本本身变得无状态。启动时,脚本只需向数据库请求“我要爬谁”和“我是谁”,极大地提高了系统的可维护性。
**3. 运行逻辑与异常处理(闭环机制):**
内容最后总结了整个爬虫系统的运行闭环,这是保证“高效”的关键算法:
1. **初始化**:读取数据库中的Token和Cookie列表。
2. **执行请求**:遍历公众号列表,调用文章管理接口,携带Cookie和Token发起HTTP请求。
3. **状态监测**:在请求过程中,实时监控接口返回状态。如果返回码提示“未登录”或“Token失效”(通常是特定的错误码如-1或HTML重定向)。
4. **自动重试**:一旦监测到失效,程序不直接报错退出,而是触发`Re-login`逻辑,重新调用Selenium模块进行扫码刷新,更新数据库中的鉴权信息,随后继续未完成的任务。
**4. 总结与展望:**
本方案巧妙地利用了Web自动化工具解决了移动端生态(微信)的数据采集难题。它牺牲了一部分的实时性(需要扫码等待),换取了系统的长期稳定性。通过将Token管理自动化,该方案不仅适用于个人学习,也为构建大规模舆情监控或数据分析平台奠定了底层技术基础。作者最后提到的“并发优化”暗示了后续可能会引入多线程或异步IO(如aiohttp)来配合这套鉴权机制,进一步提升数据吞吐量。
@@ -0,0 +1,12 @@
{
"type": "zhuanlan",
"id": "1894054073625461813",
"url": "https://zhuanlan.zhihu.com/p/1894054073625461813",
"title": "如何高效的爬取微信公众号",
"author": "",
"publish_time": "",
"vote_up": 0,
"content_markdown": "",
"raw_html": "",
"content_file": "/home/starmen1265/work/knowledge-base/content/zhihu_article_如何高效的爬取微信公众号.md"
}
@@ -0,0 +1,93 @@
---
title: "如何高效的爬取微信公众号"
author: "null"
url: "https://zhuanlan.zhihu.com/p/1894054073625461813"
created: "2025-04-11 16:08:57"
voteup: 0
comments: 0
platform: zhihu
type: article
---
# 如何高效的爬取微信公众号
**作者**: null
**来源**: [知乎专栏](https://zhuanlan.zhihu.com/p/1894054073625461813)
**发布时间**: 2025-04-11 16:08:57
**点赞**: 0
**评论**: 0
---
⚠️ 免责声明本文仅为个人学习与技术研究用途,所涉及的爬虫程序用于探索公开网页的数据结构及自动化处理方式。采集的数据未被用于任何商业用途,也不涉及敏感或受限信息的抓取。如有侵犯任何平台的相关规定或权益,请及时联系本人删除。 以下内容旨在分享爬虫开发中的经验与技术细节,希望对同样热爱技术的你有所启发。 前提知识熟悉一门编程语言(如 Python / Java / Golang 等)了解基本网页结构(HTML / DOM)熟悉 Selenium 基本操作 ️ 微信公众号文章爬取说明❌ 过去的方式:搜狗搜索接口(已失效)早期,我们可以通过 搜狗搜索接口 获取公众号文章数据,无需登录验证,非常方便。但随着平台策略变化,该方式已无法继续使用。✅ 当前方法:微信公众号后台接口爬取我们通过 微信公众号后台文章管理接口 来获取文章列表,实现爬取逻辑。该接口返回的是你关注或搜索到的公众号所发布的文章列表,其 URL 中包含两个关键参数:fakeid:表示公众号的唯一标识符。token:登录后平台发放的访问令牌。此外,接口请求还必须携带有效的登录 Cookie。⚠️ 注意事项:token 和 cookie 都具有时效性(大约有效期为 2~3 天)。一旦过期,爬虫程序将无法获取数据,必须重新登录。 解决方案:自动化登录为了确保爬虫长期稳定运行,我们采用 Selenium 自动扫码登录 的方式,获取登录后的 token 与 cookie。实现逻辑如下:启动浏览器,访问微信公众号后台。扫码登录后,从浏览器请求中提取 token 和 cookie。将有效信息保存到数据库中。爬虫启动时从数据库读取公众号列表及对应的文章接口地址。检查 token / cookie 是否过期,若失效,则自动触发重新扫码流程,刷新数据。我讲讲我目前的处理方式,首选数据库存储我要爬哪些公众号,将公众号名称存储下来,然后记录上图中的url,然后将token和cookie存储下来。遍历所有的公众号调用接口即可实现,如果token过期就采用自动化的方式更新token和cookie即可!伪代码如下,可以根据自己的业务进行更改。只提供思路。options = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=options)
driver.get("https://mp.weixin.qq.com/")
try:
WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.CLASS_NAME, "login__type__container__scan__qrcode"))
)
while True:
current_url = driver.current_url
if "token" in current_url:
print("登录成功,检测到token 准备进行跳转")
parsed_url = urlparse.urlparse(current_url)
token = urlparse.parse_qs(parsed_url.query).get("token", [""])[0]
timestamp = int(time.time() * 1000)
new_url = (
f"https://mp.weixin.qq.com/cgi-bin/appmsg?"
f"t=media/appmsg_edit_v2&action=edit&isNew=1&type=77&createType=0"
f"&token={token}&lang=zh_CN&timestamp={timestamp}"
)
driver.get(new_url)
print(f"跳转到新页面: {new_url}")
WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.ID, "js_editor_insertlink"))
).click()
print("已自动点击超链接")
# <button type="button" class="weui-desktop-btn weui-desktop-btn_default">选择其他公众号</button>
WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.CSS_SELECTOR, ".weui-desktop-btn.weui-desktop-btn_default"))
).click()
print("已自动点击选择其他公众号")
input_box = WebDriverWait(driver, 50).until(
EC.visibility_of_element_located(
(By.XPATH,
"//input[@class='weui-desktop-form__input' and @placeholder='输入文章来源的账号名称或微信号,回车进行搜索']"))
)
print("已自动键入北京")
input_box.send_keys("北京")
search_button = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, ".weui-desktop-icon.weui-desktop-icon__search"))
)
driver.execute_script("arguments[0].click();", search_button)
print("已自动点击搜索")
WebDriverWait(driver, 10).until(
lambda driver: any("searchbiz" in request.url for request in driver.requests)
)
for request in driver.requests:
if "searchbiz" in request.url:
cookie = request.headers.get("Cookie")
cookie = [cookie.strip() for cookie in cookie.split(';') if cookie]
cookie_dict = {item.split('=')[0]: item.split('=')[1] for item in cookie}
formatted_cookies = ',\n'.join([f'"{key}": "{value}"' for key, value in cookie_dict.items()])
new_cookie = "{" + formatted_cookies + "}"
conn = db_factory.get_conn()
cur = conn.cursor()
cur.execute(update_property_sql, (new_cookie, 'vx_cookie'))
cur.execute(update_property_sql, (token, 'vx_token'))
cur.execute(update_property_sql, (1, 'vx_available'))
conn.commit()
wx_spy_manager = WxSpyManager()
wx_spy_manager.get_more_data()
break
print("自动化爬虫完毕")
break
time.sleep(1) # 每秒检查一次✅ 小结本方案基于微信公众号后台接口,实现了较为稳定的自动化文章爬取功能。通过 Selenium 自动化登录,可以解决传统接口过期失效的问题,为数据采集提供便利。后续文章将介绍爬虫核心模块的设计、异常处理、并发优化等更多实践内容。欢迎持续关注!
@@ -0,0 +1,22 @@
---
title: "开源神器——分分钟爬取小红书、抖音、微博、知乎了!"
author: "太阳鸟"
url: "https://zhuanlan.zhihu.com/p/1925232264591156410"
created: "2025-07-06 16:40:23"
voteup: 0
comments: 0
platform: zhihu
type: article
---
# 开源神器——分分钟爬取小红书、抖音、微博、知乎了!
**作者**: 太阳鸟
**来源**: [知乎专栏](https://zhuanlan.zhihu.com/p/1925232264591156410)
**发布时间**: 2025-07-06 16:40:23
**点赞**: 0
**评论**: 0
---
推荐阅读• Github 资料项目合集• 50个 AI 开源项目合集• 80 款AI 开源合集* 戳上方蓝字“牛皮糖不吹牛”关注我大家好,我是牛皮糖!最近在给一个做自媒体内容分析的朋友搭系统,他说想抓点小红书、抖音的数据看看趋势。我一听这不是很正常的需求吗?结果他话锋一转:“哥,我爬虫刚入门,JS加密看不懂,X-Bogus 不会搞,登录页面还 403,一气之下差点退圈。”我:别急,MediaCrawler 给你安排得明明白白! MediaCrawler 是啥?简单一句话: 一个能帮你一键爬小红书、抖音、快手、微博、B站、知乎、贴吧等平台内容的 Python 项目,不用写前端、不用逆向、不用懂加密!项目地址: https://github.com/NanmiCoder/MediaCrawler 它到底帮我们干了啥? 示例:只用 1 行代码,爬小红书热搜笔记!python main.py --platform xhs --type search --keyword "穿搭" --pages 5它就能给你:• 笔记标题、作者昵称、点赞、评论数• 完整内容(包括图片/视频链接)• 输出到本地 JSON / CSV,还支持 MySQL 入库! 重点:它是怎么做到“不被封”的?很多人一爬就被封 IP、403?MediaCrawler 的做法是:• ✅ 用 Playwright 自动化浏览器 模拟真实用户;• ✅ 登录状态保留 Cookie;• ✅ 页面运行时注入 JS 自动生成签名;• ✅ 支持代理池,一键配置;一句话:它就是模拟了一个“真的人”,所以平台难以识别你是爬虫。 开发者惊喜:还有 Pro 版本!项目作者还开了一个加强版:MediaCrawlerPro 给开发者的一点建议如果你做的是:• 自媒体数据收集• 舆情分析系统• 多平台热词抓取• 或者只是想轻松入门爬虫世界 那 MediaCrawler 一定值得收藏! 项目地址(赶紧 Star) https://github.com/NanmiCoder/MediaCrawler ‍ Pro 高级版: https://github.com/zwdzzs1/MediaCrawler·················END·················关于AI工具Github开源文本转语音神器Spark-TTS开源了,克隆声音仅需3秒?github开源B站UP主都在用的下载神器!Cobalt让你轻松搬运高清素材!Github 26k Stars 开源换脸神器Github 开源无代码的 Web 数据提取平台,2分钟内训练机器人自动抓取网页数据每日更新,期待与你一起成长欢迎围观副业知识星球本文使用 文章同步助手 同步