Plateforme ATS njoyn
11 employeurs connectés via cette plateforme — 1119 offres actives. Module partagé : jobka/connectors/njoyn.py ; un employeur = une sous-classe d'environ 10 lignes.
Description & mécanique
Plateforme Njoyn (CGI).
Les babillards Njoyn servent un HTML rendu côté serveur : //xweb/xweb.asp?clid=&page=joblisting&lang= Le serveur redirige en ajoutant un jeton de session (tbtoken) — il suffit de suivre la redirection. Chaque offre est un (habillage moderne) ou une ligne de tableau (habillage classique) pointant vers
page=jobdetails&jobid=J####-####.⚠ Les domaines *.njoyn.com sont derrière Radware Bot Manager : pour ces tenants, mettre
USE_SCRAPFLY = True(contournement ASP). Depuis la maintenance plateforme du 2026-09-05→07, Radware couvre aussi des domaines personnalisés (ex. emplois.santemontreal.qc.ca depuis le 2026-09-08) ; le fallback de_htmlbascule alors tout le sync sur Scrapfly.
Accès
- Pagination : par numéro de page
- Backend : Scrapfly (anti-bot / rendu JS) via
BaseConnector.scrapfly() - Auth : aucune — API/pages publiques du site carrières.
- Throttle : 1.2 s entre requêtes.
- Budgets (env) :
JOBKA_NJOYN_DETAIL_LIMIT(défaut40)
Tenants connectés
| Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK |
|---|---|---|---|---|---|---|
| Santé Québec — Montréal | 772 | 98 % | 98 % | 1 % | 2026-09-21 17:31 | ✅ |
| CGI | 185 | 0 % | 96 % | 0 % | 2026-09-21 16:47 | ✅ |
| Groupe Bellemare | 30 | 0 % | 0 % | 0 % | 2026-09-21 17:01 | ✅ |
| Institut de recherche du CUSM | 30 | 97 % | 0 % | 0 % | 2026-09-21 16:51 | ✅ |
| Ville de Gatineau | 23 | 100 % | 0 % | 0 % | 2026-09-21 17:41 | ✅ |
| Ville de Terrebonne | 18 | 94 % | 0 % | 0 % | 2026-09-21 17:41 | ✅ |
| Réseau de transport de Longueuil (RTL) | 16 | 31 % | 0 % | 0 % | 2026-09-21 17:31 | ✅ |
| Société de transport de Laval | 15 | 27 % | 0 % | 0 % | 2026-09-21 17:35 | ✅ |
| Groupe Master | 13 | 62 % | 100 % | 0 % | 2026-09-21 17:01 | ✅ |
| Réseau de transport de la Capitale | 12 | 0 % | 0 % | 0 % | 2026-09-21 17:31 | ✅ |
| Ville de Mirabel | 5 | 100 % | 0 % | 0 % | 2026-09-21 17:41 | ✅ |
Licence / conformité
Flux public du site carrières officiel de l'employeur (API JSON de l'ATS ou HTML rendu serveur) — le même contenu que la page carrière affiche publiquement, prévu pour la diffusion des offres, sans authentification. Chaque offre conserve son URL originale et le bouton « Postuler chez l'employeur » renvoie chez l'employeur. Aucune donnée personnelle de candidat n'est collectée. User-Agent identifié JobKaBot/1.0 (+https://www.job-ka.com; contact@spboucher.ai) sur les accès directs ; requêtes throttlées et plafonnées par budgets.
Certains domaines de cette plateforme sont servis derrière un gestionnaire anti-bot : la lecture passe alors par Scrapfly, toujours sur des pages strictement publiques, au même rythme throttlé.
Historique
Mission connecteurs du 2026-08-18 — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct :
fd4bfc8qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ;5a66f48+59 employeurs (sondage massif d'ATS + détection de pages carrières) ;4917d578 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ;f6e7571portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ;744cbfcbadge « Offre directe », stats directes/portails, dépôt direct employeurs ;1604ff9reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel).
Commits touchant jobka/connectors/njoyn.py :
7938ca62026-09-13 [ka6] fix connecteur groupe_bellemare: faux positif de supervision (micro-panne réseau vers api.scrapfly.io) — durcissement du retry de _fetch_listing aux erreurs réseau (njoyn.py) — le statut stale vient d'un unique échec à 04:28 (ConnectTimeout 180 s vers l'API Scrapfly elle-même, seul échec de tout le cycle app : 1105 connecteurs ok), alors que tous les syncs précédents étaient stables à found=34 = médiane exacte ; Scrapfly répond en 0,3 s au moment du diagnostic et le sync rejoué donne found=34 en 8,4 s — connecteur INTACT. Vraie faiblesse corrigée : le retry durci du 2026-09-09 (3 essais, ré-amorçage de session) ne couvrait que les réponses vides/anti-bot ; une requests.ConnectTimeout levée par base.scrapfly() traversait la boucle et avortait le sync au premier essai. _fetch_listing attrape désormais requests.RequestException — même traitement qu'une page vide (nouvelle session Scrapfly = nouveau proxy, backoff 10-20 s), ré-élévation après 3 échecs. Test unitaire ajouté (retry après 2 ConnectTimeout simulés + ré-élévation après 3). Sync rejoué post-patch : found=34, ok. 102 tests pytest verts. pm2 restart job-ka-sync OK, site 200.2e4a54e2026-09-09 [ka6] fix connecteur groupe_bellemare: retry avec ré-amorçage de session Scrapfly dans la plateforme njoyn — échec transitoire du 2026-09-09 12h26 (Scrapfly a renvoyé 0 octet aux 2 essais, bellemare et groupe_master tombés ensemble, repartis seuls au sync suivant) ; le retry unique de _fetch_listing rejouait la MÊME session Scrapfly (proxy collant + cookies), donc le même proxy défaillant ; désormais 3 essais, backoff 10-20 s, session Scrapfly ré-amorcée entre les essais (nouveau proxy) ; syncs rejoués : bellemare 31 offres (médiane 31.0), groupe_master 15 (médiane 14.0)d4ab4912026-09-09 [ka6] fix connecteur sante_montreal: Radware étendu au domaine personnalisé post-maintenance Njoyn — bascule Scrapfly + sessions Scrapfly pour la pagination99104802026-09-07 [ka6] connecteur cgi: détection de l'état transitoire post-maintenance Njoyn (« Invalid request XWP10023-UA ») — la plateforme entière (tous tenants, vérifié même avec un vrai Chromium depuis IP résidentielle) répond 200 avec ce corps de ~41 octets depuis ~11h EDT le 2026-09-07, pendant la fenêtre de maintenance officielle (retour prévu dimanche ~21h); échec immédiat et explicite dans _fetch_listing, sans retry ni 2e crédit Scrapfly, offres conservées (292 actives cgi, 712 sante_montreal, protégées par la garde anti-dérive); rien à réparer côté connecteur — le volume reviendra à la fin de la fenêtre68cad942026-09-06 [ka6] connecteur cgi: maintenance planifiée de la plateforme Njoyn (2026-09-05 ~22h30 EDT, tous les tenants *.njoyn.com ET domaines personnalisés redirigés vers maintenance.njoyn.com/platform-maintenance, page ~29 ko) — détection explicite de la page de maintenance dans _fetch_listing de la plateforme njoyn: échec immédiat sans retry ni crédit Scrapfly gaspillé, message 'plateforme Njoyn en maintenance planifiée' dans sync_log, offres conservées (292 actives cgi); le volume reviendra de lui-même à la fin de la fenêtre (retour prévu type: dimanche ~21h)a2c68232026-09-04 [ka6] fix connecteur groupe_bellemare: casse du chemin Njoyn — Xweb.asp majuscule requis depuis le 2026-09-02 (le minuscule xweb.asp fait échouer Scrapfly ASP en UPSTREAM_WEBSITE_ERROR, 0 octet), _url() de la plateforme njoyn corrigé, 30 offres retrouvées (médiane 30) + tenants *.njoyn.com frères rétablis (stl_laval 17 vérifié)3843ced2026-09-04 Revert "[ka6] connecteur cusm_ir: diagnostic du mur Radware hCaptcha host-wide *.njoyn.com (2026-09-02) — non contournable (Scrapfly/BrightData/Oxylabs/Chromium réel tous bloqués), erreur explicite via _radware_hint, offres en base préservées"c8f84a32026-09-04 [ka6] connecteur cusm_ir: diagnostic du mur Radware hCaptcha host-wide *.njoyn.com (2026-09-02) — non contournable (Scrapfly/BrightData/Oxylabs/Chromium réel tous bloqués), erreur explicite via _radware_hint, offres en base préservées33dba442026-08-26 [ka6] fix connecteur stl_laval: garde-fou njoyn — une page liste vide/anti-bot (Scrapfly en échec renvoie "") ne passe plus pour un babillard à 0 offre; retente une fois puis lève une erreur (njoyn.py)df3faf02026-08-25 Vague E — 3 nouvelles familles ATS (JazzHR, Teamtailor, Zoho Recruit) + 60 connecteurs, ~547 offres QC