python实现网站登录会话脚本 - wanghongwei

# -*- coding: utf-8 -*-
import os
import requests
from bs4 import BeautifulSoupdef login(username, password):"""Args:username: 用户名password: 密码Returns:session: 登录后的会话对象"""# 创建会话对象session = requests.Session()# 设置请求头headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6','Connection': 'keep-alive','Sec-Fetch-Dest': 'document','Sec-Fetch-Mode': 'navigate','Sec-Fetch-Site': 'same-origin','Upgrade-Insecure-Requests': '1','Host': 'www.example.com'}# 第一步:获取登录页面,提取execution参数和其他必要参数login_url = "https://www.example.com/cas/login"try:response = session.get(login_url, headers=headers)response.raise_for_status()except requests.RequestException as e:print(f"获取登录页面失败: {e}")return None# 解析HTML获取必要的参数soup = BeautifulSoup(response.text, 'html.parser')# 获取其他可能的隐藏字段hidden_fields = {}for input_tag in soup.find_all('input', type='hidden'):name = input_tag.get('name')value = input_tag.get('value', '')if name:hidden_fields[name] = value# 第二步:提交登录表单login_data = {'username': username,'password': password}# 添加所有隐藏字段login_data.update(hidden_fields)# 更新请求头用于POST请求post_headers = headers.copy()post_headers.update({'Content-Type': 'application/x-www-form-urlencoded','Origin': 'https://www.example.com','Referer': 'https://www.example.com/cas/login','X-Requested-With': 'XMLHttpRequest'})print(f"正在尝试登录,用户名: {username}")try:# 允许重定向,以便获取登录后的cookieresponse = session.post(login_url, data=login_data, headers=post_headers, allow_redirects=True)response.raise_for_status()except requests.RequestException as e:print(f"登录请求失败: {e}")return None# 检查登录是否成功if response.history and response.history[0].status_code == 302:# 检查是否有TGC cookie,这是登录成功的标志if 'TGC' in session.cookies:print("登录成功!")return sessionelse:print("登录失败: 未获取到TGC cookie")return Noneelse:print("登录失败: 未发生重定向或重定向状态码不正确")return None# 使用示例
if __name__ == "__main__":# 从系统环境变量获取用户名和密码USERNAME = os.environ.get('USERNAME')PASSWORD = os.environ.get('PASSWORD')session = login(USERNAME, PASSWORD)if session:# 在这里可以使用session进行后续的请求print("成功获取会话对象,可以用于后续请求")# 例如:访问登录后的页面try:response = session.get("https://www.example.com/#/landingpage")print(f"访问登录后页面状态码: {response.status_code}")except Exception as e:print(f"访问登录后页面失败: {e}")else:print("登录失败")

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

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

相关文章

HCM 性能优化函数

HR_INITIALIZE_BUFFER 功能:为特定员工(通过参数 pernr 指定)初始化人事数据缓冲区。作用机制: 加载该员工的主数据(如组织分配、工资信息等)到内存缓冲区中,后续访问同一员工数据时直接从内存读取,避免重复查…

Nginx配置里alias和root的区别

我们用一种非常容易理解的方式来解释 alias 和 root 的区别。 核心比喻:问路 想象一下你在问路:root 就像告诉你一个「大本营」的地址alias 就像给你一个「精确的目的地」地址1. root 指令:告诉你大本营在哪里 工作…

国产DevOps生态崛起:Gitee如何赋能企业数字化转型

国产DevOps生态崛起:Gitee如何赋能企业数字化转型 在数字化转型浪潮席卷全球的当下,中国企业的IT架构正在经历前所未有的变革。根据《中国DevOps现状调查报告》最新数据显示,2022年国内企业DevOps实践率实现了显著增…

【OpenCV】10 图像滤波

作用 将一幅图像通过滤波器转换为另一幅图像。 滤波器又称为卷积核,滤波过程称为卷积。 卷积核 卷积核一般为奇数,如 3x3 5x5 7x7 为什么取奇数?增加padding 保证锚点在中间,防止图像偏移大小的影响? 在深度学习中…

基于java+springboot的社区居民诊疗健康管理系统(源代码+文档+讲解视频) - 指南

基于java+springboot的社区居民诊疗健康管理系统(源代码+文档+讲解视频) - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font…

时序数据库IoTDB的六大实用场景盘点 - 指南

时序数据库IoTDB的六大实用场景盘点 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

50系GPU上安装MMCV

50系GPU上安装MMCV# env conda create --name my_env python=3.12 conda activate my_env pip install torch==2.8.0+cu129 torchvision==0.23.0+cu129 --index-url https://download.pytorch.org/whl/cu129 conda ins…

K8S的CoreDns配置文件添加域名解析

一、CoreDns的概述 负责为整个k8s集群提供 DNS 服务,属于DNS插件。基于dns的接口去实现集群内部的dns内部域名解析的一种能力。k8s集群创建后,会在kube-system名称空间下默认生成两个coredns的pod,所有pod的…

20250308_信安一把梭_web

流量分析, 应急响应, http, mysql,公众号信安一把梭Tags:流量分析,应急响应,http,mysql,信安一把梭 0x00. 题目某公司内网网络被黑客渗透,请分析流量,给出黑客使用的扫描器 某公司内网网络被黑客渗透,请分析流量,得…

nodify_介绍及安装

介绍 Nodify是一个WPF基于节点的编辑器控件,其中包含一系列节点、连接和连接器组件,旨在简化构建基于节点的工具的过程。 这是受虚幻引擎的蓝图视觉脚本系统启发,但仅专注于用户界面和用户交互部分。与蓝图不同,No…

MQTT协议(消息队列遥测传输)

MQTT协议 MQTT是一种极其轻量级的消息传输协议,专为低带宽、高延迟或不稳定的网络环境(如物联网IoT)而设计,它采用发布/订阅模式,非常适合 设备与服务器之前的通信。 一、MQTT是什么 MQTT 的全称是 Message Queui…

实用指南:ThinkPHP 6框架常见错误:htmlentities()函数参数类型问题解决

实用指南:ThinkPHP 6框架常见错误:htmlentities()函数参数类型问题解决2025-09-22 13:51 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: a…

完整教程:深入剖析 Chrome PartitionAlloc 内存池源码原理与性能调优实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

如何构建embeding 的就是pytorch 中

如何构建embeding 的就是pytorch 中pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco…

萤石设备视频接入平台EasyCVR国标GB28181视频平台整合铁路抑尘喷洒智能视频监控方案

萤石设备视频接入平台EasyCVR国标GB28181视频平台整合铁路抑尘喷洒智能视频监控方案一、建设背景与需求分析 铁路运输量的增长带来了粉尘污染的挑战。为了保障铁路运输的安全与环保,铁道部出台了《铁路煤炭运输抑尘技…

【低代码平台之应用构建展示】数智化贸易订单管理平台

贸易行业的企业,作为连接生产企业与客户的桥梁,业务管理往往面对诸多挑战:订单数量庞大,供货品种繁杂;供应商数量众多,分布范围广泛,管理难度大;结算方式多样,对账工作繁重,容易出错等等。这些问题会随着业务…

从零到Offer:Java Socket面试通关秘籍-Socket面试为何总让人“心跳加速”? - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

C# 第 17天 028 029接口,依赖反转,单元测试

胖接口:多要显示接口实现(C#语言独有的功能)

详细介绍:Linux驱动开发笔记(七)——并发与竞争(下)——自旋锁信号量互斥体

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年项目管理软件革命:AI与空间计算如何重塑企业协作范式

2025年项目管理软件革命:AI与空间计算如何重塑企业协作范式 全球项目管理软件市场正在经历一场由多重技术叠加驱动的深度变革。根据Gartner最新预测,到2025年,75%的企业将采用至少一种具备AI决策能力的项目管理工具…