当前位置: 首页 > 面试题库 >

使用请求模块,如何处理请求响应中的“ set-cookie”?

融修平
2023-03-14
问题内容

我试图打开登录页面(GET),获取网络服务器提供的cookie,然后提交用户名和密码对以登录网站(POST)。

看着这个Stackoverflow问题/答案,我认为我会做以下事情:

import requests
import cookielib


URL1 = 'login prompt page'
URL2 = 'login submission URL'
jar = cookielib.CookieJar()

r = requests.get(URL1, cookies=jar)
r2 = requests.post(URL2, cookies=jar, data="username and password data payload")

但是,标头中r有一个set-cookie,但该jar对象中没有改变。实际上,jar链接问题的回答将表明没有内容被填充。

我在代码中通过使用标头字典来解决此问题,并在执行GET或POST之后使用此set-cookie标头处理:

headers['Cookie'] = r.headers['set-cookie']

然后在请求方法中传递标头。这是正确的,还是有更好的方法来应用set-cookie


问题答案:

忽略cookie罐,让我们requests为您处理cookie。改用会话对象,它将保留cookie并将其发送回服务器:

with requests.Session() as s:
    r = s.get(URL1)
    r = s.post(URL2, data="username and password data payload")


 类似资料:
  • 我一直试图向facebook发送HTTP POST请求,但没有成功。我从服务器收到以下响应: HTTP/1.1 400不良请求内容-类型:text/html;charset=utf-8日期:2016年12月10日星期六21:28:17 GMT连接:关闭内容-长度:2959 Facebook |错误 抱歉,出了点问题,我们正在修理,会尽快修好的 我的密码 我做错了什么?

  • 在我的views.py中,我有一个函数,它每次使用不同的响应来调用各种requests.get() 在我的测试类中,我想做这样的事情,但无法计算出确切的方法调用 步骤1: 验证响应包含“a response”、“b response”、“c response” 如何完成步骤1(模拟请求模块)?

  • 我使用的API根据成功/失败有不同的json响应。它们不是HTTP错误,而是json主体中的代码。 我添加了一个,但感觉我只是把事情放在一起,忽略了问题。这是一种可接受的或“pythonic”的方式来处理类似的不同响应吗?另外,如果存在状态,我是否正确地使用来跳过该行?

  • 前言 Networkclient的poll函数: 其实是不断去查询请求是否超时 对 因为长期没有收到请求,设置状态为disconnect,然后希望重新建立连接

  • 似乎有很多不同的方法可以做到这一点,但我试图只使用sinon,sinon-test,chai/mocha,axios,httpmock模块。我无法成功模拟使用axios进行的GET调用。我希望能够模拟来自axios调用的响应,这样单元测试实际上就不必发出外部API请求。 我尝试过通过创建沙箱来建立一个基本的单元测试,并使用sinon stub来建立一个GET调用并指定预期的响应。我不熟悉JavaS

  • 我正在使用OkHttpClient向网站的网页url发送请求,并通过以下方法存储它提供的cookie,我仅从stackoverflow获得该方法。 有必要存储cookie,否则网站会将请求重定向到超时页面。 然后,我看到页面的html来检查我是否到达了正确的网址。 现在,我以类似于网址“www.example.com/loginPage”的方式制作另一个请求变量,并尝试查看html,但它将我重定向