Ich muss wöchentlich ein Backup von unseren CRM-Daten durchführen. Als CRM-Software setzen wir Salesforce (Weblösung) ein. Das Backup wird automatisch erstellt, nur muss ich dann diese ganzen Daten (mehrere Dateien zu > 100 MB) manuell herunterladen. Das erfordert jeweils ein Login, ausserdem wird dann meine Internetleitung während der Arbeitszeit voll ausgelastet. Sowas könnte man meiner Meinung nach auch automatisiert von einem Server erledigen lassen.
Nun möchte ich das ganze automatisieren, vorzugsweise in Python, Java oder Perl.
Zunächst habe ich mal die Seite mit dem Login-Fenster geöffnet, diese sieht etwa so aus:
Code: Alles auswählen
<form id='login_form' name='login' method='POST' onSubmit='handleLogin(); action='https://emea.salesforce.com/'
<div class='inputbox'>
<label for='username'>Benutzername</label><br />
<span><input class='txtbox' type='text' id='username' name='username' value="" /></span>
</div><!-- inputbox -->
<div class='inputbox inputbox_password'>
<label for='password'>Kennwort</label><br />
<span><input class='txtbox' type='password' id='password' name="pw" onKeyPress="checkCaps(event)"/></span>
</div><!-- inputbox -->
...
Ich müsste somit irgendwie einen HTTPS-Request auf https://emea.salesforce.com/ absetzen und dazu die Parameter "username" und "pw" mitgeben. Mit Python habe ich das mal (sehr naiv) so versucht:
Code: Alles auswählen
import http.client
con = http.client.HTTPSConnection('emea.salesforce.com')
con.connect()
con.request('POST', 'https://emea.salesforce.com?username=[ich]&pw=[geheim])
res = con.getresponse()
data = res.read()
print(data)
So einfach scheint es also nicht zu klappen. Ich nehme an, dass ich die POST-Angaben (username und pw) wohl irgendwie verschlüsselt, statt als URL-Parameter übergeben muss.
Hat irgend jemand ein Ansatz, wie man das bewerkstelligen könnte? Wenn es per Browser funktioniert, sollte das doch irgendwie auch programmatisch funktionieren. Ich habe auch schon versucht, den Netzwerkverkehr mitzusniffen, dabei sehe ich natürlich nur irgendwelche kryptischen Request-Bodies (da verschlüsseltes HTTPS?).