CommunityRédaction et éditiongithub.com

JJ-Yvain-Skills/wechat-article-fetch

Récupération et découverte d'articles de comptes publics WeChat : zéro dépendance, pas de connexion requise, seul le User-Agent fait office de barrière d'entrée (Skill + 3 scripts Python, licence MIT).

Qu'est-ce que wechat-article-fetch ?

Cette compétence permet de récupérer le contenu intégral d'articles de comptes publics WeChat (公众号) et de découvrir des articles récents à partir de mots-clés, le tout sans dépendance externe et sans connexion. Le système repose sur trois scripts Python autonomes : `wechat_fetch.py` pour l'extraction du corps de l'article, `wechat_discover.py` pour la recherche de métadonnées via Sogou, et `batch_fetch.py` pour la récupération en masse avec gestion de la limitation de débit et reprise automatique. L'approche est exclusivement basée sur des requêtes HTTP GET avec un User-Agent de navigateur standard : le serveur rend l'article côté serveur dans `<div id="js_content">`, les images sont protégées via `data-src` (sans chaîne anti-hotlinking), et les liens de découverte Sogou sont nettoyés en URL HTTP directes avec signature (fenêtre de ≥1h). La compétence impose des contraintes strictes : pas de session de connexion, pas de contournement de CAPTCHA IP (la détection déclenche un arrêt complet), pas d'industrialisation (≤500 articles/jour, intervalle de plusieurs secondes), et pas d'usage commercial. Elle est idéale pour la recherche personnelle ou l'étude, dans le respect des droits d'auteur et des conditions d'utilisation de WeChat.

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

Installed? Explore more Rédaction et édition skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

wechat-article-fetch · Récupération d'articles WeChat (公众号)

Faits essentiels (testés, exécution directe)

  • Le User-Agent (UA) est la seule barrière : utilisez l'UA de navigateur intégré aux scripts. Sans UA / avec curl / python-requests / MicroMessenger → tout redirige en 302.
  • Le corps est très facile à obtenir : rendu côté serveur, dans <div id="js_content">, simple GET suffit, pas besoin de JS/Cookie/connexion.
  • Images sans anti-hotlinking : les vraies URL sont dans data-src.
  • Couche de découverte : les articles originaux ne sont pas indexés par les moteurs ; Sogou fournit des liens de redirection chiffrés, l'URL propre en HTTP pur avec signature est déchiffrable (fenêtre ≥1h, à capturer rapidement) ; ⚠️ environ 15 à 20 requêtes consécutives en 30 minutes déclenchent un CAPTCHA IP (nécessite intervention humaine, même un navigateur est bloqué) → sérialisation à faible fréquence, arrêt dès déclenchement.

Exemple d'UA (à utiliser dans vos propres scripts) : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36

Utilisation (scripts dans le même répertoire, zéro dépendance, double mode CLI+librairie, erreurs structurées WeChatError)

python wechat_fetch.py "<url>" [--format md|json|text] [--out FICHIER]   # Récupérer le corps de l'article
python wechat_discover.py "mot-clé" [--format table|json]              # Rechercher des métadonnées (déchiffrage des liens de redirection selon l'état du canal)
python batch_fetch.py urls.txt [--min-delay 3] [--max-delay 8] [--daily-limit 500]  # Batch : limitation de débit, reprise, arrêt sur CAPTCHA

État des canaux (testé en août 2026, éviter les impasses)

CanalÉtat
Page publique d'article (récupération brute)✅ Stable à long terme (cœur de la compétence)
Recherche Sogou✅ Métadonnées récentes uniquement (état propre) ; lien de redirection en HTTP pur avec signature déchiffrée (fenêtre ≥1h, capturer rapidement) ; ⚠️ ~15-20 requêtes en 30 minutes déclenchent un CAPTCHA IP, nécessite intervention humaine
Page de collection (album)⚠️ Anonyme, pagination possible, articles uniquement dans la collection
Liste historique de la page d'accueil du compte❌ Bloqué en anonyme : « Veuillez ouvrir le lien dans l'application WeChat » ; getmsg ne renvoie que ~10 articles récents
Recherche cross-compte depuis le panneau d'administration❌ Mort (fermé par WeChat le 2026-07-30, tous les outils de l'industrie sont inopérants)

Conclusion : La couche de récupération est stable ; la couche de découverte se limite aux articles récents de Sogou + collections (⚠️ limitation de fréquence dynamique, basse fréquence) ; pas de canal légal pour l'historique complet.

Processus

  • Avec un lien → GET (UA navigateur) → extraire #js_content → afficher. En cas d'échec, suivre le tableau de diagnostic, ne pas réessayer aveuglément.
  • Avec un mot-clé uniquement → Sogou pour les métadonnées ; pour le corps, déchiffrer le lien de redirection JS en HTTP pur pour obtenir l'URL signée et revenir au processus de récupération (en cas d'échec/déclenchement anti-bot, utiliser un navigateur en dernier recours ; ou chercher une copie miroir, informer l'utilisateur que le contenu peut être modifié). Ne pas essayer l'historique de la page d'accueil ni la recherche depuis le panneau d'administration (mort/bloqué).

Analyse (uniquement si vous écrivez vos propres expressions régulières ; avec les scripts, vous pouvez ignorer)

Points d'ancrage : var msg_title / nickname / ct + #js_content. ⚠️ msg_title/nickname peuvent être encapsulés dans .html(false)/htmlDecode() — l'expression régulière ne capture que la première chaîne entre guillemets après le signe égal, sinon tout est vidé ; les images prennent data-src et non src.

Diagnostic des échecs (ne pas réessayer aveuglément)

PhénomèneCauseAction
302UA non conformeChanger pour un UA de navigateur
200 + erreur de paramètreLien invalideArrêter, vérifier le lien
302 → antispiderInterception côté Sogou (CAPTCHA IP, nécessite intervention humaine, testé le 2026-08-13)Arrêter, ne pas contourner ; réessayer à basse fréquence ou attendre la reprise (le navigateur est également bloqué)
302 → appmsgcaptchaLien anormal / déclenchement CAPTCHAArrêter, ne pas contourner
200 + Cette page n'existe pasUA détecté comme robotChanger pour un UA de navigateur
200 + Veuillez ouvrir le lien dans l'application WeChatPage nécessitant une connexionCe canal n'est pas disponible, utiliser Sogou/collection
200 + Supprimé/enfreintL'article a été traitéPasser, enregistrer la raison

Contraintes strictes (violation = arrêt immédiat)

  1. Pas de session de connexion : pas d'utilisation de Cookie personnel WeChat, de QR code, etc. (suspension de compte + violation contractuelle).
  2. Pas de contournement de CAPTCHA : déclenchement = arrêt complet (contourner une mesure technique est une infraction au sens de l'article 285 du Code pénal chinois).
  3. Pas de collecte en masse : robots interdits sur l'ensemble du site, usage personnel pour de petites quantités ; sérialisation + intervalle de secondes, ≤500 articles par jour.
  4. Pas d'usage commercial ni de diffusion : les articles sont protégés par le droit d'auteur ; l'étude personnelle et la recherche relèvent de l'usage loyal (à condition de ne pas diffuser, de ne pas commercialiser, de conserver la mention de l'auteur).
  5. La couche de découverte est soumise à une limitation de fréquence dynamique (testé le 2026-08-13 : ~15-20 requêtes en 30 minutes déclenchent un CAPTCHA IP, non levé automatiquement après plusieurs heures) : sérialisation à basse fréquence (≤10 requêtes/30 minutes recommandé), arrêt complet dès déclenchement, attendre la reprise, ne pas tenter de contourner.

Skills associés