python requests response获取不到cookie问题

二次开发hue时, 需要自己开发后台程序做hue的登陆代理, 省去用户自己输入hue用户名密码的过程. 在python用用户名+密码请求请求hue登陆接口时, 预期能拿到cookie(获得cookie后设置response到用户浏览器cookie里), 但发现请求hue登陆接口的response里并没有cookie

排查过程:

1. 用命令curl -v 'http://***'  -H 'Content-Type: application/x-www-form-urlencoded'  --data '***' 可以拿到

2. 对比curl和python requests, 返回status code不一样, curl返回301 python requests返回200

所以是python requests自动重定向了, 且重定向后的返回没有cookie

解决:

requests.post添加参数 allow_redirects=False 禁止自动重定向

response = requests.post("http://***", data=params, headers=headers, allow_redirects=False)

转载于:https://my.oschina.net/u/259383/blog/3045446

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python中的requests库可以通过以下方式获取cookie: 1. 发送请求时,设置参数`cookies`为一个字典,其中包含需要发送的cookie信息。 例如: ``` import requests url = 'http://www.example.com' cookies = {'name': 'value'} response = requests.get(url, cookies=cookies) ``` 2. 发送请求后,通过`response.cookies`属性获取响应中的cookie信息。 例如: ``` import requests url = 'http://www.example.com' response = requests.get(url) cookies = response.cookies ``` 以上两种方式都可以获取cookie信息,具体使用哪种方式取决于具体的需求。 ### 回答2: Pythonrequests库是一种常用的HTTP客户端,它简便易用,可以用来访问Web服务器。在使用requests库时,经常需要获取cookie,以便在后续请求时携带cookie来验证身份、维持会话等功能。 获取cookie的方法主要有两种:一种是使用requests的Session类来发送HTTP请求,这样所有的请求都会共享同一个cookie;另一种是在发送请求时手动添加cookie。 使用Session类获取cookie 使用Session类可以方便的保存服务器返回的cookie,下次请求时自动携带cookie。具体方法如下: import requests # 使用Session类来发送HTTP请求 session = requests.Session() response = session.get('http://www.example.com/login') # 获取服务器返回的cookie cookie = session.cookies.get_dict() # 将cookie存储为字典 print(cookie) 在使用Session类发送请求后,可以通过session.cookies.get_dict()方法获取服务器返回的cookie,返回结果是一个字典类型。这时候可以把cookie存在本地或直接在后续的请求中使用。 手动添加cookie 除了使用Session类来处理cookie外,还可以在每次请求时手动添加cookie。常见的添加cookie的方法是使用requests提供的cookies参数,具体方法如下: import requests # 创建一个字典存储cookie cookie = {'example_cookie': 'value'} # 向服务器发送请求,并携带cookie response = requests.get('http://www.example.com', cookies=cookie) 需要注意的是,cookies参数的值应该是一个字典或CookieJar类型的对象,可以通过Python的http.cookiejar模块来构造。如果需要携带多个cookie,可以在字典中添加多个键值对。 另外,在使用requests库发送POST请求时,如果需要携带cookie,需要使用data参数来传递POST请求的数据,并使用cookies参数来添加cookie,具体方法如下: import requests # 创建一个字典存储cookie cookie = {'example_cookie': 'value'} # POST请求的数据 data = {'key1': 'value1', 'key2': 'value2'} # 向服务器发送POST请求,并携带cookie和数据 response = requests.post('http://www.example.com', data=data, cookies=cookie) 总的来说,使用Pythonrequests库来获取cookie非常简单,无论是使用Session类还是手动添加cookie都非常方便。获取cookie后,可以方便地在后续的请求中使用,确保请求的正确性和安全性。 ### 回答3: Python是一个广泛使用的编程语言,为了让程序能够自动模拟浏览器行为,我们需要学会如何使用Python里的requests获取CookieRequests是用Python语言编写的,Apache2 Licensed,基于Urllib3,为Python编程语言提供了一个简洁而简单的接口。下面,我将为大家讲解Python requests如何获取cookie。 1、首先导入requests库,在Python中使用requests模拟http请求来获取数据库信息,需要使用requests包。 2、通过requests库模拟浏览器在服务端发送请求的过程,相应的应该也自然而然地考虑到它需要发送的一些参数,其中很重要的一个参数是cookie。 3、使用通过requests库获得登录后的cookie信息。 4、最后,使用获取到的cookie进行模拟浏览器行为,例如访问需要登录权限的页面,或者进行其他操作。 代码示例: import requests post_url = xxx #登录页 URL链接地址 cookies_url = yyy #获取 Cookies的 URL链接地址 payload = { 'username': 'yourname', 'password': 'yourpassword', } session = requests.Session() login_res = session.post(post_url, data=payload) #模拟登录 cookies_res = session.get(cookies_url) #获取cookie print(cookies_res.cookies) #将cookie打印出来 #使用获取到的cookie进行模拟操作 response = session.get('http://example.com/sensitive_page') print(response.text) 总之,Python requests获取cookie本质上是通过模拟浏览器行为,向服务器发送http请求,并通过请求头部中的Cookie信息进行身份验证。掌握Python requests获取cookie的方法,将会让我们的程序能够在服务端自动登录和操作,提高自动化程度,减轻工作量,大大提升工作效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值