Vraag Hoe een bestand downloaden van een website die een pop-upformulier vraagt?


Sinds enkele jaren kunnen we een downloaden FedACH bestand van de Federal Reserve-website (frbservices.org) met behulp van de wget nut. De onderstaande link leverde de oorspronkelijke oplossing op:

wget hoe je een bestand download van een webpagina die je vraagt ​​om op de voorwaarde "Akkoord" te klikken

  1. haal de cookies:

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

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

Dit gebruiken wget commando's alleen downloads https://www.frbservices.org/EPaymentsDirectory/download.html omdat de website vraagt ​​om een ​​pop-upformulier in te vullen nadat u op de knop 'Akkoord' hebt geklikt. Is er een manier om het formulier gewoon te sluiten met wget?

In IE en Chrome zijn de onderstaande stappen uitgevoerd om het gewenste bestand te downloaden:

  1. Ga naar URL: https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt

  2. Klik op de knop Accepteren.

  3. Formulier wordt weergegeven waarin organisatie-informatie wordt gevraagd.

  4. Klik op de knop Sluiten op formulier (ik heb geen informatie ingevuld).

  5. Ga naar URL: https://www.frbservices.org/EPaymentsDirectory/FedACHdir.txt

  6. Bestandsdownloads met succes.


7
2017-12-13 16:35


oorsprong




antwoorden:


De website vereist dat u twee cookies hebt ingesteld: een geldige JSESSIONID en de abaDataCaptureCookie overeenkomstkoekje genoemd. De eerste kan met je eerste worden verkregen wget opdracht, de tweede moet handmatig worden toegevoegd.

  1. Vraag een geldig JSESSIONID en sla het op cookies.txt:

    wget --post-data="agreementValue=Agree" frbservices.org/EPaymentsDirectory/submitAgreement --save-cookies cookies.txt --keep-session-cookies --delete-after
    
  2. Voeg de toe abaDataCaptureCookie lijn:

    echo -e "frbservices.org\tFALSE\t/EPaymentsDirectory/\tFALSE\t0\tabaDataCaptureCookie\tabaDataCaptureCookie" >>cookies.txt
    
  3. Download het bestand:

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

Ik weet niet zeker hoe lang de eerste cookie geldig blijft, maar ik neem aan dat je de lijst niet meerdere keren per uur zult downloaden, dus het lijkt mij een goed idee om elke keer een nieuwe te krijgen. Dat is tenslotte de failsafe-aanpak.

Script-versie van de bovenstaande stappen, met behulp van een tijdelijke bestand als het cookie-bestand:

#!/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

Als u dit script uitvoert, wordt de huidige opgeslagen FedACHdir.txt naar de huidige map zonder een a te verlaten cookies.txt rondslingeren, als er al een bestand met deze naam is wget voegt een nummer toe en slaat het op als b.v. FedACHdir.txt.1.

Bij het oplossen van dit probleem heb ik hier geweldige hulp gevonden: Formaat van cookies bij het gebruik van wget? · U & L


6
2017-12-13 21:05



Bijna vergeten hoe leuk het is om zulke dingen op te lossen. - dessert
Bedankt Dessert. De stappen die u heeft gegeven, hebben mijn vraag beantwoord. - GMP
@GMP Als dit antwoord uw probleem heeft opgelost, neem dan even de tijd en accepteer het door op het vinkje links te klikken. Dat zal de vraag markeren als beantwoord en is de manier waarop dankbaarheid wordt uitgedrukt op de Stack Exchange-sites. - dessert