Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 04:04

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Python requests Login

Discussion on Python requests Login within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
Benjihz's Avatar
 
elite*gold: 100
Join Date: Feb 2012
Posts: 2,341
Received Thanks: 207
Python requests Login

Hallo,
Versuche mich derzeit in Python und bin gerade, der Übung wegen, dabei ein Skript zu schreiben, mit dem man seinen Zalando Acc verwalten/auslesen kann.
Allerdings hänge ich schon am LogIn des ganzen. Den Request mache ich über requests. Ich glaube das Problem ist, dass der Cookie einfach nicht übergeben wird. Immer wenn ich nach dem LogIn über POST auf das Benutzerkonto zugreifen will(GET), bin ich nicht eingeloggt. Auch wenn ich die Seite direkt nach dem LogIn abfrage, bin ich nicht eingeloggt.

Code:
import requests
with requests.Session() as c:
    url = 'https://www.zalando.de/login/'
    USERNAME = "***"
    PASSWORD = "***"
    #login_data = dict(email = USERNAME, password = PASSWORD, Referer = "https://www.zalando.de/login/")
    payload = {'email': '***', 'password': '***', 'Referer' : 'https://www.zalando.de/login/'}
    get = c.get(url = url)
    post = c.post(url = get.url, params=payload)
    #print(post.text)
    
    

    page = c.get("https://www.zalando.de/benutzerkonto/", params=payload, cookies=c.cookies)
    print (page.text)

Mir ist aufgefallen, dass wenn ich per post.url die URL der POST-Abfrage abfrage, "www.zalando.de" rauskommt und NICHT "www.zalando.de/login". Wieso? Wieso leitet er wohl auf auf zalando.de?

MfG
Benjihz is offline  
Old 03/16/2016, 01:32   #2
 
alpines's Avatar
 
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
Du sendest nicht genug Daten, schau dir das hier mal an
Code:
$hSession = _WinHttpOpen("Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36")
$hConnect = _WinHttpConnect($hSession, "www.zalando.de", 443)

Local $sHTML = _WinHttpSimpleSSLRequest($hConnect, "GET", "")
Local $aSrcPageRegEx = StringRegExp($sHTML, "_sourcePage"" value=""(.+?)"" \/>", 3)
Local $aXTKRegEx = StringRegExp($sHTML, "name=""_xtk"" value=""(.+?)""\/>", 3)
Local $a__fpRegEx = StringRegExp($sHTML, "__fp"" value=""(.+?)"" \/>", 3)

Local $sData = "email=" & StringReplace($aUser[0], "@", "%40") & _
	 "&password=" & $aUser[1] & _
	 "&sourceId=account" & _
	 "&softLogin=true" & _
	 "&login=" & _
	 "&_sourcePage=" & $aSrcPageRegEx[1] & _
	 "&_xtk=" & $aXTKRegEx[0] & _
	 "&__fp=" & StringReplace($a__fpRegEx, "=", "%3D")

$sHTML = _WinHttpSimpleSSLRequest($hConnect, "POST", "login", Default, $sData)
If StringInStr($sHTML, "Abmelden") Then
alpines is offline  
Thanks
2 Users
Old 03/16/2016, 03:23   #3
 
MrDami123's Avatar
 
elite*gold: 56
Join Date: Oct 2010
Posts: 3,409
Received Thanks: 1,219
Man hab ich mir ne Weile lang an Logins die Zähne ausgebissen. :P

Jetzt wo ich weiß wie die ganze Suppe funktioniert, kann ich dir das gerne schnell erklären.

Headers:
Dein Browser sendet standardmäßig spezifische Headers mit jeder Anfrage mit. In deinem Browsereinstellungen oder mit Addons kannst du diese ändern.
Zum Beispiel verwende ich ein Addon um meinen User-Agent zu verschleiern.

Der Server ließt die Infos im Header und reagiert entsprechend darauf.
Beispielsweise hat paypal.com meine Anfrage blockiert mit der Aussage "Deine Browserversion ist zu alt und enthält Sicherheitslücken.", weil mein User-Agent-Verschleierer paypal.com gesagt hat ich benutze Chrome Version 28.

Wenn du Anfragen mittels Software baust, musst du ggf. benötige Headers setzen, damit der Server deine Anfrage akzeptiert. Sehr viele Server ignorieren Anfragen die nicht von Browsern stammen.

Parameter und Formulardaten:
In 'requests' gibt es einen Unterschied zwischen Parametern und Formulardaten. Bei einer POST Anfrage verwendet man 'data=' statt 'params='.
Code:
>>> r = requests.post('http://httpbin.org/post', data = {'key':'value'})

>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get('http://httpbin.org/get', params=payload)
Cookies:
Wenn du 'requests.Session()' verwendest, werden Cookies automatisch gespeichert und verwendet.

Sitzungsvariablen:
Wenn du eine neue Sitzung startest ('request.Session'), werden in der Regel serverseitig neue Variablen spezifisch für diese Sitzung erstellt, darunter fallen auch einige Cookies.
Diese Sitzungsvariablen befinden sich auch in Formularen. Sie dienen unter anderem der Sicherheit.

Wie geht man jetzt am Besten vor um den Login nachzustellen?
  1. Mittels Browser einloggen und Anfrage analysieren
  2. Daten aus Anfrage im Skript einbauen
  3. Sitzungsvariablen ermitteln und einbauen
  4. POST Anfrage absenden und Erfolg ermitteln

Browser Anfrage:
Hier ein Skript mit Kommentaren:
MrDami123 is offline  
Thanks
2 Users
Reply


Similar Threads Similar Threads
[Python]Hilfe Login
05/24/2015 - Metin2 Private Server - 1 Replies
Huhu liebe Community, Heute habe ich mal eine Frage, oft antworte ich hier auf Fragen :P Ich bin derzeit ein sehr großer Anfänger in Photoshop, habe mich trotzdem mal dran gesetzt ein Loginbild zu erstellen schlicht und einfach um zu schauen ob es funktioniert ^^, ich hab auch an den .sub,s rumgebastelt und auch versucht das ganze einzufügen, soweit so gut bekomme ich das Image rein als .dds oder wie ich es haben möchte, es ist aber kein Button mehr anklickbar etc. ^^. Ich bin schon...
Login İnterface (Python) - KF-Works
03/30/2014 - Metin2 PServer Guides & Strategies - 13 Replies
# Closed - - KF-Works.Tk
Python Login Design Hilfe
02/01/2014 - Metin2 Private Server - 1 Replies
Guten Tag, Kann mir jemand bei der Button Anpassung helfen ? http://i.epvpimg.com/cTcbf.jpg
New login interface - python help
07/07/2013 - Metin2 Private Server - 6 Replies
Hi , sorry for my english ! ------------------------------------------------- ----------------------- I found on the internet a cool login interface , I adapted it to metin2 ... but i don't know python :( Can someone help me with python ? He/She can take the interface , but he/she can't public it on internet ! please ... just don't public it ! #Screen deteled
[Python] Das Fenster nur im Login?
05/19/2013 - Metin2 Private Server - 9 Replies
Hallo Community, Ich wollte mit dem Gui Editor von KaMeR1337 meine Intrologin so bearbeiten das bei der Channel auswahl links und rechts neue fenster sind. Das ist mir auch gelungen, aber nun habe ich ingame diese fenster auch :O Seht selbst:



All times are GMT +1. The time now is 04:04.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.