Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

微信公众号文章抓取代理

使用 github.com/elazarl/goproxy 库编写的HTTP代理,专门用于抓取微信公众号文章内容并转换为Markdown格式存储。

功能特点

  • 🔍 自动监听微信公众号文章列表请求
  • 📄 抓取文章内容并转换为Markdown格式
  • 📁 按日期分类存储文章
  • 🔄 自动去重,避免重复抓取
  • ⚙️ 支持配置文件和命令行参数
  • 🛡️ 优雅的错误处理和重试机制
  • 🌐 自动系统代理配置(跨平台支持)
  • 🚀 参考 wx_channels_download 项目实现

安装依赖

go mod download

使用方法

基本使用

# 编译
go build -o wechat-proxy cmd/main.go

# 运行(需要手动配置浏览器代理)
./wechat-proxy

自动配置系统代理(推荐)

# 自动配置系统代理(需要管理员/管理员权限)
# 首次使用建议先安装根证书
sudo ./wechat-proxy -install-cert

# 然后启动代理(自动配置系统代理)
sudo ./wechat-proxy -auto-proxy

# 指定端口和输出目录
sudo ./wechat-proxy -auto-proxy -port 8080 -output ./articles

证书管理

安装根证书(HTTPS支持)

# 安装根证书到系统(需要管理员权限)
sudo ./wechat-proxy -install-cert

# 卸载根证书
sudo ./wechat-proxy -uninstall-cert

仅HTTP模式(无HTTPS)

# 禁用证书管理,仅支持HTTP
./wechat-proxy -no-cert

自定义端口和输出目录

./wechat-proxy -port 8080 -output ./articles

使用配置文件

./wechat-proxy -config config.json

配置说明

创建 config.json 文件:

{
  "port": 8888,
  "output_dir": "./wechat_articles",
  "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
  "max_retries": 3,
  "timeout": 30
}

系统代理配置说明

自动配置系统代理(-auto-proxy)

跨平台支持 - 参考了 wx_channels_download 项目的实现:

Windows

  • 自动修改注册表设置系统代理
  • 需要管理员权限运行
  • 支持 HTTP/HTTPS 代理配置

macOS

  • 使用 networksetup 命令自动配置
  • 支持 Wi-Fi 和有线网络接口
  • 需要管理员权限

Linux

  • 自动检测桌面环境(GNOME/KDE/XFCE)
  • 使用 gsettingskwriteconfig5 配置
  • 支持环境变量作为备选方案

手动配置浏览器代理

如果不使用 -auto-proxy 参数,需要手动配置:

  1. 设置浏览器代理

    • HTTP代理:127.0.0.1:8888(或指定端口)
    • HTTPS代理:127.0.0.1:8888
  2. 系统代理设置(可选):

    • Windows:设置 → 网络和Internet → 代理
    • macOS:系统偏好设置 → 网络 → 高级 → 代理
    • Linux:根据桌面环境配置

使用步骤

方法1:自动系统代理配置(推荐)

  1. 以管理员权限启动代理(自动配置系统代理):

    sudo ./wechat-proxy -auto-proxy
  2. 访问微信公众号

    • 打开微信网页版或微信公众号页面
    • 访问目标公众号的文章列表
    • 系统代理已自动配置,所有流量将通过代理
  3. 自动抓取

    • 代理会自动检测文章列表请求
    • 抓取文章内容并转换为Markdown
    • 保存到指定的输出目录

方法2:手动配置代理

  1. 启动代理(不自动配置系统代理):

    ./wechat-proxy
  2. 配置浏览器代理

    • 设置HTTP代理为 127.0.0.1:8888
    • 或设置系统代理
  3. 访问微信公众号

    • 打开微信网页版或微信公众号页面
    • 访问目标公众号的文章列表
  4. 自动抓取

    • 代理会自动检测文章列表请求
    • 抓取文章内容并转换为Markdown
    • 保存到指定的输出目录

输出格式

文章将以Markdown格式保存,包含以下信息:

# 文章标题

**作者**: 作者名称
**发布时间**: 发布时间
**原文链接**: 原文URL
**抓取时间**: 抓取时间

---

文章内容(Markdown格式)

文件组织

wechat_articles/
├── 2024-01-01/
│   ├── 143022_文章标题1.md
│   └── 153045_文章标题2.md
└── 2024-01-02/
    └── 092015_文章标题3.md

支持的URL模式

代理会自动监听以下类型的请求:

  • 公众号文章列表:

    https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=...
    
  • 具体文章页面:

    https://mp.weixin.qq.com/s?...
    

注意事项

  1. 确保已安装Go 1.23.4或更高版本
  2. 代理需要监听端口,确保端口未被占用
  3. 文章抓取需要网络连接
  4. 遵守相关法律法规和网站服务条款

命令行参数

-install-cert
    安装根证书到系统(需要管理员权限)
-uninstall-cert
    卸载根证书(需要管理员权限)
-auto-proxy
    自动配置系统代理(需要管理员权限)
-no-cert
    禁用证书管理(仅支持HTTP)
-config string
    配置文件路径 (默认 "config.json")
-dev string
    网络设备(主要用于macOS)
-no-system-proxy
    禁用系统代理配置
-output string
    文章输出目录 (默认 "./wechat_articles")
-port int
    代理监听端口 (默认 8888)

故障排除

系统代理配置问题

  • Windows管理员权限:使用管理员身份运行程序
  • macOS networksetup错误:确保系统有networksetup命令
  • Linux桌面环境:检查是否安装了gsettings或kwriteconfig5
  • 代理配置失败:使用 -no-system-proxy 参数禁用自动配置,手动设置浏览器代理

常规问题

  • 端口被占用:修改配置文件或使用 -port 参数指定其他端口
  • 无法抓取内容:检查网络连接和代理设置
  • 权限问题:确保有写入输出目录的权限

技术栈

实现细节

系统代理自动配置

本项目参考了 wx_channels_download 项目的系统代理配置实现,采用跨平台方案:

平台支持

  • Windows: 通过注册表修改系统代理设置
  • macOS: 使用 networksetup 命令配置网络代理
  • Linux: 自动检测桌面环境,使用 gsettings (GNOME) 或 kwriteconfig5 (KDE)

主要特性

  • 自动权限检查和错误提示
  • 信号处理确保程序退出时恢复代理设置
  • 平台特定的实现优化
  • 优雅的错误处理和用户提示

代码结构

sysproxy.go              # 系统代理管理器接口定义
sysproxy_darwin.go       # macOS实现(使用 networksetup)
sysproxy_windows.go      # Windows实现(使用注册表)
sysproxy_linux.go        # Linux实现(支持GNOME/KDE)

代理拦截逻辑

参考 wx_channels_download 的设计模式:

  1. HTTP代理监听: 使用 goproxy 库创建代理服务器
  2. 请求拦截: 识别微信公众号相关请求
  3. 内容提取: 从响应中提取文章信息
  4. 后续处理: 使用 resty 直接抓取文章内容

安全性和清理

  • 自动恢复系统代理设置
  • 信号处理确保优雅退出
  • 权限检查和用户提示
  • 错误处理和日志记录

许可证

本项目仅供学习和研究使用,请遵守相关法律法规和网站服务条款。

About

智能微信公众号文章抓取工具 - 自动代理抓取、去重保存、Markdown格式转换,支持批量下载和HTTPS证书管理

Topics

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages