web-dev-qa-db-fra.com

wget comment télécharger le fichier depuis une page Web qui vous invite à cliquer sur la condition "Accepter"

J'aimerais télécharger un fichier à l'aide de l'utilitaire wget. J'ai suivi les instructions sur " Comment utiliser wget/curl pour télécharger depuis un site sur lequel je suis connecté? " et le processus de téléchargement fonctionne; Cependant, les cookies enregistrés expirent après un certain temps, je ne peux donc pas continuer à télécharger le fichier le jour suivant.

Voici l'URL à partir de laquelle je tente de télécharger un fichier:

https://frbservices.org/EPaymentsDirectory/FedACHdir.txt

La page de téléchargement nécessite que je clique sur le bouton "Accepter" avant de pouvoir procéder au téléchargement.

Est-il possible d'inclure la soumission "Accepter" avec l'utilitaire wget?

Je vous remercie.

3
Adam

Vous pouvez soumettre un formulaire à l'aide de wget, à l'aide de l'option --post-data. Tout d'abord, regardez le formulaire utilisé par la page:

<form name="acceptedForm" id="acceptedForm" action="submitAgreement" method="post">
...
        <button id="agree_terms_use" name="agreementValue" type="submit" value="Agree">Agree</button>  &nbsp; 
        <button id="disagree_terms_use" name="agreementValue" type="submit" value="Do Not Agree">Do Not Agree</button>

Généralement, la valeur de l'attribut action est utilisée pour obtenir l'URL cible, qui devient https://frbservices.org/EPaymentsDirectory/submitAgreement. Les names des éléments de formulaire deviennent les paramètres. Ensuite, vous devez enregistrer les cookies que vous recevez en acceptant le contrat. De this SO post , nous pouvons construire la commande nécessaire:

wget --post-data="agreementValue=Agree" https://frbservices.org/EPaymentsDirectory/submitAgreement --save-cookies cookie.txt --keep-session-cookies --delete-after

Ensuite, nous pouvons utiliser ces cookies pour télécharger le fichier:

wget --load-cookies=cookie.txt 'https://frbservices.org/EPaymentsDirectory/FedACHdir.txt?AgreementSessionObject=Agree'
4
muru