За последние пару лет нам удалось загрузить файл FedACH
с веб-сайта Федеральной резервной системы (frbservices.org) с помощью утилиты wget
. Ссылка ниже предоставила оригинальное решение:
wget, как загрузить файл с веб-страницы, которая предлагает вам нажать «Согласен». условие
получить куки:
wget --post-data="agreementValue=Agree" https://frbservices.org/EPaymentsDirectory/submitAgreement --save-cookies cookie.txt --keep-session-cookies --delete-after
скачать файл:
wget --load-cookies=cookie.txt 'https://frbservices.org/EPaymentsDirectory/FedACHdir.txt?AgreementSessionObject=Agree'
Использование этой wget
команды просто загружает https://www.frbservices.org/EPaymentsDirectory/download.html
, потому что веб-сайт запрашивает заполнение всплывающей формы после нажатия кнопки «Согласен». Есть ли способ просто закрыть форму с помощью wget
?
В IE и Chrome были выполнены следующие шаги для загрузки нужного файла:
Перейти к URL: https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt
Нажмите кнопку «Согласен».
Форма отображается с запросом информации об организации.
Нажмите кнопку Закрыть в форме (я не заполнил никакой информации).
Перейдите по URL: https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt
Файл успешно загружен.
Веб-сайт требует, чтобы у вас были установлены два файла cookie: действительный JSESSIONID
и abaDataCaptureCookie
файл cookie соглашения. Первое можно получить с помощью вашей первой команды wget
, второе нужно добавить вручную.
Получите действительный JSESSIONID
и сохраните его в cookies.txt
:
wget --post-data="agreementValue=Agree" frbservices.org/EPaymentsDirectory/submitAgreement --save-cookies cookies.txt --keep-session-cookies --delete-after
Добавьте строку abaDataCaptureCookie
:
echo -e "frbservices.org\tFALSE\t/EPaymentsDirectory/\tFALSE\t0\tabaDataCaptureCookie\tabaDataCaptureCookie" >>cookies.txt
Загрузите файл:
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