Bonjour, je essaie d’analyser cette entrée pour en extraire les sous-domaines uniques
je veux que la sortie n’affiche que les résultats pour obtenir la sortie
“www.hackerone.com sub1.hackerone.com sub2.hackerone.com sub3.hackerone.com”
Bonjour, je essaie d’analyser cette entrée pour en extraire les sous-domaines uniques
je veux que la sortie n’affiche que les résultats pour obtenir la sortie
“www.hackerone.com sub1.hackerone.com sub2.hackerone.com sub3.hackerone.com”
@0xSphinx le plus simple c’est un nœud Code, extraire le host de chaque URL avec une regex puis dédupliquer avec un Set. mets ça dedans :
const text = $input.first().json.data;
const hosts = [...text.matchAll(/https?:\/\/([^\/\s:"'`]+)/g)].map(m => m[1]);
return [...new Set(hosts)].map(h => ({ json: { subdomain: h } }));
ça récupère ce qui se trouve entre :// et le slash, deux-points, espace ou guillemet suivant, et le Set élimine les doublons. tu vas obtenir www.hackerone.com et sub1/sub2/sub3.hackerone.com (plus le domaine racine hackerone.com). si tu veux seulement ceux avec un préfixe de sous-domaine et pas le domaine apex, ajoute .filter(h => h.split(‘.’).length > 2) avant le map.
Salut @0xSphinx, regex est la bonne approche. Un truc à ajouter, tes données brutes contiennent quelques entrées malformées/poubelle mélangées (par exemple %00%25evil.com, la chaîne de modèle ${e.handle}, et ce texte Twitter/blog ajouté à la fin d’une URL). La regex va essentiellement ignorer ceux-là puisqu’ils ne correspondent pas à un modèle ://host propre, mais ça vaut le coup de revérifier ton tableau de résultats après l’exécution, parce que des chaînes qui ressemblent à evil.com pourraient s’y glisser si le format change légèrement.
Si tu veux être ultra prudent, tu peux ajouter un filtre de validation de domaine basique après la déduplication :
.filter(h => /^[a-z0-9.-]+\.[a-z]{2,}$/i.test(h))
Ça élimine tout ce qui n’est pas une chaîne qui ressemble clairement à un domaine, ce qui est utile quand tu scrapes des données provenant de sources malpropres/non fiables comme celle-ci.