2016-07-22 11 views
0

Ich habe ein Login-System, um ein Login-Skript in Python zu experimentieren, hat das Login-System ein Formular-Token, die ich extrahieren von der Seite mit Regex (so kann ich es zusammen mit Benutzername/Passwort nach), das versuche ich zu vermeiden. Also habe ich diesen Beispielcode gemacht, um Sie zu zeigen, und vielleicht können Sie mich ansprechen. Gibt es trotzdem neben diesem einen die session vars zu extrahieren.Session-Cookies und HTTP-Header

Mein PHP-Code:

<?php 
session_start(); 
$_SESION['token'] = md5(time()); 
?> 
<input type="hidden" name="token" value="<?= $_SESION['token']; ?>"> 

Mein 'Login-Skript' (nur der relevante Teil über das Token extracion):

import requests 
import re 

s = requests.Session() 
headers = { 
    "User-agent" : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:7.0.1) Gecko/20100101 Firefox/7.0.1', 
    "Referer": 'https://www.google.com' 
} 
req = s.get('http://migueldvl.com/heya/login/tests.php', headers=headers) 
token = re.compile('<input type="hidden" name="token" value="(.*?)">').search(req.text).group(1) 
print('page: ', req.text) 
print('token: ', token) 

print('\nheaders we sent: ', req.request.headers) 
print('\nheaders server sent back: ', req.headers) # (nothing about the token session here) 

Ihr seid herzlich eingeladen, den Code zu testen (python3) in Dies ist url, es ist nicht leer, wenn Sie Quelle anzeigen

Antwort

1

Sie können Sitzungsvariablen in PHP auf diese Weise nicht definiert abrufen:

Eine Sitzung ist eine Möglichkeit, Informationen (in Variablen) über mehrere Seiten hinweg zu speichern.

Im Gegensatz zu einem Cookie werden die Informationen nicht auf dem Computer des Benutzers gespeichert.

Quelle: http://www.w3schools.com/php/php_sessions.asp

Regex alternative

Alternativ regex zu verwenden, könnten Sie BeautifulSoup (docs), um den Token-Wert zu extrahieren:

from bs4 import BeautifulSoup 

r = s.get('http://migueldvl.com/heya/login/tests.php', headers=headers) 
r.raise_for_status() 

soup = BeautifulSoup(r.content, 'lxml') 

# Simple reference 
token = soup.html.body.input['value'] 

# With more attributes specified 
token = soup.html.body.find('input', attrs={'name':'token', 'type':'hidden'})['value'] 
+0

Danke Kristof . Ich habs. Aber antwere mir das: wenn es nicht in meinem Computer gespeichert ist, wie kommt es, wenn ich meine Cookies/Geschichte aus dem Browser löschen meine Sitzungen auch zerstört werden? – Miguel