Bash bestimmte Datei downloaden

Eremit_

Lt. Junior Grade
Registriert
Okt. 2007
Beiträge
259
Hallo,

ich habe früher immer jeden morgen automatisch mit einem Linux-Server meine Zeitung runtergeladen. Diese ging dann per Linux-Shell-Skript und E-Mail zur Arbeit, um diese dann in der Zeitung zu lesen.
Jetzt hat die Zeitung aber ihr System geändert. Anstatt der Datei kommt nun immer eine Webseite wo man sich einloggen will. Leider bekomme ich das nicht per wget hin.

Hier der Codeteil:
Code:
<tr>

                  <td class="loginText">&nbsp;</td>

                  <td width="150" class="loginText">

                    <span class="bodyclass">

                    Benutzername /<br>E-Mailadresse :

                    </span>



                  </td>

                  <td class="loginAction"><input size="40" type="text" name="_username" maxlength="150" value="">

<br>Ihre@emailadresse.de</td>

                  <td>&nbsp;</td>

                </tr>

                <tr>

                  <td class="loginText">&nbsp;</td>

                  <td class="loginText">

                    <span class="bodyclass">

                    Passwort

                    </span>


                  </td>

                  <td class="loginAction"><input size="20" type="password" name="_userpass" maxlength="20"></td>

                  <td>&nbsp;</td>

                </tr>

                <tr>

                  <td class="loginText">&nbsp;</td>

                  <td class="loginText">&nbsp;</td>

                  <td class="loginAction">

                    <input type="image" src="/fm/14/button_login_out.gif">

                    </td>

                  <td>&nbsp;</td>

                </tr>

                <tr>

                  <td colspan="4"><hr></td>                 

                </tr>


Wie gesagt. Ihr besitze ein Passwort und einen Benutzernamen aber irgendwie kann ich den nicht mit wget einsetzen.
Liegt das an dem PHP-Aufruf?
Wenn ich mich auf der Seite von Hand einlogge kann ich die Datei wie gewohnt aufrufen und ich bekomme eine PDF-Datei. Hier der Link:
http://www.----------.de/sixcms/detail.php/0/zeitung_detail?ausgabe=1


Vielleicht könnt ihr mir helfen.

Vielen Dank im voraus.

Eremit_
 
Hallo,

danke für die schnelle Antwort.

Ich verstehe diese aber nicht so richtig.
Wie meinst du das?

Gruß

Eremit_
 
Du must die Logindaten die gefordert werden in deinen Requests mitschicken damit du den eigentlichen Content siehst. Hab keine Ahnung wie/ob das mit wget geht, aber mit CURL müsste es auf jeden Fall funktionieren.
 
Hallo,

wget müßte es eigenltich können. Folgendes steht im Handbuch:

Code:
This example shows how to log to a server using POST and then proceed to download the desired pages, presumably only accessible to authorized users:

          # Log in to the server.  This can be done only once.
          wget --save-cookies cookies.txt \
               --post-data 'user=foo&password=bar' \
               http://server.com/auth.php
          
          # Now grab the page or pages we care about.
          wget --load-cookies cookies.txt \
               -p http://server.com/interesting/article.php

If the server is using session cookies to track user authentication, the above will not work because ‘--save-cookies’ will not save them (and neither will browsers) and the cookies.txt file will be empty. In that case use ‘--keep-session-cookies’ along with ‘--save-cookies’ to force saving of session cookies.

Ich bin mir aber nicht sicher welche Seite ich nun genau anfordern muß.
Wenn ich beides mal die php-Seite mit dem eigentlichen Download anfordere, funktioniert es nicht.

Eremit_
 
Du wirst vermutlich 2 Requests brauchen: Erstmal den Login selber und dann anschließend der eigentliche Download. Also ähnlich wie es auch in dem von dir zitierten Beispiel steht.
Um dir anzusehen was du genau tun mjuss würde ich dir das Firefoxplugin LiveHTTPHeaders empfehlen. Dort kannst du sehen was du genau im Post sendest und welche URL der Browser dazu aufruft.
 
Danke für die Hilfe.
Es geht nun etwas vorwärts.

Hier der erste Einloggschnippsel:
Host: xxxxx.de
Keep-Alive: 115
Connection: keep-alive
Cookie: SixAuth=1fe261c1813ec97ffbdf96d11922cb2a
Content-Type: application/x-www-form-urlencoded
Content-Length: 80
epSession=login&_username=Name&_userpass=Passwort

Hier dann der PDF-Aufruf:
Code:
GET /sixcms/detail.php/0/av_detail?ausgabe=1 HTTP/1.1
Keep-Alive: 115
Referer: http://www.xxxxx.de/startseite
Cookie: SixAuth=1fe261c1813ec97ffbdf96d11922cb2a
HTTP/1.1 200 OK
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Keep-Alive: timeout=1, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/pdf
.....
Referer: http://www.xxxxx.de/sixcms/detail.php/0/detail?ausgabe=1
Cookie: SixAuth=1fe261c1813ec97ffbdf96d11922cb2a

Mein Skript macht nun folgendes:
Code:
wget --save-cookies szcookies.txt --keep-session-cookies --post-data "epSession=login&_username=Name&_userpass=Passwort" http://xxxxx.de
wget --load-cookies szcookies.txt http://www.xxxxx.de/sixcms/detail.php/0/detail?ausgabe=1 -o test.pdf

In der Datei szcookies.txt steht nun folgendes:
Code:
xxxxx.de    FALSE   /       FALSE   0       SixAuth 1fe261c1813ec97ffbdf96d11922cb2a

Das Cookie scheint also angekommen zu sein.
Es kommt aber nur eine verkappte html-Seite raus in der der Starbildschirm verpackt ist. Eingelogt habe ich mich dann scheinbar wohl. Der eigentliche PDF-Aufruf scheint aber fehlzuschlagen.

Könnt ihr helfen?

Gruß

Eremitos
 
Jo.

Das Programm funktioniert nun einwandfrei.

:daumen:

Danke.

Eremitos
 
Hallo Eremitos,

ich bin gerade auf diesen Beitrag mit deinem Problem gestoßen und habe gelesen, dass du dein Problem lösen konntest.

Ich habe zwar nicht exakt das gleiche Problem, dennoch versuche ich verzweifelt mit wget über einen Login, Dateien runterzuladen und ich bekomme das mit dem Login einfach nicht hin.

Ich bin jetzt schon seit heute morgen auf der Suche nach einer Lösung und gehe schon nuts.

Was ich nicht ganz verstanden habe, ist die Sache mit deinem Einloggschnippsel. Es wäre super, wenn du oder auch ein anderer hier mir hierbei helfen könnte.

Kann du hier mal deine komplatte Lösung einstellen? Das wäre wirklich super.

Ganz liebe Grüße

Quantumfire
 
Hallo,

die Zeile sieht bei mir momentan so aus:
wget --save-cookies szcookies.txt --keep-session-cookies -q --post-data "epSession=login&_username=HierderName&_userpass=HierdasPasswort&x=42&y=1" http://www.example.org

Ich glaube aber nicht, daß dieser Aufruf so bei dir funktioniert.
Habe damals mit dem Live-http-header oder Firebug gearbeitet.
Einfach per Hand einloggen und die Befehle aufzeichnen.

Gruß

Eremit_
 
Hallo Eremit_

vielen Dank für deine schnelle Antwort.

Ja, du hast recht. Aber ich konnte das Problem dennoch lösen.

Ganz liebe Grüße

Quantumfire
 
Zurück
Oben