CommunityEscrita e Ediçãogithub.com

wechat-article-fetch

Captura e descoberta de artigos de contas públicas do WeChat: zero dependências, sem login, UA é a única barreira de entrada (SKILL + 3 scripts Python, MIT).

O que é wechat-article-fetch?

Esta skill permite capturar e descobrir artigos de contas públicas do WeChat (公众号) sem necessidade de login, cookies ou JavaScript. Ela é composta por três scripts Python (wechat_fetch.py, wechat_discover.py, batch_fetch.py) que oferecem interface de linha de comando e de importação. A skill funciona explorando o fato de que a página pública do artigo é renderizada no servidor, sendo suficiente uma requisição GET com um User-Agent de navegador para obter o conteúdo principal. Para descoberta, utiliza a busca do Sogou para obter metadados recentes, extraindo a URL limpa da cadeia de redirecionamento. A skill impõe limites rígidos de frequência (máximo ~15–20 requisições a cada 30 minutos para Sogou, e no máximo 500 artigos por dia) para evitar bloqueios de IP. Ela é adequada para pesquisa pessoal em pequena escala, respeitando os termos de serviço e a legislação de direitos autorais. As plataformas suportadas incluem Claude Code, Cursor, Codex ou qualquer agente capaz de executar scripts Python.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add JJ-Yvain-Skills/wechat-article-fetch

Installed? Explore more Escrita e Edição skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

wechat-article-fetch · Captura de artigos de contas públicas do WeChat

Fatos centrais (já testados na prática, executar diretamente)

  • UA é a única barreira de entrada: use o User-Agent de navegador embutido nos scripts. Sem UA / curl / python-requests / MicroMessenger → resultam em 302
  • Conteúdo principal fácil de obter: renderizado no servidor, em <div id="js_content">, basta GET puro, sem necessidade de JS/Cookie/login
  • Imagens sem proteção contra hotlinking: URLs reais em data-src
  • Camada de descoberta: artigos originais não indexados por mecanismos de busca; Sogou fornece links de redirecionamento criptografados; HTTP puro pode decompor a assinatura em URL direta (janela ≥ 1h, capturar rápido); ⚠️ cerca de 15~20 requisições seguidas em 30 minutos acionam CAPTCHA a nível de IP (requer humano, navegador também sem solução) → baixa frequência sequencial, pare ao acionar

Exemplo de UA (use ao escrever seus scripts): Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36

Uso (scripts no mesmo diretório, zero dependências, modo CLI e biblioteca, erros estruturados via WeChatError)

python wechat_fetch.py "<url>" [--format md|json|text] [--out FILE]   # Capturar artigo
python wechat_discover.py "palavra-chave" [--format table|json]              # Buscar metadados (decomposição da cadeia de redirecionamento conforme status do canal)
python batch_fetch.py urls.txt [--min-delay 3] [--max-delay 8] [--daily-limit 500]  # Lote: limitar velocidade / retomada automática / parada no CAPTCHA

Status dos canais (testado em 2026-08, para evitar uso de caminhos mortos)

CanalStatus
Página pública de artigo (captura direta)✅ Estável a longo prazo (núcleo desta skill)
Busca Sogou✅ Apenas metadados recentes (estado limpo); cadeia de redirecionamento em HTTP puro, extrair URL com assinatura (janela ≥ 1h, capturar rápido); ⚠️ ~15-20 requisições / 30 minutos aciona CAPTCHA de IP, requer humano
Página de coleção (álbum)⚠️ Anônimo pode navegar, apenas artigos na coleção
Lista de histórico da página inicial da conta pública❌ Anônimo barrado: "Por favor, abra o link no cliente WeChat"; getmsg apenas ~10 artigos recentes
Busca entre contas no backend da conta pública❌ Morto (WeChat desligou em 2026-07-30, todas as ferramentas do setor paralisadas)

Conclusão: camada de captura estável; limite da camada de descoberta = recentes do Sogou + coleções (⚠️ limite dinâmico de frequência, baixa frequência); sem canal legítimo para histórico completo.

Fluxo de trabalho

  • Link já disponível → GET (com UA de navegador) → extrair #js_content → saída. Em caso de falha, seguir tabela de diagnóstico, não repetir cegamente.
  • Apenas palavra-chave → obter metadados do Sogou; se precisar do conteúdo, usar HTTP puro para decompor a cadeia de redirecionamento via JS e extrair a URL com assinatura e voltar ao fluxo de captura (em caso de falha / acionamento de anti-raspagem, tentar navegador como fallback; ou buscar um espelho de republicação, mas informar o usuário sobre possível modificação). Histórico da página inicial e busca no backend não tentar (morto / barrado)

Análise (necessário apenas se for escrever regex manualmente; ao usar os scripts, pode pular)

Âncoras: var msg_title / nickname / ct + #js_content. ⚠️ msg_title/nickname possuem invólucros .html(false)/htmlDecode() – regex case apenas com a primeira string após o sinal de igual, caso contrário tudo ficará vazio; imagens usar data-src em vez de src.

Diagnóstico de falhas (não repetir cegamente)

FenômenoCausaAção
302UA inadequadoTrocar para UA de navegador
200 + "Erro de parâmetro"Link inválidoParar, verificar link
302 → antispiderBloqueio do lado do Sogou (CAPTCHA nível IP, testado em 2026-08-13 requer humano)Parar, não contornar; tentar novamente em baixa frequência ou aguardar recuperação (navegador também bloqueado)
302 → appmsgcaptchaLink anormal / acionamento de CAPTCHAParar, não contornar
200 + "Esta página não existe"UA julgado como botTrocar para UA de navegador
200 + "Por favor, abra no cliente WeChat"Página que requer loginCanal não disponível, usar Sogou / coleção
200 + "Removido / violação"Artigo foi processadoPular, registrar motivo

Restrições rígidas (violar = parar)

  1. Não tocar em estado de login: quaisquer cookies ou estado de login do WeChat pessoal / backend de conta pública são proibidos (banimento + violação contratual)
  2. Não contornar CAPTCHA: ao acionar, parar completamente (contornar medidas técnicas é linha vermelha do Artigo 285 do Código Penal chinês)
  3. Não realizar coleta em escala: robots.txt desabilita todo o site; destina-se a uso pessoal em pequena quantidade; sequencial com intervalos de segundos, máximo 500 artigos por dia
  4. Não uso comercial nem distribuição: artigos são protegidos por direitos autorais; uso pessoal para estudo e pesquisa enquadra-se como uso justo (desde que: não distribuir, não usar comercialmente, manter atribuição)
  5. Camada de descoberta sujeita a limitação dinâmica de frequência (testado em 2026-08-13: 1520 requisições / 30 minutos aciona CAPTCHA IP, não desbloqueia automaticamente em horas): sequencial em baixa frequência (recomendado ≤ 10 requisições / 30 minutos); ao acionar, parar completamente, aguardar recuperação, não tentar contornar

Habilidades Relacionadas