IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Suppression d'une chaine de caractères après des guillemets [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Par défaut Suppression d'une chaine de caractères après des guillemets
    Bonjour à tous,

    Je me résous à poster ici après avoir cherché pendant des heures une solution à mon problème.

    J'ai un fichier .txt contenant un code HTML. Ce code, je l'obtiens en réalisant le curl d'une adresse (curl réalisé via mon script)
    A un moment, dans cette page, j'ai une ligne comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="u4jfSjSKSjb0QDUgmX4K0oKMYvojeRyYS0oMenwkC5qrklI5Et38WapRWk9JENiQQkMja4iGiCIhKQfk2Fl3KOJJQaiwaMoCpfisr9kemmse3SvgNhqVvTyaVquhSPWjt26qNpdS51GP/1JAzg+nXcwnpYoqLjDbByqI61JKh15eNsE9sE0Z2yQK5YLbt5gJKM52nJAaHVkILO9dAkxKscT7xS1QIefSBcpubkTIKpysADyQKOh5LWRBkGZ5vicWZajetVcLJkC+dqS37owhojlWnXE/BG2FvdcbRtCqzZP1n4nTzCcXRG9yFXirAuwjMCSxNVcgGD1vFMssqdfk5pyEiGgaHgZ6FGr+UeNq+IUFrsF1I3zMYdf38JdmfEweLKNQw4FXUFKSWkXpFpu+50Hmf1VNtyjANZG/l3owBBNGV0RxiUATEDf2UnXkMULQpPa6S+uuWe3p9K7dMO3RLFR4Nn5SqNsK3l5Ki2Nqd2eIksBy74LjemzNEx1NS/ex6oRN+CycnOTE+jiSHhx04TEjl/HBNgHCmXmTSNYsE/9T9d6XVdkYv9UJV+Py90AZP8K0A0DuJSOvd8iUvPEqqvks1Ms9K1NkkVXrilEswxpP8F4Idk7e7iHMrjOwLfRMI2WKpSBTIWpkoqsKaTB3TVrHGqajadEBZUQEM3740VQzZJZ8dYHxVj/C3qBfcBckSiwIuevwkqCM4en6vTgEEKLudp4+e0iLGFvvCnKxK9ajJxlJxILfcaDWdRGkIrkWwGzgoHkqvf4ZyJjDPxXM7sHFpXjgsmavXZUs3mFdximLkTDNHEIV4xybvkAPPPm06Z5R7Q==" />
    A chaque curl réalisé, la partie en gras change, ce qui me complique (légèrement) la vie pour ce que je dois faire ensuite.
    Je dois donc, une fois mon fichier .txt créé, supprimer la partie en gras (tout en conservant le reste du code HTML, évidemment), de manière à me retrouver avec uniquement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="" />
    Mais comme dit plus haut, étant donné que cette "value" change à chaque curl, je ne peux pas faire de recherche sur une chaîne de caractères bien précise. J'ai donc du mal à trouver une solution...

    Partant du principe que $HTML est mon fichier contenant l'intégralité du code HTML, je m'étais dit que je pouvais faire une recherche de '<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value=" ' (que j'ai stocké dans une variable $ChaineARechercher) puis dire de supprimer ce qui suivait (tout en conservant le " fermant) avec un substring, ou un trim, ou quelque chose dans le genre, mais j'avoue avoir beaucoup de mal à construire ma commande

    Une âme charitable pourrait-elle m'aider ?
    Je vous remercie par avance.

  2. #2
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Bonjour à toi,

    J'utiliserais une petite regex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $chaineHTML = $chaineHTML -Replace '(id="__VIEWSTATE" value=").*(" \/>)', '$1$2'

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Par défaut
    Alors, j'avais pensé à utiliser une(des ?) expression(s) régulière(s), mais c'est clairement quelque chose que je ne maîtrise pas DU TOUT

    Du coup, par rapport à ce que tu m'as passé (et que je n'ai pas encore testé), $chaineHTML est censé contenir quoi ?
    "$1$2" signifie quoi ?

    Merci beaucoup pour ta réponse, en tout cas

  4. #4
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    $ChaineHTML est le contenu de ton fichier texte, c'est une chaîne qui doit contenir le contenu de la page sur laquelle tu veux virer le viewstate

    Dans ma regex en fait je capture ce qui est avant et ce qui est après ce que tu veux enlever.
    Donc $1 et $2 sont en fait ce qui à été capturé lors de l'application de la regex, en l’occurrence ici ça sera toujours :
    $1 => id="__VIEWSTATE" value="
    $2 => " />

    On aurais pu l’écrire directement mais comme la regex l'as capturé autant le faire directement avec le résultat

  5. #5
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Autre possibilité une regex qui permet d'identifier une chaîne base64 (ce qu'est viewstate )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $chaineHTML = $chaineHTML -Replace '(?:[A-Za-z0-9+\/]{4})+(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)', ''

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Par défaut
    Arf... bon, je me permets de repointer le bout de mon nez par ici, car la solution que tu m'as proposée ne fonctionne pas

    En gros, voila ce que j'ai comme code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl http://blablabla.com -Outfile $destination -Credential $credential #destination contient l'intégralité du code HTML de http://blablabla.com
    Ensuite, j'ai essayé les deux commandes que tu m'a filé, à savoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $destination = $destination -replace '(?:[A-Za-z0-9+\/]{4})+(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)', ''
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $destination = $destination -replace '(<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value=").*(" \/>)', '$1$2'
    Et aucune des deux n'a fonctionné, j'ai toujours mon input, ma viewstate et sa fameuse value à rallonge
    Du coup, moi pas comprendre...

  7. #7
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Heu.....
    As tu moyen de mettre un exemple de contenu de $destination ici ?

    Que je puisse faire le test avec un contenu réel ?

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Par défaut
    Voila un extrait de mon HTML, avec la fameuse value qui me prend la tête
    Je pense que ça devrait suffire avec ça.
    Fichiers attachés Fichiers attachés

  9. #9
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    En effet ça suffit et ça me confirme que mes deux codes fonctionnent

    Ton $destination n'est pas le contenu de la page !
    Mais le chemin du fichier vers lequel tu la sauvegarde.

    Il te faut charger le contenu de ce fichier dans une variable
    Avec get-content

    Ou alors tu te passe de -Out-File tu récupère le retour de curl dans une variable et tu utilise le $mavar.Content et tu lui applique un de mes deux bouts de codes

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 5
    Par défaut
    S'il y avait un smiley qui se cache, je crois que je l'utiliserai...
    Effectivement, ton code fonctionne !

    Merci beaucoup beaucoup beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/03/2008, 08h46
  2. Suppression d'une chaine de caractère
    Par Tintou dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/09/2007, 10h17
  3. problème d'insértion et de suppression dans une chaine de caractère.
    Par othmane126 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 19/08/2006, 19h54
  4. Réponses: 4
    Dernier message: 12/03/2006, 20h47
  5. Réponses: 2
    Dernier message: 06/12/2002, 07h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo