前言

网站必须是登录状态才能查看网站信息,是最常见的反爬手段,下面我分享一下request模拟登录状态进行请求

目录

模拟登录的原理

直接复制网站Cookie模拟登录状态

通过登录接口信息破解出Cookie模拟登录状态


模拟登录的原理

网站是使用Cookie和session记录网站的登录状态的

常见有三种情况

情况一

        直接把用户信息放到Cookie里面,明文暴露用户信息,不安全,一般很少网站使用

情况二

        网站通过session对用户信息进行键值对的方式进行存储,sesionID和用户信息,cookie存储的是sessionID,后台通过cookie存储的sessionID来对用户信息进行寻找

情况三

        分布式情况下,后台把用户信息存储到Redis里面了,原理和情况二一样

其他情况加入反爬加密,需要自己解密了

总结: 无论他是使用那种情况开发登录功能,一般登录状态的信息在请求头cookie或者Authorization里面

所以我们在request请求的时候拿到网站Cookie或者Authorization就可以保证网站的登录状态了,也就模拟了用户登录

直接复制网站Cookie模拟登录状态

这种适合自己临时使用,因为Cookie会变,这样获取肯定不能长时间使用

找到你需要请求的接口,找到Cookie的字符串

import requests#添加请求头用户代理,模拟真人行为
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36"
}cookies = '在网页上面获取的cookie字符串'#处理Cookie字符串可以放到request里面使用
cookies = {item.split('=')[0]: item.split('=')[1] for item in cookies.split("; ")}
cookies = requests.utils.cookiejar_from_dict(cookies)url = "请求网址"response = requests.get(url, headers=headers, cookies=cookies)#得到网页源代码
print(response.text)

通过登录接口信息破解出Cookie模拟登录状态

这种就是先使用这个网站的登录接口进行登录,看返回的信息里面一般是有生成Cookie信息的原材料

如果网站没有反爬机制,就直接把Cookie信息给你了,下面我展示一下没有反爬机制的代码逻辑

import requests#给请求头加入用户代理,模拟真人环境
headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36"
}#我以登录接口是post请求为例
loginUrl = "网站的登录请求路径"#请求体
loginData = {"key1": "value1","key2": "value2","key3": "value3"
}#调用请求接口
loginResponse = requests.post(loginUrl, data=loginData, headers=headers)#此时可以拿到登录接口返回的cookie数据
#放入Cookie模拟登录状态,调用目标请求网站网址
url = "目标网站的网址"
res = requests.get(url, headers=headers,cookies=loginResponse.cookies)
#获取到目标请求网页的源代码
print(res.text)

其实大多数网站是有反爬机制的,所以上面这种情况适用的网站很少

如果有反爬机制,他会把返回的Cookie信息进行加密处理什么的,那么就需要自己自行探索了

拿到Cookie信息,后面就和《直接复制网站Cookie模拟登录状态》步骤一样了

如果很复杂,解密不了,可以操控浏览器来进行对Cookie的获取,如果有需要的同志可以看我的文章

selenium基础知识 和 模拟登录selenium版本-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一些改进策略

1.要计算一个神经网络模型的总参数量、可训练参数量以及计算量(FLOPs),可以使用以下步骤: ### 计算总参数量和可训练参数量: 1. **逐层计算参数量**: - 对于每一层,确定该层的参数量。这通…

React Native响应式布局实战:告别媒体查询,拥抱跨屏适配新时代

前言:当设计师说"这个页面要适配所有手机和平板…" “什么?React Native不支持CSS媒体查询?那怎么实现响应式布局?”——这是很多刚接触React Native的开发者会遇到的灵魂拷问。 但别慌,没有@media,我们照样能玩转多端适配!想象一下:你的App在iPhone SE的小…

[Java恶补day39] 整理模板·考点六【反转链表】

考点六【反转链表】 【考点总结】 1. 206. 【题目】 【核心思路】 【复杂度】 时间复杂度: O ( ) O() O()。 空间复杂度: O ( ) O() O()。 【代码】 92. 【题目】 【核心思路】 【复杂度】 时间复杂度: O ( ) O() O()。 空间复杂度&a…

7,TCP服务器

1,创建一个工程 文件目录:

Modbus_TCP_V5 新功能

odbus TCP 服务器指令 MB_SERVER V5.0 新功能概述 如下图1所示服务器指令 MB_SERVER 从 V5.0 以后增加了三个新功能,分别为: 访问数据块中的数据区域,而不是直接访问 MODBUS 地址过程映像区的读访问限制统计变量 NDR_immediate 和 DR_immed…

2-RuoYi-UI管理平台的启动

RuoYi-UI是RuoYi后端框架的管理中心(基于 Vue.js 的前端项目)的详细配置与启动指南,结合官方文档和常见实践整理,涵盖环境准备、配置修改、启动流程及问题排查。 ⚙️ 一、环境准备 Node.js 版本要求:≥12.0(推荐 ≥14.0 或 18.18+ 适配 Vue3) 安装后验证: node -v …

WPF学习笔记(21)ListBox、ListView与控件模板

ListBox与控件模板 一、 ListBox默认控件模板详解二、ItemsPresenter集合数据呈现1. 概述2. 示例 三、 ListView默认控件模板详解1. 概述2. 示例 一、 ListBox默认控件模板详解 WPF 中的大多数控件都有默认的控件模板。 这些模板定义了控件的默认外观和行为,包括控…

操作系统【2】【内存管理】【虚拟内存】【参考小林code】

本文完全参考 虚拟内存内存分段内存分页段页式内存管理Linux内存管理 一、虚拟内存 1. 单片机的绝对物理地址 以单片机作为引子,它没有操作系统,每次写完程序是借助工具将程序烧录进单片机,程序才能运行。 单片机由于没有操作系统&#…

【王树森推荐系统】召回05:矩阵补充、最近邻查找

概述 这节课和后面几节课将详细讲述向量召回,矩阵补充是向量召回最简单的一种方法,不过现在已经不太常用这种方法了本节课的矩阵补充是为了帮助理解下节课的双塔模型上节课介绍了embedding,它可以把用户ID和物品ID映射成向量 矩阵补充 模型…

C# 事件(订阅事件和触发事件)

订阅事件 订阅者向事件添加事件处理程序。对于一个要添加到事件的事件处理程序来说,它必须具有 与事件的委托相同的返回类型和签名。 使用运算符来为事件添加事件处理程序,如下面的代码所示。事件处理程序位于该运 算符的右边。事件处理程序的规范可以…

64页精品PPT | 基于DeepSeek的数据治理方案AI大数据治理解决方案数据治理大模型解决方案

这份PPT文档是关于基于DeepSeek的大模型技术在数据治理方案中的应用介绍。强调数据作为新型生产要素与人工智能技术相结合的重要性,指出大模型凭借强大的文学理解、生成能力以及多模态数据处理能力,能为数据治理带来新机遇。文档详细阐述了数据资产化的路…

【文献笔记】Tree of Thoughts: Deliberate Problem Solving with Large Language Models

Tree of Thoughts: Deliberate Problem Solving with Large Language Models https://github.com/princeton-nlp/tree-of-thought-llm 标题翻译:思维树:利用大型语言模型问题求解 1. 内容介绍 1.1. 背景 决策过程有两种模式: 快速、自动…

使用 Mathematical_Expression 从零开始实现数学题目的作答小游戏【可复制代码】

从零开始实现数学题目的作答小游戏 开源技术栏 使用 Mathematical_Expression 让计算机做出题人,让代码与数学碰撞出趣味火花。 目录 文章目录 从零开始实现数学题目的作答小游戏目录 从零开始实现数学题目的作答小游戏:让代码与数学碰撞出趣味火花为…

DQL-9-小结

DQL-9-小结 小结DQL语句 小结 DQL语句 SELECT 字段列表 -- 字段名 [AS] 别名FROM 表名列表WHERE条件列表 -- >、 >、 <、 <、 、 <>、 like、 between ... and、 in、 and、 or, 分组之前过滤 GROUP BY分组字段列表HAVING分组后条件列表 -- 分组之后…

[netty5: WebSocketServerHandshaker WebSocketServerHandshakerFactory]-源码分析

在阅读这篇文章前&#xff0c;推荐先阅读以下内容&#xff1a; [netty5: WebSocketFrame]-源码分析[netty5: WebSocketFrameEncoder & WebSocketFrameDecoder]-源码解析 WebSocketServerHandshakerFactory WebSocketServerHandshakerFactory 用于根据客户端请求中的 Web…

数据挖掘:深度解析与实战应用

在当今数字化时代&#xff0c;数据挖掘已经成为企业获取竞争优势的关键技术之一。通过从大量数据中提取有价值的信息&#xff0c;企业可以更好地理解客户需求、优化业务流程、提高运营效率。本文将深入探讨数据挖掘的核心技术、实际应用案例以及如何在企业中实施数据挖掘项目。…

LLM面试题14

算法岗面试题 介绍下Transformer模型。 Transformer本身是一个典型的encoder-decoder模型&#xff0c;Encoder端和Decoder端均有6个Block,Encoder端的Block包括两个模块&#xff0c;多头self-attention模块以及一个前馈神经网络模块&#xff1b;Decoder端的Block包括三个模块&…

Java金融场景中为什么金额字段禁止使用浮点类型(float/double)?

引言 Java金融场景中为什么金额字段禁止使用浮点类型&#xff1f;这是一篇你不能忽视的“爆雷”警告&#xff01; 在金融、电商、支付、清结算等业务系统中&#xff0c;浮点类型是绝对禁区&#xff01; &#x1f6a8;一、核心警告&#xff1a;浮点类型不是十进制数&#xff01;…

SVN下载与拉取

大家好我是苏麟&#xff0c;今天聊一聊SVN。 SVN官网&#xff1a;下载 TortoiseSVN - TortoiseSVN 软件 根据系统选择32位还是64位 打开文件 安装&#xff0c;下一步&#xff0c;下一步 安装成功后&#xff0c;右键找到SVNcheck 输入地址 输入用户名和密码就OK了 这期就到这里…

数据结构笔记8:堆

目录 满二叉树&#xff1a; 完全二叉树&#xff1a; 堆是一种特殊的完全二叉树&#xff1a; 我们可以以数组的方式存储堆。 父节点和子节点下标关系的推导&#xff1a; 1.使用数学归纳法证明n2 1 n0&#xff1a; 2.使用边和节点的关系证明n2 1 n0&#xff1a; 我们…