Python爬虫:Session、Cookie、JWT

当你在Python中进行网络爬虫时,需要处理会话(Session)、Cookie和JWT(JSON Web Token)时,以下是更详细的介绍和示例:

Session(会话):

会话用于维护用户的状态和跟踪他们的活动,通常在登录和跨多个页面请求之间非常有用。Python中使用requests库来创建和管理会话:

import requests# 创建一个会话对象
session = requests.Session()# 在会话中发送GET请求
response = session.get('https://example.com')# 在会话中保持登录状态
login_data = {'username': 'your_username', 'password': 'your_password'}
session.post('https://example.com/login', data=login_data)# 使用同一会话发送后续请求
response = session.get('https://example.com/dashboard')

使用会话,你可以跨多个请求共享Cookie和其他会话数据,以便保持登录状态。

Cookie:

Cookie是一种用于在客户端和服务器之间传递数据的机制。在爬虫中,你可以发送包含Cookie的HTTP请求以模拟已登录的用户。首先,你需要获取登录后的Cookie:

import requests# 发送登录请求并获取Cookie
login_data = {'username': 'your_username', 'password': 'your_password'}
response = requests.post('https://example.com/login', data=login_data)# 获取响应中的Cookie
cookies = response.cookies# 使用获取的Cookie发送请求
response = requests.get('https://example.com/dashboard', cookies=cookies)

在此示例中,我们首先发送登录请求,然后从响应中提取Cookie,并将其包含在后续请求中。

JWT(JSON Web Token):

JWT是一种用于身份验证和授权的令牌,通常包含在HTTP请求的头部中。要在Python中使用JWT进行身份验证,你需要获取有效的令牌,并将其包含在请求头中:

import requests# 获取JWT令牌
jwt_token = 'your_jwt_token'# 创建请求头,包含JWT令牌
headers = {'Authorization': f'Bearer {jwt_token}'}# 发送包含JWT令牌的请求
response = requests.get('https://example.com/protected_resource', headers=headers)

JWT令牌通常包括在Authorization请求头中,前缀为"Bearer"。

代码案例

from urllib.parse import urljoin
from selenium import webdriver
from selenium.webdriver.common.by import By
import requests
import timeBASE_URL = 'https://login2.scrape.center/'
LOGIN_URL = urljoin(BASE_URL, '/login')
INDEX_URL = urljoin(BASE_URL, '/page/1')
USERNAME = 'admin'
PASSWORD = 'admin'browser = webdriver.Chrome()
browser.get(BASE_URL)
browser.find_element(By.CSS_SELECTOR, 'input[name="username"]').send_keys(USERNAME)
browser.find_element(By.CSS_SELECTOR, 'input[name="password"]').send_keys(PASSWORD)
browser.find_element(By.CSS_SELECTOR, 'input[type="submit"]').click()
time.sleep(10)# get cookies from selenium
cookies = browser.get_cookies()
print('Cookies', cookies)
browser.close()# set cookies to requests
session = requests.Session()
for cookie in cookies:session.cookies.set(cookie['name'], cookie['value'])response_index = session.get(INDEX_URL)
print('Response Status', response_index.status_code)
print('Response URL', response_index.url)

请注意,使用爬虫技术时,务必遵守目标网站的规定和政策。不当使用爬虫可能导致法律问题,因此请确保你的爬虫活动合法,并尊重网站的Robots.txt文件和使用条款。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/141570.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Mac配置iTerm样式终端

一、MacOs系统 MacOs中终端使用iTerm2 1. 配置oh-my-zsh oh my zsh 的地址: https//github.com/ohmyzsh/ohmyzsh 插件存放位置:~/.oh-my-zsh/plugins 下载常用的插件 git clone http://github.com/zsh-users/zsh-syntax-highlighting.git 修改配…

STC15F104W控制3个74HC595芯片输出数码管显示

一、74HC595脚位图及说明 管脚说明: 14脚:DS(SER),串行数据输入引脚 13脚:OE,输出使能控制脚,它是低电才使能输出,所以接GND 12脚:RCK(STCP&…

基于SpringBoot的可以做毕设或者课设的实时聊天系统(仿微信)

技术栈 前后端分离前端使用: Vue Element后端使用: SpringBoot Mysql8.0 Mybatis WebSocket 功能 登录和注册页 登录 和 注册 修改个人信息页 修改个人信息 消息列表页 展示最近半年的聊天信息,删除聊天记录 搜索好友和群页 搜索JJ号来找到 群/好友 好友信息详情页…

【app篇】写个简单的BLE调试app,练练手,同时为后续调试ESP32 BLE做个支持

忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-09-25 ❤️❤️ 本篇更新记录 2023-09-25 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝&#x1f64…

前端VUE---JS实现数据的模糊搜索

实现背景 因为后端实现人员列表返回&#xff0c;每次返回的数据量在100以内&#xff0c;要求前端自己进行模糊搜索 页面实现 因为是实时更新数据的&#xff0c;就不需要搜索和重置按钮了 代码 HTML <el-dialogtitle"团队人员详情":visible.sync"centerDi…

odoo16 取消“系统各功能状态日报”的邮件

odoo16默认情况下每周都会发送一个“系统各功能状态日报”的邮件&#xff0c;而且是所有人都发&#xff0c; 这个功能在哪配置呢&#xff1f; 今天研究了一下&#xff0c; 线索是“系统各功能状态日报”&#xff0c;先全文检索吧 #. module: digest #: model:digest.digest,na…

视频如何压缩?视频压缩到100M以内这样做

在日常生活中&#xff0c;我们常常需要处理各种各样的视频文件&#xff0c;但往往视频的大小会给我们的存储和传输带来困扰。那么&#xff0c;如何有效地压缩视频呢&#xff1f;下面就给大家分享三种解决方法&#xff0c;一起来看看吧。 方法一&#xff1a;嗨格式压缩大师 这是…

【flutter】架构之商城main入口

架构之商城main入口 前言一、项目模块的划分二、入口main的配置三、配置文件怎么做总结 前言 本栏目我们将完成一个商城项目的架构搭建&#xff0c;并完善中间的所有功能&#xff0c;总页面大概200个&#xff0c;如果你能看完整个栏目&#xff0c;你肯定能独立完成flutter 项目…

全流程ARCGIS Pro技术应用教程

详情点击公众号链接&#xff1a;全流程ARCGIS Pro技术应用教程 前沿 GIS是利用电子计算机及其外部设备&#xff0c;采集、存储、分析和描述整个或部分地球表面与空间信息系统。简单地讲&#xff0c;它是在一定的地域内&#xff0c;将地理空间信息和 一些与该地域地理信息相关…

基于springboot+vue的大学生竞赛交流系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

【内网穿透】在Ubuntu搭建Web小游戏网站,并将其发布到公网访问

目录 前言 1. 本地环境服务搭建 2. 局域网测试访问 3. 内网穿透 3.1 ubuntu本地安装cpolar 3.2 创建隧道 3.3 测试公网访问 4. 配置固定二级子域名 4.1 保留一个二级子域名 4.2 配置二级子域名 4.3 测试访问公网固定二级子域名 前言 网&#xff1a;我们通常说的是互…

从技术创新到应用实践,百度智能云发起大模型平台应用开发挑战赛!

大模型已经成为未来技术发展方向的重大变革&#xff0c;热度之下更需去虚向实&#xff0c;让技术走进产业场景。在这样的背景下&#xff0c;百度智能云于近期发起了“百度智能云千帆大模型平台应用开发挑战赛”。 挖掘大模型落地应用 千帆大模型平台应用开发挑战赛启动 在不久…

适合新手自学的网络安全基础技能“蓝宝书”:《CTF那些事儿》

CTF比赛是快速提升网络安全实战技能的重要途径&#xff0c;已成为各个行业选拔网络安全人才的通用方法。但是&#xff0c;本书作者在从事CTF培训的过程中&#xff0c;发现存在几个突出的问题&#xff1a; 1&#xff09;线下CTF比赛培训中存在严重的“最后一公里”问题&#xf…

Unity中关于多线程的一些事

一.线程中不允许调用unity组件api 解决方法&#xff1a;可以使用bool值变化并且在update中监测bool值变化来调用关于unity组件的API. 二.打印并且将信息输出到list列表中 多线程可能同时输出多条信息。输出字符串可以放入Queue队列中。队列可以被多线程插入。 三.启用socke…

用flex实现grid布局

1. css代码 .flexColumn(columns, gutterSize) {display: flex;flex-flow: row wrap;margin: calc(gutterSize / -2);> div {flex: 0 0 calc(100% / columns);padding: calc(gutterSize / 2);box-sizing: border-box;} }2.用法 .grid-show-item3 {width: 100%;display: fl…

Linux环境下使用SVN快速访问资料库?试试使用cpolar端口映射

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

电脑C盘爆红怎么办?(小白篇)

文章目录 前言&#xff1a;1、清理临时和系统文件2、更改电脑默认软件安装位置3、微信、QQ文件存储路径放在其它盘4、卸载一些不常用的软件彩蛋 前言&#xff1a; C盘作为电脑的系统盘&#xff0c;如果出现爆满或者剩余空间很小整个C盘变红&#xff0c;这样会导致电脑系统运行…

ScrollView如何裁剪粒子特效

1&#xff09;ScrollView如何裁剪粒子特效 2&#xff09;Unreal在移动设备中无法使用Stat命令获取到GPU Thread的耗时 3&#xff09;Unity中如何看到相机视野范围内的剔除结果 这是第354篇UWA技术知识分享的推送&#xff0c;精选了UWA社区的热门话题&#xff0c;涵盖了UWA问答、…

CSS 中的曲线时间轴

在本文中,我们将为您的网站构建一个弯曲的时间线,您稍后可以在您的作品集中使用它来显示您的工作历史或您想要的其他内容。让我们首先看看我们正在构什么 现在您已经看到了我们要做的事情,所以让我们开始编写代码 <!DOCTYPE html> <html lang="en">…

机器学习总结

对以下文章机器学习总结 什么是深度学习?最易懂的机器学习入门文章-CSDN博客 人工智能和机器学习之间的关系 人工智能是一个最宽泛的概念&#xff0c;是一个研究领域&#xff0c;同时也是一个实现目标&#xff0c;而机器学习则是实现这一目标的一类方法。深度学习只是机器学…