Como baixar um arquivo de um site que solicita um formulário pop-up?

7

Nos últimos dois anos, conseguimos baixar um arquivo FedACH do site do Federal Reserve (frbservices.org) usando o utilitário wget . O link abaixo forneceu a solução original:

wget como baixar o arquivo de uma página da web que solicita que você clique na condição" Concordo "

  1. pegue os cookies:

    wget --post-data="agreementValue=Agree" https://frbservices.org/EPaymentsDirectory/submitAgreement --save-cookies cookie.txt --keep-session-cookies --delete-after
    
  2. faça o download do arquivo:

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

Usar este comando wget apenas faz o download de https://www.frbservices.org/EPaymentsDirectory/download.html porque o site está solicitando que um formulário pop-up seja preenchido depois de clicar no botão "Aceitar" agora. Existe alguma maneira de fechar o formulário usando wget ?

No IE e no Chrome, os passos abaixo foram executados para baixar o arquivo desejado:

  1. Acesse o URL: link

  2. Clique no botão Concordo.

  3. O formulário é exibido solicitando informações da organização.

  4. Clique no botão Fechar no formulário (não preenchai nenhuma informação).

  5. Acesse o URL: link

  6. Downloads de arquivos com êxito.

por GMP 13.12.2017 / 17:35

1 resposta

6

O site exige que você tenha dois cookies definidos: um cookie% de contrato JSESSIONID e o abaDataCaptureCookie válidos. O primeiro pode ser obtido com o primeiro comando wget , o segundo precisa ser adicionado manualmente.

  1. Obtenha um JSESSIONID válido e salve-o em cookies.txt :

    wget --post-data="agreementValue=Agree" frbservices.org/EPaymentsDirectory/submitAgreement --save-cookies cookies.txt --keep-session-cookies --delete-after
    
  2. Adicione a linha abaDataCaptureCookie :

    echo -e "frbservices.org\tFALSE\t/EPaymentsDirectory/\tFALSE\t0\tabaDataCaptureCookie\tabaDataCaptureCookie" >>cookies.txt
    
  3. Faça o download do arquivo:

    wget --load-cookies cookies.txt frbservices.org/EPaymentsDirectory/FedACHdir.txt
    

Não tenho certeza de quanto tempo o primeiro cookie permanece válido, mas presumo que você não baixará a lista várias vezes por hora, portanto, obter um novo em cada execução parece OK para mim - essa é a abordagem de segurança após tudo.

Versão de script das etapas acima, usando um arquivo temporário como o arquivo de 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

A execução desse script salvará o FedACHdir.txt atual no diretório atual sem deixar um cookies.txt por aí, se já houver um arquivo com este nome wget adiciona um número e o salva como, por exemplo, FedACHdir.txt.1 .

Ao resolver este problema, encontrei grande ajuda aqui: Formato dos cookies ao usar wget · U & L

    
por dessert 13.12.2017 / 22:05