2016-08-30 2 views
1

私はPythonリクエストモジュールを使用してWebページにログインしようとしていますが、ログインするWebサイトのPostデータにはuuidタグが含まれています。PythonリクエストでUUIDを取得する方法

pass: ******** 
user: ******** 
uuid: ******** 

私は徹底的に検索しており、ほとんどの要求ドキュメントではどこからでもこの情報を参照しています。これは単にプログラムの能力から外れているのか、それとも私が見落としているものなのでしょうか。

これは私が使用しているコードです。

import requests 

url = 'www.website.com' 

with requests.Session() as c: 
    c.get(url) 
    values = {'pass': 'passsword', 'user': 'username'} 
    response = c.post(url, data=values) 
    print response 
+0

は、なぜあなたは他のデータと、それに沿って通過しませんか? –

+0

リクエストがあってもわからないウェブサイトからuuidを取得することはできません –

+0

これはリクエストとは関係ありません。確かにあなたはあなたがユーザー名とパスワードを取得した同じ場所からuuidを取得します。 –

答えて

2

あなたはソースからそれを解析することができます:あなたは、ログインページのソースを見れば、あなたは、属性言語=「javascript1.1」でスクリプト内で、

In [29]: from bs4 import BeautifulSoup 

In [30]: import re 

In [31]: patt = re.compile("document.cplogin.uuid.value=\"(.*?)\"") 

In [32]: with requests.Session() as s: 
    ....:   page = s.get('http://myneu.neu.edu/cp/home/displaylogin').content 
    ....:   soup = BeautifulSoup(page, "html.parser") 
    ....:   script = soup.find("script", language="javascript1.1") 
    ....:   uuid = patt.search(script.text).group(1) 
    ....:  

In [33]: uuid 
Out[33]: u'ff3e7ddd-0823-4f44-a003-0e68a9321e08' 

uuidを見ることができます:

function login() 
{ 
    setQueryAsCookie(); 
    document.cplogin.user.value=document.userid.user.value; 
    document.cplogin.uuid.value="21fbc26a-3a3d-4802-ba4a-39a40aad881c"; 
    document.cplogin.submit(); 
} 

投稿すると、残りのフォームデータと一緒に投稿するだけです。

ポストのURLもhttps://myneu.neu.edu/cp/home/loginのようですので、:

from bs4 import BeautifulSoup 
import re 

patt = re.compile("document.cplogin.uuid.value=\"(.*?)\"") 
data = {"user":"uname", "pass":"passw"} 
post = "https://myneu.neu.edu/cp/home/login" 

with requests.Session() as s: 
    page = s.get('http://myneu.neu.edu/cp/home/displaylogin') 
    soup = BeautifulSoup(page.content, "html.parser") 
    script = soup.find("script", language="javascript1.1") 
    uuid = patt.search(script.text).group(1) 
    data["uuid"] = uuid 
    resp = s.post(post, data=data) 
+0

それはうまくいきますが、私の問題は別の問題によって今起こっているようです。私はまだ保護されたページから拒否されています。これは私よりも難しいです。 –

+0

投稿から返されるのは何ですか? –

+0

<応答[405]> 制限付きウェブページにアクセスしようとすると、ログインリクエストページにリダイレクトされます –

関連する問題