2017-05-09 183 views
1

我想獲取sessionId,所以我可以做其他請求。
所以,我看着在火狐網絡監控(按Ctrl + Shift + Q),看到這一點:使用請求獲取sessionId Python

enter image description here

所以,我想知道我怎麼能在Python 3的要求去做,並試圖像這樣的事情:

import requests 
payload = {'uid' : 'username', 
     'pwd' : 'password'} 

r = requests.get(r'http://192.168.2.114(cgi-bin/wwwugw.cgi', data=payload) 

print r.text 

但我總是得到「Response [400]」。
如果請求是正確的,我應該得到的東西是這樣的:

enter image description here

感謝
亞歷克斯

+0

它應該是'requests.post'。並且必須使用相同的格式傳遞每個項目。意思是,您還必須包含'method','params'部分。也請確保輸入正確的網址。在你的問題中有一個錯字。 – Himal

+0

@Himal所以我確實輸入了方法參數,現在我得到了Errno 133(payload = {'method':'ugw-login', \t'params':{'uid':'gw', \t 'pwd':'GATEWAY'}}) –

+0

您能否更新您的問題以包含您擁有的最新版本的代碼以及您收到的完整錯誤消息? – Himal

回答

0

儘管這不是從你的問題很清楚,但我注意到幾個問題什麼你正在努力完成。

  1. 如果使用會話認證,那麼你想發送的session_id作爲Cookie頭,你不這樣做。

  2. 400響應代碼表示請求不好,不需要認證。你爲什麼要在get請求中發送數據?數據和查詢參數之間有區別。

+0

哦,是的,忘了說我是Python的noob –

+0

是的,我們所有人都犯這樣的錯誤。儘管如此,你需要更好地構建你的問題。 – hspandher

0

只需使用一個會話,這將處理重定向和cookie爲您提供:

import requests 
payload = {'uid' : 'username', 
      'pwd' : 'password'} 

with requests.Session() as session: 
    r = session.post(r'http://192.168.2.114(cgi-bin/wwwugw.cgi', data=payload) 

    print(r.json) 

這樣,你不明確需要得到sessionId,但如果你仍然想,你可以作爲字典訪問返回的JSON

+0

感謝您的答案,以及它不工作,我越來越errno 133.任何其他方式,我可以做到這一點? –

+0

@ Alex.Munoz你可以發佈錯誤嗎? – rhillhouse