使用请求获取sessionId Python

问题描述:

我想获取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

尽管这不是从你的问题很清楚,但我注意到几个问题什么你正在努力完成。

  1. 如果使用会话认证,那么你想发送的session_id作为Cookie头,你不这样做。

  2. 400响应代码表示请求不好,不需要认证。你为什么要在get请求中发送数据?数据和查询参数之间有区别。

+0

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

+0

是的,我们所有人都犯这样的错误。尽管如此,你需要更好地构建你的问题。 – hspandher

只需使用一个会话,这将处理重定向和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