Ces dernières années, nous avons pu télécharger un fichier FedACH
à partir du site Web de la Réserve fédérale (frbservices.org) à l'aide de l'utilitaire wget
. Le lien ci-dessous fournit la solution originale:
obtenir les cookies:
wget --post-data="agreementValue=Agree" https://frbservices.org/EPaymentsDirectory/submitAgreement --save-cookies cookie.txt --keep-session-cookies --delete-after
télécharger le fichier:
wget --load-cookies=cookie.txt 'https://frbservices.org/EPaymentsDirectory/FedACHdir.txt?AgreementSessionObject=Agree'
L'utilisation de cette commande wget
ne fait que télécharger https://www.frbservices.org/EPaymentsDirectory/download.html
parce que le site Web demande qu'un formulaire contextuel soit rempli après avoir cliqué sur le bouton "Accepter" maintenant. Existe-t-il un moyen de simplement fermer le formulaire en utilisant wget
?
Dans IE et Chrome, les étapes ci-dessous ont été exécutées pour télécharger le fichier souhaité:
Aller à l'URL: https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt
Cliquez sur le bouton Accepter.
Le formulaire est affiché pour demander des informations sur l'organisation.
Cliquez sur le bouton Fermer du formulaire (je n'ai pas renseigné d'informations).
Aller à l'URL: https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt
Les téléchargements de fichiers ont réussi.
Le site Web requiert deux cookies: un JSESSIONID
valide et le abaDataCaptureCookie
appelé cookie d’accord. La première peut être obtenue avec votre première commande wget
, la seconde doit être ajoutée manuellement.
Obtenez un JSESSIONID
valide et enregistrez-le dans cookies.txt
:
wget --post-data="agreementValue=Agree" frbservices.org/EPaymentsDirectory/submitAgreement --save-cookies cookies.txt --keep-session-cookies --delete-after
Ajoutez la ligne abaDataCaptureCookie
:
echo -e "frbservices.org\tFALSE\t/EPaymentsDirectory/\tFALSE\t0\tabaDataCaptureCookie\tabaDataCaptureCookie" >>cookies.txt
Télécharger le fichier:
wget --load-cookies cookies.txt frbservices.org/EPaymentsDirectory/FedACHdir.txt
Je ne sais pas trop combien de temps le premier cookie reste valide, mais je suppose que vous ne téléchargerez pas la liste plusieurs fois par heure, donc en obtenir un nouveau à chaque exécution me semble acceptable - c'est l'approche de sécurité finalement appliquée.
Version de script des étapes ci-dessus, utilisant un fichier temporaire comme fichier cookie:
#!/bin/bash
cookiefile=$(mktemp)
wget --post-data="agreementValue=Agree" frbservices.org/EPaymentsDirectory/submitAgreement --save-cookies $cookiefile --keep-session-cookies --delete-after
echo -e "frbservices.org\tFALSE\t/EPaymentsDirectory/\tFALSE\t0\tabaDataCaptureCookie\tabaDataCaptureCookie" >>$cookiefile
wget --load-cookies $cookiefile frbservices.org/EPaymentsDirectory/FedACHdir.txt
L'exécution de ce script enregistre le FedACHdir.txt
actuel dans le répertoire en cours sans laisser un cookies.txt
traîner, s'il existe déjà un fichier portant ce nom wget
ajoute un numéro et le sauvegarde, par exemple. FedACHdir.txt.1
.
Pour résoudre ce problème, j’ai trouvé une aide précieuse ici: Format des cookies lors de l’utilisation de wget? · U & L