Un worker Cloudflare pour gérer et poster des boucles sur les forums de www.jeuxvideo.com.
Jvc-boucled-worker est un worker Cloudflare destiné à automatiser le post des boucles sur www.jeuxvideo.com. Cet utilitaire entièrement gratuit vous permet d'intégrer vos comptes JVC, de créer des boucles et d'en planifier le post automatique.
Cloudflare Workers est un environnement d'exécution sans serveur qui permet de déployer sur le réseau mondial de Cloudflare une application Web exécutant du code JavaScript.
Le worker possède une interface utilisateur qui vous permet d'ajouter vos comptes JVC et boucles dans une base de données D1 (= SQL). À chaque heure potentielle de post, le worker vérifie si vous avez programmé une boucle à cette heure. Le cas échéant, il se connecte à l'un des comptes assignés à votre boucle et envoie des requêtes aux forums de JVC pour poster le topic et éventuellement les réponses de celle-ci.
Le worker envoie plusieurs fois par jour des requêtes à JVC pour mettre à jour le statut et le niveau des comptes que vous avez associés.
Vous aurez besoin d'un compte Cloudflare pour
déployer le worker. L'inscription est gratuite et ne prend qu'une minute.
Assurez-vous d'avoir installé Node.js et son
gestionnaire de paquets npm (qui est normalement
inclus dans l'installation de Node).
Enfin vous aurez besoin de Git pour
cloner le dépôt ainsi que d'un compte Github.
Comme tous les workers Cloudflare effectuent des requêtes avec la même IP, il nous faut utiliser un proxy à IP dynamique pour que JVC ne puisse pas bloquer les requêtes des workers et que plusieurs workers puissent poster en même temps.
Nous allons déployer ce proxy sur Vercel. J'ai déjà créé un dépôt avec le code du proxy et les instructions concernant le déploiement : simple-express-proxy. Veuillez vous y référer avant de continuer, car l'utilisation d'un proxy est obligatoire pour faire fonctionner le worker. Le domaine généré par Vercel après le déploiement du proxy sera à renseigner dans l'interface du worker (voir plus bas).
Une fois le déploiement terminé, pensez à changer la région Vercel du proxy pour
le situer en France (le code de la région est cdg1
). La procédure est
expliquée dans le README du dépôt fourni. Ainsi, JVC ne rendra pas non
cliquables les liens postés par le worker.
Ouvrez un terminal à l'emplacement de votre choix puis cloner le dépôt avec
git
:
git clone https://github.com/ContrapunctusII/jvc-boucled-worker.git
cd jvc-boucled-worker
Le terminal est désormais situé à la racine du dépôt. Exécutez la commande suivante :
npm install
Cette commande va installer, entre autres,
wrangler
qui vous
permettra de gérer le déploiement du worker.
Exécutez la commande suivante et suivez les instructions pour vous connecter à
votre compte Cloudflare depuis wrangler
:
npx wrangler login
Lancez le script shell setup_db.sh
qui créera les bases de données nécessaires
pour le worker et les ajoutera dans le fichier wrangler.toml
:
- Sur Windows (avec Git installé — assurez-vous d'utiliser le CMD et non pas PowerShell) :
set PATH=%PATH%;c:\Program Files\Git\bin
sh setup_db.sh
- Sur Linux/MacOS :
chmod +x setup_db.sh
./setup_db.sh
Tout est prêt pour déployer le worker sur le réseau Cloudflare :
npx wrangler deploy
S'il s'agit de la première fois que vous déployez une application
Cloudflare, wrangler
vous demandera de choisir un nom de domaine. Vous
pouvez entrez ce que bon vous semble. Si le déploiement s'est bien déroulé,
wrangler
affichera l'URL de votre nouveau worker à la fin de l'exécution.
Vous devriez pouvoir accéder au worker sur votre navigateur en quelques minutes. Cependant, notamment sur Windows, il est possible et même probable que passé ce délai, vous rencontriez toujours l'erreur « Ce site est inaccessible » en tentant de vous y rendre sur votre navigateur. Cela est dû au cache DNS de votre ordinateur qui n'a pas été mis à jour et considère toujours le domaine comme inexistant. Essayez de vider le cache DNS. Si cela ne fonctionne toujours pas, videz le cache DNS de votre navigateur. Enfin, en dernier recours, ajoutez temporairement un DNS tiers à votre navigateur, comme celui de Cloudflare.
Tant que vous ne saississez pas l'URL complète du proxy déployé sur Vercel dans
la page /config
, vous ne pourrez pas accéder aux autres pages du site.
Si vous modifiez le code du worker et que vous souhaitez déployez les
changements, il vous suffit d'exécuter npx wrangler deploy
comme précédémment.
Si vous souhaitez observer les sorties de console.log
, utilisez
npx wrangler tail
.
Enfin, pour réinitialiser la base de données D1, exécutez npm run setup-d1
.
Le site est divisé en six endpoints publics :
/comptes
: page affichant l'ensemble des comptes ajoutés, avec pseudo, statut (banni ou non), boucles associées, niveau (si non banni), et permettant d'en ajouter, d'en supprimer et de tous les mettre à jour./boucles
: page affichant l'ensemble des boucles créées, avec nom, heures de posts, comptes associés, statut (actif ou non), et dernier topic en date./boucles/ajout-boucle
: formulaire vous permettant d'ajouter une boucle. Chaque champ à remplir est accompagné d'une infobulle expliquant ce qu'il doit contenir.boucle/:id
: affiche les informations de la boucle d'IDid
avec possibilité de modifier celles-ci./logs
: page faisant état des logs du serveur, indiquant si des erreurs ont été rencontrées durant une opération interne (post de boucle, mise à jour de compte, etc.). Si vous rencontrez une erreur persistante, ou que vous soupçonnez le code de comporter un bug, n'hésitez pas à exécuter la commandenpx wrangler tail
qui affichera par la console le détail des opérations en cours./config
: page permettant de modifier les paramètres du worker, se résumant pour l'instant à l'URL du proxy que vous avez déployé.
- Pouvoir planifier des posts de boucle non seulement sur une journée mais aussi sur une semaine. Par exemple, tous les mardis et jeudis à 18 h.
- Mode schizo : pouvoir changer de compte entre les réponses pour simuler un dialogue.
- Ajouter la possibilité de rendre un topic « résolu ».
- Pouvoir importer des comptes et des boucles existants sur un worker, à partir d'un fichier JSON ?
- Se débarasser des fichiers statiques et générer le frontend entièrement avec
React (pas possible pour l'instant).
Utilisation du framework Flareact ?
- Pour des raisons financières, car la réservation d'un domaine et l'entretien d'un serveur impliquent des besoins financiers disproportionnés par rapport à l'usage qui en sera fait.
- Pour des raisons techniques, car un site Web, doté d'une seule IP, ne pourrait poster plusieurs boucles en même temps (JVC empêcherait les requêtes d'aboutir).
- Pour des raisons de sécurité, car il est normal que chaque utilisateur ne puisse accéder qu'à ses comptes et n'organiser que les posts de ses comptes. De plus, bien que cela soit peu probable, le code n'est pas à l'abri d'une faille de sécurité.
Par défaut, tous les workers Cloudflare effectuent des requêtes avec la même
IP (2a06:98c0:3600::103
). Ainsi, si deux workers postent une boucle en même
temps, l'un des deux sera ralenti par JVC. C'est pourquoi l'utilisation d'un
proxy est nécessaire pour « masquer » l'IP du client d'origine.
Une boucle ne sera pas postée si aucun compte ne lui est associé ou si tous les
comptes associés sont bannis, n'existent plus ou possèdent un nouveau mot de
passe. Vérifiez donc d'abord si la liste des comptes est valide. Sinon, vérifiez
dans les logs (à la page /logs
) si des erreurs ont été rencontrées. Veillez à
ce que les messages à poster ne soient pas trop longs pour éviter l'erreur
Message invalide de JVC qui sera de toute manière enregistrée dans les logs.
Vous pouvez ouvrir une issue sur ce dépôt pour m'en informer.
Pourquoi avoir passé autant de temps à coder un outil destiné à polluer un forum de puceaux, qui ne te rapportera jamais rien et qui ne sera utilisé par personne au monde ?
Parce que je n'ai pas de vie. :)