Batch - mit wget log in geschütze Dateien downloaden

Hydrogen

Cadet 1st Year
Registriert
Feb. 2018
Beiträge
10
Hey Leute,

und zwar brauche ich für eine Batch Datei hilfe, ich muss jeweils 3 Dateien runterladen und sie danach weiterverarbeiten. Eine datei liegt auf einem FTP server und die anderen beiden sind normalerweise mithilfe eines Log in bereiches auf einer website aufrufbar wo man sie dann per hand runterlädt.

Bei dem FTP server klappt der Download super, ich benutze dafür folgende Zeile :

Code:
"C:\Users\admin\Documents\GnuWin32\bin\wget.exe" -O artikel.csv --user=xxxx --password=xxxxx  ftp://ftp.xxxx.de/artikel.csv

schön und gut mit den Zugangsdaten klappt das auch. wenn ich jetzt aber von einer website den gleichen ablauf vorhabe , kommt nur als meldung ( und zwar in der heruntergeladenen Datei ) :

Code:
<font face='Arial' ><br><br><br><h2>Interner Fehler</h2>Leider ist ein interner Fehler in unserem System aufgetreten!<br><br><i>dienice): 
illegal access 2 (keine Kunden-ID)
in sub: main::_die_kdfiles_load (/var/www/web2/html/cgi-bin/cosmoshop/lib/lshoppages.pm, line 2089)

called by: main::kdfiles_load
</i>Wir bitten um Ihr Verst&auml;ndnis!<br></font>

die zugangsdaten sind natürlich richtig im code eingegeben. Schätze mal das klappt einfach nicht wenn man den FTP Link durch einen normalen ersetzt..

Hat jemand ne idee wie ich das am besten schreibe ?

Gruß
 
Hi,
wenn du den Link tatsächlich nur ersetzt, interpretiert er im 2. Fall ja ebenfalls das FTP-Protokoll.
Paste doch mal das komplette Script und nicht nur die Fehlermeldung.
 
Wenn es sich um Basic Auth handelt dann kannst du mit wget die Logindaten mitschicken. (--user=john --password=snow)
Wenn man sich auf der Webseite ueber ein Formular einloggen muss (wie z.B. hier auf CB, wovon ich ausgehe) dann musst du erst den Loginprozess mit wget ausfuehren und danach den Download anfordern. Siehe: https://stackoverflow.com/a/1432161
 
also hab das jetzt prinzipiell so übernommen :

Code:
del C:\Users\admin\Documents\import\artikel.csv /s /q
cd C:\Users\admin\Documents\import

"C:\Users\admin\Documents\import\GnuWin32\bin\wget.exe"
     --save-cookies cookies.txt \
     --keep-session-cookies \
     --post-data 'kd_mail=xxxxx&kd_pwd=xxxxx' \
     --delete-after \
     https://shop.sw-motech.com/cgi-bin/cosmoshop/lshop.cgi?action=kundendaten&ssl=1&wkid=151808756215090&ls=de&nocache=1518090302-22155

"C:\Users\admin\Documents\import\GnuWin32\bin\wget.exe" 
     --load-cookies cookies.txt \
     http://shop.sw-motech.com/nocache/de/Infos/B2B+Downloads,nc1518087648.htm/PLDEH1Preisliste.csv


habe die username & passwort id´s mal durch die von der Seite ersetzt also zu kd_mail & kd_pwd , hoffe das ist richtig so.

könnte mir halt vorstellen das ich den falschen link eingefügt habe um zum login bereich zu kommen, aber ich bekomme nur diesen angezeigt, nach ein bisschen rumgeklicke höchstens noch den :
Code:
https://shop.sw-motech.com/cgi-bin/cosmoshop/lshop.cgi

wenn ich den aber einzeln aufrufe kommt da nur müll bei raus ...

hab die Website mal drinne gelassen das man sieht um welches login Feld es mir geht..

oder bin ich grade einfach nur blöd und hab da was falsch übernommen ?

EDIT: okay im artikel steht das auch mit dem ersetzen der ID und PW im durch quellcode, also habe ich das wohl immerhin richtig gemacht
Ergänzung ()

Okay könnte es daran liegen das die ID hier eine E-mail ist ?

habe jetzt mal probiert das "@" der email durch "%40" zu ersetzen durch den von r15ch13 geposteten Artikel.
laut
Code:
https://en.wikipedia.org/wiki/Percent-encoding
wäre das dann ja so richtig, kenne mich allerdings da nicht so aus.

in der Email kommt nur ein "@" (logischerweise) und ein "-" vor , letzteres müsste nach dem Wiki artikel ja aber nicht verändert werden wenn ich richtig gelesen habe :D


Oder ist das alles irrelevant ?
 
Zuletzt bearbeitet: (neue informationen)
Sorry fuer die spaete Antwort:

Du sendest nicht alle Daten mit die zum Login gebraucht werden (einfach im Browser F12 druecken und im Netzwerk-Tab schauen was beim Login passiert)

Das @ in der E-Mail sollte kein Problem sein. Einfach die folgenden Parameter im POST mitsenden.
Code:
action	kd_check_login
kd_mail	asd@asd.de
kd_pwd	qwe
ls	de
ssl	1
wkid	151810933526549
x	0
y	0

Mit x und y wird die Position der Maus ueber dem Loginbutton mitgesendet (keine Ahnung ob das irgendeine Art Schutz gegen Bots sein soll :freaky: Nimm Zufallszahlen)

Code:
wget \
    --save-cookies cookies.txt \
    --keep-session-cookies \
    --post-data 'action=kd_check_login&kd_mail=xxx&kd_pwd=xxx&ls=de&ssl=1&wkid=151810933526549&x=0&y=0' \
    --delete-after \
    https://shop.sw-motech.com/cgi-bin/cosmoshop/lshop.cgi

Interessant ist das man die Seite durch weglassen oder setzen von ssl=0 dazu zwingen kann alles ueber HTTP zu laden. :freak:
Deshalb ist die Seite auch kaputt wenn du nur https://shop.sw-motech.com/cgi-bin/cosmoshop/lshop.cgi laedst.
 
Okay danke, wenn ich da jetzt was draus lernen will gucke ich mir also immer erst den quellcode genauer an oder wie ? ( Keine ahnung wie das über F12 funktioniert um ehrlich zu sein ).

habe allerdings das problem das nichts davon klappt :freak:
Der Rückmeldung nach zu urteilen hab ich irgendwas wohl ganz grundsätzlich falsch gemacht

Code:
C:\Users\Justin\Desktop>del C:\Users\admin\Documents\autoimport\artikel.csv /s /q
C:\Users\admin\Documents\autoimport\artikel.csv konnte nicht gefunden werden

C:\Users\admin\Desktop>cd C:\Users\admin\Documents\autoimport

C:\Users\admin\Documents\autoimport>"C:\Users\admin\Documents\autoimport\GnuWin32\bin\wget.exe"
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = C:\Users\admin\Documents\autoimport\GnuWin32/etc/wgetrc
C:\Users\admin\Documents\autoimport\GnuWin32\bin\wget: missing URL
Usage: C:\Users\admin\Documents\autoimport\GnuWin32\bin\wget [OPTION]... [URL]...

Try `C:\Users\admin\Documents\autoimport\GnuWin32\bin\wget --help' for more options.

C:\Users\admin\Documents\autoimport>--save-cookies cookies.txt \
Der Befehl "--save-cookies" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

C:\Users\admin\Documents\autoimport>--keep-session-cookies \
Der Befehl "--keep-session-cookies" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

C:\Users\admin\Documents\autoimport>--post-data 'action=kd_check_login  & kd_mail=xxxx  & kd_pwd=xxxx  & ls=de  & ssl=1  & wkid=151810933526549  & x=0  & y=0' \
Der Befehl "--post-data" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Der Befehl "kd_mail" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Der Befehl "kd_pwd" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Der Befehl "ls" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Der Befehl "ssl" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Der Befehl "wkid" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Der Befehl "x" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Der Befehl "y" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

C:\Users\admin\Documents\autoimport>--delete-after \
Der Befehl "--delete-after" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

C:\Users\admin\Documents\autoimport>https://shop.sw-motech.com/cgi-bin/cosmoshop/lshop.cgi
Der Befehl "https:" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

C:\Users\admin\Documents\autoimport>"C:\Users\admin\Documents\autoimport\GnuWin32\bin\wget.exe"
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = C:\Users\admin\Documents\autoimport\GnuWin32/etc/wgetrc
C:\Users\admin\Documents\autoimport\GnuWin32\bin\wget: missing URL
Usage: C:\Users\admin\Documents\autoimport\GnuWin32\bin\wget [OPTION]... [URL]...

Try `C:\Users\admin\Documents\autoimport\GnuWin32\bin\wget --help' for more options.

C:\Users\admin\Documents\autoimport>--load-cookies cookies.txt \
Der Befehl "--load-cookies" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

C:\Users\admin\Documents\autoimport>https://shop.sw-motech.com/nocache/de/Infos/B2B+Downloads,nc1518092636.htm/PLDEH1Preisliste.csv
Der Befehl "https:" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

ich schätze mal mir fehlt was ganz grundlegendes ? irgend ein Paket oder sowas ? ich rufe das wget ja nur über einen Ordner auf hab da ja nichts installiert oder so.

ich probiere in der zwischenzeit mal das richtig zu installieren vielleicht hilft das ja schon :freaky:
 
Nene das mit wget passt schon soweit. Ich habe die wget-Parameter zur bessere Lesbarkeit untereinander geschrieben. Diese haettest du aneinander reihen muessen. :)

Sollte dann so aussehen:
Code:
wget.exe --save-cookies cookies.txt --keep-session-cookies --post-data "action=kd_check_login&kd_mail=xxx&kd_pwd=xxx&ls=de&ssl=1&wkid=151810933526549&x=0&y=0" --delete-after https://shop.sw-motech.com/cgi-bin/cosmoshop/lshop.cgi

Code:
wget.exe --load-cookies cookies.txt https://shop.sw-motech.com/nocache/de/Infos/B2B+Downloads,nc1518092636.htm/PLDEH1Preisliste.csv
 
Oh.. ^^ Danke.

Es geht auf jeden fall deutlich weiter, aber so ungerne ich das sage stimmt irgendwas immer noch nicht

habe noch --no-check-certificate hinzugefügt weil er beim ersten schritt meckert, sieht so aus als ob der jetzt klappt. Beim Download hakt es jedoch noch, muss ich da auch noch irgendwelche infos mitschicken ? hab im link geguckt und das mit denen versucht aber das scheint auch nicht zu helfen.

Code:
C:\Users\admin\Documents\autoimport>"C:\Users\admin\Documents\autoimport\GnuWin32\bin\wget.exe" --save-cookies cookies.txt --keep-session-cookies --post-data "action=kd_check_login&kd_mail=xxxx&kd_pwd=xxxx&ls=de&ssl=1&wkid=151810933526549&x=32&y=12" --no-check-certificate --delete-after https://shop.sw-motech.com/cgi-bin/cosmoshop/lshop.cgi
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = C:\Users\admin\Documents\autoimport\GnuWin32/etc/wgetrc
--2018-02-10 13:20:02--  https://shop.sw-motech.com/cgi-bin/cosmoshop/lshop.cgi
Resolving shop.sw-motech.com... 80.190.141.140
Connecting to shop.sw-motech.com|80.190.141.140|:443... connected.
WARNING: cannot verify shop.sw-motech.com's certificate, issued by `/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA':
  Unable to locally verify the issuer's authority.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `lshop.cgi'

    [ <=>                                                                           ] 55.355      --.-K/s   in 0,05s

2018-02-10 13:20:04 (1003 KB/s) - `lshop.cgi' saved [55355]

Removing lshop.cgi.

C:\Users\admin\Documents\autoimport>"C:\Users\admin\Documents\autoimport\GnuWin32\bin\wget.exe" --load-cookies cookies.txt --post-data "action=inline&rubnum=&artnum=B2B+Downloads&id=83&gesamt_zeilen=83&wkid=15182237845352&ls=de" http://shop.sw-motech.com/cgi-bin/cosmoshop/lshop.cgi/PLDEH1Preisliste.csv
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = C:\Users\admin\Documents\autoimport\GnuWin32/etc/wgetrc
--2018-02-10 13:20:04--  http://shop.sw-motech.com/cgi-bin/cosmoshop/lshop.cgi/PLDEH1Preisliste.csv
Resolving shop.sw-motech.com... 80.190.141.140
Connecting to shop.sw-motech.com|80.190.141.140|:80... connected.
HTTP request sent, awaiting response... 500 Internal Server Error
2018-02-10 13:20:04 ERROR 500: Internal Server Error.

:freak:
Ergänzung ()

bin zumindest jetzt schon mal ein bisschen weiter... hab gelesen man soll den Link einfach mit
Code:
'
Zeichen umklammern.. .

Naja aufjedenfall bekomme ich jetzt nur noch die rückmeldung Unsupported Scheme.
Code:
C:\Users\admin\Documents\autoimport>"C:\Users\admin\Documents\autoimport\GnuWin32\bin\wget.exe" --header="Accept: text/html" --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0" --no-check-certificate --load-cookies cookies.txt --post-data "action=inline&rubnum=&artnum=B2B+Downloads&id=83&wkid=15182237845352&ls=de&ssl=1" 'http://shop.sw-motech.com/nocache/de/Infos/B2B+Downloads,nc1518266402.htm/PLDEH1Preisliste.csv'
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = C:\Users\admin\Documents\autoimport\GnuWin32/etc/wgetrc
'http://shop.sw-motech.com/nocache/de/Infos/B2B+Downloads,nc1518266402.htm/PLDEH1Preisliste.csv': Unsupported scheme.

Nicht wundern ich hab ein bisschen mit den parametern rumgespielt :stacheln:. Oder taucht das unsupported scheme jetzt auf grade wegen den - ' - Zeichen
Ergänzung ()

Okay sorry ich will hier nicht spammen aber hab die Zeichen mal wieder weg gemacht und er lädt was runter... nur bin ich jetzt wieder bei einer Datei mit dem Inhalt
Code:
<font face='Arial' ><br><br><br><h2>Interner Fehler</h2>Leider ist ein interner Fehler in unserem System aufgetreten!<br><br><i>dienice): 
illegal access 1 (keine Kunden-ID)
in sub: main::kdfiles (/var/www/web2/html/cgi-bin/cosmoshop/lib/lshoppages.pm, line 22)

called by: main::get_page

called by: main::show_page
</i>Wir bitten um Ihr Verst&auml;ndnis!<br></font>

ich werde noch kirre :pcangry:

wenn ich den link von :
Code:
 http://shop.sw-motech.com/lshop,kdfiles_load,15182642406605,de,1518266406-2154,,B2B+Downloads,83,,.htm?file=PLDEH1Preisliste.csv
( Die Kopierte Link adresse des Downloads ) zu
Code:
http://shop.sw-motech.com/nocache/de/Infos/B2B+Downloads,nc1518266402.htm/PLDEH1Preisliste.csv
( Die Downloadbereich adresse + /filename ) ändere bekomme ich nur ein 404 Error. Weiß nicht wo die die Datei versteckt haben ^^
 
Zuletzt bearbeitet:
Hm, da weiss ich jetzt auch nicht weiter (hab gerade mal einen Account erstellt, aber als Endkunde komm ich nicht an die Daten :/)

Unsupported scheme wird an den ' liegen. Nimm mal "

In der Fehlermeldung steht illegal access 1 (keine Kunden-ID), d.h. da fehlt irgendwas oder das Cookie klappt nicht.

Aber versuch im Netzwerk-Tab in den Developer-Tools (F12 druecken) herauszufinden was genau beim klick auf Download gesendet wird.
Filter nach html und klick dich durch die Webanfragen. Auf der rechten Seite steht dann was gesendet/empfangen wurde.
 
Klicke mich da grade durch kann aber nichts wirklich finden bzw verstehe das mit der Netzwerkanalyse nicht genau, ich gucke mal ob ich dazu was finde.

hab mir die cookies.txt die abgespeichert werden mal angeguckt und die sind leer, bzw haben als einzigen inhalt
Code:
# HTTP cookie file.
# Generated by Wget on 2018-02-11 13:46:19.
# Edit at your own risk.

Hab probiert die Cookies mal aus Chrome zu exportieren und die einfach abzufragen beim Download. Das klappt aber auch nicht, letzte Hoffnung ist dann wohl was aus der Netzwerkanalyse wird.

Auf jeden fall schon mal ein großes Dankeschön bis hierhin :cheerlead:
 
Hab jetzt herausgefunden das die Seite kein Session Cookie setzt wenn man den Login direkt anspricht.
Also muss man erst einmal die Startseite aufrufen ...

Ich hab es mal mit curl versucht und damit klappt es. wget speichert die session irgendwie nicht richtig ...

Code:
# Session Cookie erstellen und speichern
curl "http://shop.sw-motech.com/" -c cookies.txt

# Login ausfuehren (ganz wichtig -b anstatt -c verwenden)
curl --data "action=kd_check_login&kd_mail=sw-motech@fyii.de&kd_pwd=sw-motech&ssl=1" "https://shop.sw-motech.com/cgi-bin/cosmoshop/lshop.cgi" -b cookies.txt

# Nur zum nachschauen ob oben "logout" steht
curl "http://shop.sw-motech.com/" -b cookies.txt -o test.html

# Einen deiner Download Links ausprobieren
curl "dein download link" -b cookies.txt -o Preisliste.csv

curl download fuer Windows: https://bintray.com/artifact/download/vszakats/generic/curl-7.58.0-win64-mingw.7z
 
Eeeeendlich , es klappt :daumen: Danke ...

So sehr ich mich auch freue, ich muss das ganze auch noch für
Code:
https://pwonline.de

machen.. da wurde ich ziemlich schnell wieder auf den boden der tatsachen zurückgeholt, klappt natürlich nicht auf Anhieb.

gucke gleich mal ob ich das irgendwie übernehmen kann, aber mit curl lädt er einfach immer eine Datei mit dem Namen "start" runter, obwohl laut Script die heruntergeladene Datei einen anderen namen bekommen sollte :o .

Hab jetzt noch
Code:
form_key=YXU228eoKHOmTDjR

eingefügt und den rest entfernt bzw id und email durch die entsprechenden geänderten Namen ersetzt

BTW. die Datei "Start" hat keine endung, wenn ich sie aber mit Notepad++ öffne ist es praktisch eine HTML datei die mir sagt ich sei nicht eingeloggt bzw habe kein JavaScript aktiviert ... :freaky:
Ergänzung ()

Okay hab es jetzt hinbekommen, in chrome war das ein bisschen verwirrend.. mit Firefox klappt das aber deutlich besser. Hab die abfrage angeguckt und dann die cUrl kopiert jeweils für den Login und für den Download .

Wenn ich das ganze per hand in die CMD eingebe klappt es, sobald man das dann als bat. abspeichert meckert er und spuckt aus :
Code:
curl: (3) Host name 'keep-alive -o artikel.csv' contains bad letter

zur info der rest darum sieht in etwa so aus
Code:
-b cookies.txt -H "Connection: keep-alive" -o artikel.csv

liegt also eigentlich nicht am format o.ä :confused_alt:

lasse ich das keep-alive weg lädt er ganz stumpf gar nichts runter .. ?

Es klappt doch wenn ich das per hand eingebe ich verstehe es nicht :freak:
 
Zuletzt bearbeitet:
Code:
"C:\Users\admin\Desktop\curl-7.58.0-win64-mingw\bin\curl.exe" "https://pwonline.de/customer/account/loginPost/" -H "Host: pwonline.de" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" -H "Accept-Language: de,en-US;q=0.7,en;q=0.3" --compressed -H "Referer: https://pwonline.de/customer/account/login" -H "Content-Type: application/x-www-form-urlencoded" -H "Cookie: frontend=if2vfcc8rnqnnuc0odeb2haa73; frontend_cid=UFNnJOahg16kwlJg; __utma=111855237.513323264.1518436228.1518436228.1518440016.2; __utmz=111855237.1518436228.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmb=111855237.18.10.1518440016; __utmc=111855237; __utmt=1" -H "Connection: keep-alive" -H "Upgrade-Insecure-Requests: 1" --data "form_key=tfQqoqYVQ91A09T2&login"%"5Busername"%"5D=xxxxxxx&login"%"5Bpassword"%"5D=xxxxxxx&send=" -c cookies.txt


"C:\Users\admin\Desktop\curl-7.58.0-win64-mingw\bin\curl.exe" -O "https://pwonline.de/downloadfile/download/file/name/Artikeldaten|2018_artikelexport_utf8_html.csv" -H "Host: pwonline.de" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" -H "Accept-Language: de,en-US;q=0.7,en;q=0.3" --compressed -H "Referer: https://pwonline.de/downloadarea?dir=Artikeldaten"%"2F" -b cookies.txt -H "Connection: keep-alive" -o artikel.csv
pause


Da sind jetzt noch im login die cookies mit eingefügt, glaube aber die sind jetzt nicht so wichtig.
 
Der --data Parameter sieht ein wenig zerpflueckt aus. Da muessen [ und ] stehen.
Code:
--data "form_key=tfQqoqYVQ91A09T2&login[username]=xxxxxxx&login[password]=xxxxxxx&send="

Problematisch ist auch der form_key, muss eigentlich erst abgefragt, zwischengespeichert und dann beim wieder Login mitgesendet werden.
 
Zuletzt bearbeitet:
muss sich der form_key echt jedes mal ändern ?. Das mit den [ & ] Symbolen hab ich abgeändert aber es heißt doch letzten endes das gleiche oder ?

Hab auch mal den form key zwischendurch manuell erneuert aber das hilft auch nichts, selbst wenn er was runterlädt ist die datei leer :s . Bin nur so verwirrt weil es ja per hand eingabe klappt
Ergänzung ()

okay es klappt, hab nochmall alle veränderten Zeichen wieder normal gemacht ( %5B zu [ etc.) und alle ' durch " ersetzt, dann hat es geklappt.. frage mich zwar wieso weil ich das eigentlich probiert habe aber egal :D

Auf jeden Fall danke für die Hilfe. Falls jemanden das interessiert kann ich gerne noch mal den Code hier rein posten der letzten endes dann geklappt hat :schluck:

Gruß
 
Zurück
Oben