2016-07-22 10 views
0

(私は後に、ユーザー名/パスワードを使用して、それに沿って投稿することができます)、それは私が避けようとしていることです。だから、私はこのサンプルコードをあなたに見せてくれました、そしておそらくあなたは私をアンサーすることができます。とにかくこれ以外にも、sessionヴァルスを抽出するのですか?セッションクッキーとHTTPヘッダー

私のPHPコード:

<?php 
session_start(); 
$_SESION['token'] = md5(time()); 
?> 
<input type="hidden" name="token" value="<?= $_SESION['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) 

君たちは、内のコード(のpython3)をテストするために歓迎されていますこのurlは、ソースを表示すると空白ではありません

答えて

1

PHPで定義されたセッション変数をこのように取得することはできません:

セッションは、複数のページにわたって を使用する(変数で)情報を格納する方法です。

クッキーとは異なり、情報がユーザーのコンピュータに保存されていません。

出典:http://www.w3schools.com/php/php_sessions.asp

正規表現の代替代わり

正規表現を使用するには、トークン値を抽出するためにBeautifulSoupdocs)を使用することができます

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

はクリストフありがとう。とった。しかし、私にこのことを伝えてください。もし私のコンピュータに保存されていないのであれば、ブラウザから私のクッキー/履歴を削除すれば、私のセッションも破壊されますか? – Miguel