python中requests模拟登录的三种方式(携带cookie/session进行请求网站)

当需要在Python中爬取一些需要用户登录后才能获取的信息时,就需要模拟登录。requests库是常用的网络请求库之一,它可以轻松模拟登录获取网页内容,下面就是Python中requests模拟登录的三种方式的完整攻略。

1. 使用cookies模拟登录

首先,登录网站需要携带一些数据,如用户名、密码等。成功登录后,网站服务器会返回一个session_id,本地维护的cookie中也会有相关字段。接下来我们就可以使用这个cookie来进行请求了。步骤如下:

  1. 使用requests发送登录请求,携带用户名、密码等参数;
  2. 获取响应信息,并从响应中提取Cookie;
  3. 构建header,将Cookie添加到header中;
  4. 发送请求。

下面是示例代码:

import requests

# 登录请求
login_url = "https://mywebsite.com/login.action"
login_data = {"username": "myusername", "password": "mypassword"}
res = requests.post(login_url, data=login_data)

# 获取Cookie信息
cookie = res.cookies.get_dict()

# 发送带cookie的请求
header = {"cookie": "; ".join([str(x)+"="+str(y) for x, y in cookie.items()])}
response = requests.get("https://mywebsite.com/userinfo.action", headers=header)
print(response.text)

2. 使用session模拟登录

使用session模拟登录,可以完美地模拟浏览器的Cookie操作,并且可以避免反复携带Cookie造成的代码冗长。使用方法如下:

  1. 初始化session对象;
  2. 使用session对象发送登录请求,携带用户名、密码等参数;
  3. 发送后续请求时,使用同一个session对象;
  4. 获取响应信息。

下面是示例代码:

import requests

# 初始化session对象
session = requests.session()

# 发送登录请求
login_url = "https://mywebsite.com/login.action"
login_data = {"username": "myusername", "password": "mypassword"}
res = session.post(login_url, data=login_data)

# 发送带session的请求
response = session.get("https://mywebsite.com/userinfo.action")

print(response.text)

3. 手动构建Cookie模拟登录

手动构建Cookie模拟登录是一种不推荐使用的方式,因为需要手动构建Cookie,容易出现错误。但是,在某些情况下,只能使用这种方式进行模拟登录。步骤如下:

  1. 从浏览器中获取Cookie信息;
  2. 构造header,并携带Cookie信息;
  3. 发送请求。

下面是示例代码:

import requests

header = {
    "Cookie": "JSESSIONID=ABC; userId=DEF; userName=GHI"
}
response = requests.get("https://mywebsite.com/userinfo.action", headers=header)

print(response.text)

以上三种方式都可以用来模拟登录。需要注意的是,获取Cookie的方法一般都是通过浏览器的开发者工具进行获取,具体方法因浏览器而异。另外,为避免触发网站的反爬机制,模拟登录时建议带上User-Agent等信息,伪装成浏览器的请求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python中requests模拟登录的三种方式(携带cookie/session进行请求网站) - Python技术站

(3)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • 虚拟机中centos修改时间的方法

    下面是虚拟机中CentOS修改时间的方法攻略,包括两条示例说明: 一、背景介绍 在虚拟机中运行CentOS系统时,由于硬件时钟与系统时钟不同步,可能会导致时间误差。在这种情况下,我们需要手动修改系统时间来同步硬件时钟。下面是具体做法。 二、修改时间的方法 1. 使用date命令修改时间 使用date命令可以很方便地修改系统时间,命令格式如下: date +%…

    Linux 2023年5月24日
    00
  • 详解CentOS7.2部署KVM虚拟机(图文)

    详解CentOS7.2部署KVM虚拟机(图文) 介绍 本篇文章将详细介绍如何在CentOS7.2上部署KVM虚拟机。KVM是开源的硬件虚拟化解决方案,可以使一台物理服务器承载多个虚拟机。此外,KVM在性能、稳定性方面表现优异,是企业级应用的首选虚拟化技术。 步骤 准备工作 在进行KVM虚拟机部署之前,需要确认以下几件事情已经完成: 确认物理服务器的处理器支持…

    Linux 2023年5月24日
    00
  • MySQL在Linux系统环境的安装和无主机登录配置

           将mysql 安装在单个Linux系统主机,并配置本地或远程(此处可仅单指局域状态下的环境)的无主机登录。谨记的是:操作完mysql 设置时,需以flush privileges进行权限刷新。小编亲测在mysql 数据库变成“砖头”而无法登录时,此法有效! 1.安装MySQL yum install mysql-server 安装mysql-s…

    Linux 2023年4月16日
    00
  • Linux常见问题解决方案汇总

    Linux常见问题解决方案汇总 前言 Linux系统因其安全、稳定、高效等优点,受到越来越多的人使用。然而,由于Linux是一种高度自定义的操作系统,用户在使用过程中常常会遭遇各种各样的问题。本篇文章将会介绍常见的Linux问题及其解决方案。 问题列表 1. 系统启动后无响应 问题描述: 系统启动后,屏幕出现显示器和鼠标指针,但是无法操作。 解决方案: 这种…

    Linux 2023年5月14日
    00
  • SoC的软件开发流程,主要包含一些Linux下的操作命令

    该笔记主要记录SoC的软件开发流程,主要包含一些Linux下的操作命令 1. 编写design file .c .h 2. 编写makefile    可执行文件名,交叉编译环境,compile flags  3. 拷贝文件到SD Card     (1)通过USB mount       1)mount命令格式:         mount [-t vfs…

    Linux 2023年4月11日
    00
  • Linux securetty命令

    Linux 中的 securetty 命令是一个用于控制哪些终端可以登录系统的命令。它可以在 Linux 系统中配置哪些终端可以用于登录系统,以提高系统的安全。在 Linux 中,通常会使用 securetty 命令来配置终端登录权限,以便只有授权的终端可以登录系统。 使用 securetty 命令基本语法如下: securetty [options] 其中…

    Linux 2023年5月11日
    00
  • Linux中 OpenSSH 输入验证错误漏洞(CVE-2019-16905) 修复解决方案

    https://www.o6c.com/java/2020/11/01/1432.html  https://blog.csdn.net/sunmenggmail/article/details/42526117 https://blog.csdn.net/baidu_36209638/article/details/109121765 https://bl…

    Linux 2023年4月11日
    00
  • linux截图快捷键

    linux 截图快捷键 1  Prt ScSysRq    —->全屏截图 2  Shift+Prt ScSysRq   —->自定义截图 3  Alt+Prt ScSysRq   —->活动窗口截图 4  Ctrl+Prt ScSysRq  —->全屏截图,但是截图文件是保存在粘贴板内,需要使用 Ctrl+V才能把截…

    Linux 2023年4月11日
    00
合作推广
合作推广
分享本页
返回顶部