Как загрузить файл с веб-сайта, который запрашивает всплывающее окно?

7

За последние пару лет мы смогли загрузить файл FedACH с веб-сайта Федерального резерва (frbservices.org) с помощью утилиты wget . Ниже приведена ссылка ниже:

wget как загрузить файл с веб-страницы, в которой вам предлагается щелкнуть по условию" Согласен "

  1. получить файлы cookie:

    wget --post-data="agreementValue=Agree" https://frbservices.org/EPaymentsDirectory/submitAgreement --save-cookies cookie.txt --keep-session-cookies --delete-after
    
  2. скачать файл:

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

Использование этих команд wget просто загружает https://www.frbservices.org/EPaymentsDirectory/download.html , потому что веб-сайт запрашивает заполнение всплывающей формы после нажатия кнопки "Согласен". Есть ли способ закрыть форму, используя wget ?

В IE и Chrome были выполнены следующие шаги для загрузки нужного файла:

  1. Перейдите по ссылке: Ссылка

  2. Нажмите кнопку "Согласен".

  3. Отображается форма, запрашивающая информацию о организации.

  4. Нажмите кнопку "Закрыть" в форме (я не заполнил никакой информации).

  5. Перейдите по ссылке: Ссылка

  6. Загрузка файлов успешно.

задан GMP 13.12.2017 в 16:35
источник

1 ответ

6

На веб-сайте требуется, чтобы у вас было два файла cookie: действительный JSESSIONID и abaDataCaptureCookie , называемый соглашением cookie. Первый может быть получен с помощью вашей первой команды wget , второй нужно добавить вручную.

  1. Получите действительный JSESSIONID и сохраните его в cookies.txt :

    wget --post-data="agreementValue=Agree" frbservices.org/EPaymentsDirectory/submitAgreement --save-cookies cookies.txt --keep-session-cookies --delete-after
    
  2. Добавьте строку abaDataCaptureCookie :

    echo -e "frbservices.org\tFALSE\t/EPaymentsDirectory/\tFALSE\t0\tabaDataCaptureCookie\tabaDataCaptureCookie" >>cookies.txt
    
  3. Загрузите файл:

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

Я не совсем уверен, как долго первый cookie останется действительным, но я предполагаю, что вы не будете загружать список несколько раз в час, поэтому получение нового на каждом прогоне кажется мне хорошим - это безотказный подход после все.

Сценарий, описанный выше, с использованием файла temp в качестве файла 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

Запуск этого скрипта сохранит текущий FedACHdir.txt в текущем каталоге, не оставляя cookies.txt , лежащего вокруг, если уже есть файл с этим именем. wget добавляет число и сохраняет его, например. FedACHdir.txt.1 .

При решении этой проблемы я нашел большую помощь здесь: Формат файлов cookie при использовании Wget? · U & amp; L

    
ответ дан dessert 13.12.2017 в 21:05