迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

在 Python 请求中使用 Cookie

作者:迹忆客 最近更新:2023/06/02 浏览次数:

本篇文章介绍如何使用 requests.get() 借助 Python 中的 cookies 参数获取 cookies,以及如何访问需要登录的特定网页。

此外,我们还将学习使用 requests.Session() 来保持与该页面的连接。


请求库允许从服务器创建和读取 HTTP cookie。 根据 MDN 文档,cookie 是“服务器发送到用户网络浏览器的一小段数据”。

我们可以将 cookie 存储在浏览器中,然后将其发送回服务器。 Cookie 通常用于以下目的之一:

  • 登录会话管理
  • 购物车
  • 用户个性化,或跟踪用户行为

本节演示如何使用 cookie,在下一节中,我们将使用第一个目的(用于登录的会话管理)。

要使用请求库发送和接收 cookie,我们将从导入请求开始。 导入之后,我们将设置一个名为 URL 的变量以将链接作为字符串传递。

我们将使用这个 URL,因为它提供了一个简单的响应主体来查看我们发送到服务器的 cookie 信息。 例如,假设我们要根据用户的位置自定义我们的用户体验。

这样,我们就可以为我们的产品提供运费估算,而无需用户输入地址。 为此,我们将要求了解用户在 cookie 中的位置,如果他们同意,我们会将信息存储在 cookie 中。

为了模仿在这个事件中收到的内容,我们将声明一个名为 CK 的字典,其中的键是位置,值为纽约。

接下来,我们将声明我们的响应对象 response 并使用 requests.get() 方法设置它。 我们将输入我们的 URL 变量作为第一个参数,然后是将设置为等于我们的 CK 字典的 cookies 关键字。

现在请求已设置,我们可以使用 response.text 从响应对象打印文本。 当脚本运行时,我们可以看到我们刚刚发送的 cookie 在响应主体中。

import requests

URL='https://httpbin.org/cookies'
CK={'location':'New York'}
response=requests.get(URL,cookies=CK)
print(response.text)

输出:

{
  "cookies": {
    "location": "New York"
  }
}

要从服务器接收 cookie,我们将使用已在 google 网站上设置的 cookie。


使用 Session() 类在登录后与页面保持连接

使用我们浏览器中的 inspect element 工具,我们可以看到登录请求发送到哪里,并在我们的程序中模拟它。 而session部分让我们保持活跃,访问登录后的所有页面。

在编写我们的代码之前,我们必须做一些事情; 但是,我们需要找到登录 URL 并查看随该 post 请求发送的参数。

我们需要登录凭据,因此我们将在此示例中与您共享登录信息,因为我们使用的是虚拟站点。

我们有一个简单的登录表单,需要用户名和密码; 如果我们使用给定的信息登录,我们将登录并获得一个安全区域。

我们将通过使用检查元素并转到网络选项卡来查看请求和响应。 我们可以看到这里点击登录按钮,弹出了几个请求。

在登录页面之前,您应该检查保留日志,以便我们可以在网络选项卡中看到所有内容。 打开authenticate请求后,我们会得到一些信息,其中一个是post请求。

post 请求是从 Web 浏览器发送到服务器的请求,get 请求是返回的信息以找出正在发布的 URL。

我们将复制发布请求 URL,因为我们将从我们的 python 脚本发送我们的发布请求。 我们可以在有效负载中找到我们的表单数据。

有时您会在 payload 中找到更多信息,因此您必须确保所有参数都与 post 请求一致。

但是,在我们的例子中,我们看到只有用户名和密码。 所以,登录后,我们被引导回到安全页面,这是我们的 get 请求; 通过使用安全响应,我们将复制请求 URL 以在我们的 python 脚本中使用。

在 python 请求中使用 cookies - 输出

现在我们将跳入代码编辑器并开始编写我们的代码,我们需要做的第一件事一如既往地是导入请求,我们需要为 post 请求设置登录 URL,为 get 请求设置安全 URL。

现在我们需要调用 post() 方法来发送用户名和密码并通过服务器进行身份验证。 为此,我们需要使用名为 ACCESS_DATA 的字典发送一些有效负载。

我们将代码封装在 Login_Dummy_web() 中并创建了另一个名为 data.py 的 python 文件。

导入数据文件后,我们在调用函数并返回安全页面的 RESULT.text 时从该文件访问用户名和密码。

让我们尝试使用 get() 方法返回到安全页面; 它会将我们送回登录页面,因为我们未通过身份验证。

import requests
import data

def Login_Dummy_web(username,password):
    LOGIN_URL='https://the-internet.herokuapp.com/authenticate'
    SECURE_URL='https://the-internet.herokuapp.com/secure'

    ACCESS_DATA={
             'username':username,
             'password' :password
    }

    RESULT=requests.post(LOGIN_URL,data=ACCESS_DATA)
    RESULT2=requests.get(SECURE_URL)
    return RESULT2.text

print(Login_Dummy_web(data.username,data.password))

输出:

在 python 请求中使用 cookie - 登录页面

我们已经使用 post() 方法登录,但它仍然拒绝使用发送安全页面,因为我们没有会话。 该会话允许我们为特定网站保留 cookie; 要获得安全页面,我们需要使用 requests.Session()。

使用 with 关键字,我们使用上下文管理器; 上下文管理器很方便,因为它可以让我们保持连接并保持登录状态,只要我们还在。

现在我们必须从名为 ss 的会话变量调用 get()post() 方法,因为现在我们从 Session() 类访问它。

import requests
import data

def Login_Dummy_web(username,password):
    LOGIN_URL='https://the-internet.test.com/authenticate'
    SECURE_URL='https://the-internet.test.com/secure'

    ACCESS_DATA={
             'username':username,
             'password' :password
    }
    with requests.Session() as ss:
        ss.post(LOGIN_URL,data=ACCESS_DATA)
        RESULT=ss.get(SECURE_URL)
    return RESULT.text

print(Login_Dummy_web(data.username,data.password))

现在它说(欢迎来到安全区域),这证明我们已经在那里登录; 使用名为 ss 的 requests.Session() 变量,我们可以获得另一个 URL 内容。

在 python 请求中使用 cookie - 安全页面

data.py文件的代码如下:

username='tomsmith'
password='SuperSecretPassword!'

上一篇:在 Python 中带有参数的请求查询字符串

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Python 中设置请求的最大重试次数

发布时间:2023/06/02 浏览次数:65 分类:Python

本教程描述了为什么我们会收到错误消息,指出超出了最大重试次数,以及我们如何在 Python 中为请求设置 max_retries。 如果服务器上的负载导致此错误,它还会为我们提供提示。

在 Python 中使用requests模块发布表单数据

发布时间:2023/06/02 浏览次数:180 分类:Python

本篇文章介绍了 Python requests 模块,并说明了我们如何使用该模块在 Python 中发布表单数据。使用 requests 模块在 Python 中发布表单数据

在 Python 中使用令牌进行 API 调用

发布时间:2023/06/02 浏览次数:148 分类:Python

在 Python 中进行不带令牌的 API 调用 要启动,我们需要先安装一个 Python 库来处理这个请求; 当我们在 Python 中调用 API 时,我们可以使用令牌来调用

在 Python 中使用请求设置用户代理 User-Agent

发布时间:2023/06/02 浏览次数:175 分类:Python

本文介绍 HTTP 标头用户代理主题以及如何使用 Python 中的请求设置用户代理。 您将了解 HTTP 标头及其在理解用户代理、获取用户代理以及学习使用 Python 中的请求设置用户代理的多种方法方面的

Python 忽略请求中的 SSL 安全证书检查

发布时间:2023/06/02 浏览次数:115 分类:Python

本文将提供多种使用请求禁用安全证书检查的方法。了解 SSL 安全检查背后的原因及其失败的原因 如果程序使用 Python 请求从 SSL 证书已过期的 URL 获取请求,它会引发两个异常。

Python 请求分页

发布时间:2023/06/02 浏览次数:179 分类:Python

在本文中,我们将了解分页以及如何克服 Python 中与分页相关的问题。 读完本文后,我们将能够了解 Python 分页以及如何使用它处理问题。什么是 Python 中的分页

Python 生成器推导

发布时间:2023/06/02 浏览次数:159 分类:Python

在本文中,我们将学习 python 的生成器和生成器推导以及示例。Python 中的生成器:Python 中的生成器是返回可迭代或遍历对象的函数,用于创建一次遍历项目的迭代器。

在 Python 中检查生成器是否为空

发布时间:2023/06/02 浏览次数:139 分类:Python

本文讨论如何在 Python 中检查生成器是否为空。在 Python 中检查生成器是否为空是指检查路径以确保它为空。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便