Dans le cadre de la gestion de la consommation de contenu, l'idée est de télécharger les articles des comptes officiels Wechat suivis pour une consultation ultérieure. Cette démarche vise à s'assurer que le contenu reste accessible même en cas de suppression par l'auteur.
En s'appuyant sur des techniques de hook de messages Wechat en temps réel, il est possible de capturer les notifications de nouveaux articles, y compris leur titre, leur lien et leur date de publication. Ces informations permettent d'initier le téléchargement du contenu principal et sa sauvegarde sous forme de fichiers HTML.
La gestion des articles historiques fait également partie des préoccupations, avec la possibilité de les archiver au format PDF ou HTML. Une attention particulière est portée à l'inclusion des commentaires, qui peuvent contenir des informations précieuses, bien que cela puisse introduire une complexité supplémentaire dans le processus d'extraction.
Un projet GitHub a été initié pour répertorier les comptes officiels Wechat pertinents et faciliter leur découverte. Ce dépôt sera mis à jour avec de nouvelles recommandations de comptes axés sur la rétro-ingénierie et d'autres sujets techniques.
La diffusion des articles téléchargés pose également un défi. Les solutions de partage via des services de stockage cloud nécessitent une gestion des mises à jour, tandis que la compression et l'organisation des fichiers par compte officiel peuvent complexifier le processus.
Exportation de la liste des comptes suivis
L'exportation de la liste des comptes Wechat suivis peut être réalisée en suivant des méthodes similaires à celles utilisées pour l'extraction de la liste d'amis, comme décrit dans des articles précédents sur la création de robots Wechat en Python.
Installation et configuration
Prérequis
- Installer une version spécifique de Wechat (par exemple, 3.9.8.15).
- Installer Python, version 3.7 ou supérieure.
- Installer la librairie
wechat\_pyrobotvia pip :pip install wechat_pyrobot==1.3.0
Intégration du script Python dans Wechat
Créez un répertoire, par exemple robot\_code, et un fichier Python, tel que main.py, avec le contenu suivant :
from py_process_hooker import inject_python_and_monitor_dir
from wechat_pyrobot import get_on_startup
from wechat_pyrobot.msg_plugins import MonitorBiz
if __name__ == "__main__":
process_name = "WeChat.exe"
open_console = True
# Initialise le plugin de surveillance des articles de comptes officiels
on_startup = get_on_startup(msg_plugins=[MonitorBiz])
# Injecte Python dans le processus Wechat et surveille le répertoire du script
inject_python_and_monitor_dir(process_name, __file__, open_console=open_console, on_startup=on_startup)
Lancez Wechat, assurez-vous d'être connecté, puis exécutez le script main.py. Cela injectera Python dans le processus Wechat et ouvrira une console qui affichera les notifications d'articles de comptes officiels dès leur réception.
Création d'un plugin de traitement personnalisé
Le plugin MonitorBiz sert d'exemple pour extraire les données des articles. Pour implémenter une logique de sauvegarde personnalisée (dans un fichier ou une base de données), il suffit d'hériter de cette classe et de redéfinir les méthodes appropriées. Créez un dossier plugins à côté de main.py et un fichier biz.py à l'intérieur avec le code suivant :
import os
import json
from wechat_pyrobot.msg_plugins import MonitorBiz
class CustomBizProcessor(MonitorBiz):
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.plugin_name = os.path.basename(__file__)
# Détermine le chemin du répertoire principal à partir de l'emplacement du script injecté
main_directory = os.path.dirname(os.path.dirname(__file__))
self.storage_path = os.path.join(main_directory, "wechat_articles_data.json")
def save_articles(self, articles_data):
# articles_data est une liste de dictionnaires contenant les informations des articles
with open(self.storage_path, 'a', encoding='utf-8') as f:
for article_info in articles_data:
print(article_info) # Affichage dans la console
f.write(json.dumps(article_info, ensure_ascii=False) + '\n')
Modifiez ensuite main.py pour utiliser votre plugin personnalisé :
from py_process_hooker import inject_python_and_monitor_dir
from wechat_pyrobot import get_on_startup
from plugins.biz import CustomBizProcessor # Importation du plugin personnalisé
if __name__ == "__main__":
process_name = "WeChat.exe"
open_console = True
# Utilise le plugin personnalisé pour la gestion des messages
on_startup = get_on_startup(msg_plugins=[CustomBizProcessor])
inject_python_and_monitor_dir(process_name, __file__, open_console=open_console, on_startup=on_startup)
Lorsque des articles sont publiés par les comptes officiels, le fichier wechat\_articles\_data.json sera créé et rempli avec les données extraites.
Extraction des articles de comptes officiels
L'extraction en temps réel d'articles de comptes officiels Wechat repose principalement sur des techniques de hook. Cette approche garantit une haute réactivité et évite les limitations liées aux requêtes directes aux API. Elle se concentre sur l'attente des notifications de publication d'articles.
Pour l'extraction d'articles historiques, plusieurs méthodes sont envisageables :
- Plateforme Wechat Official Accounts.
- Wechat Reading (微信读书).
- Interception des requêtes HTTP sous Windows.
- Utilisation des protocoles non-HTTP des clients Wechat (Android, Windows).
- Plateformes tierces spécialisées (ex. Qingbo).
Les méthodes utilisant la plateforme Wechat Official Accounts et l'interception HTTP sous Windows sont populaires en raison de leur relative simplicité technique. Elles nécessitent l'obtention de cookies ou de paramètres d'authentification et n'impliquent généralement pas de chiffrement complexe. Cependant, l'utilisation des interfaces HTTP peut entraîner des blocages temporaires, voire prolongés, des comptes.
Une approche alternative consiste à intercepter les requêtes de l'interface utilisateur de Wechat lorsqu'un compte officiel est ouvert. Cette interface, qui ne repose pas sur des requêtes HTTP classiques, peut être sollicitée de manière répétée sans blocage immédiat. Néanmoins, une fréquence de requêtes excessive peut mener à un bannissement temporaire du compte, d'où la nécessité de limiter le volume de requêtes quotidiennes. Cette méthode offre l'avantage de pouvoir récupérer des informations supplémentaires, comme le nombre de lectures de chaque article, directement lors de la consultation des listes d'articles.