Как скачать файл с сайта, который запрашивает всплывающую форму?

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

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

  1. получить куки:

    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. Перейти к URL: https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt

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

  3. Форма отображается с запросом информации об организации.

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

  5. Перейдите по URL: https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt

  6. Файл успешно загружен.

7
задан 14 December 2017 в 00:39

1 ответ

Веб-сайт требует, чтобы у вас были установлены два файла 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, но я полагаю, что вы этого не сделаете загружайте список несколько раз в час, поэтому получение нового при каждом запуске кажется мне приемлемым - в конце концов, это отказоустойчивый подход.

Версия сценария вышеописанных шагов с использованием временного файла в качестве файла 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. [+1125]

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

6
ответ дан 14 December 2017 в 00:39

Другие вопросы по тегам:

Похожие вопросы: