python爬虫--简单登录

news/2025/2/11 19:29:05/

1,使用flask框架搭建一个简易网站

后端代码app.py

python">from flask import Flask, render_template, request, redirect, url_for, sessionapp = Flask(__name__)
app.secret_key = '123456789'  # 用于加密会话数据# 模拟用户数据库
users = {'user1': {'password': 'password1'},'user2': {'password': 'password2'}
}@app.route('/')
def home():return render_template('login.html')@app.route('/login', methods=['POST'])
def login():username = request.form['username']password = request.form['password']if username in users and users[username]['password'] == password:session['username'] = usernamereturn redirect(url_for('dashboard'))else:return render_template('login.html', error='Invalid username or password')@app.route('/dashboard')
def dashboard():if 'username' in session:return render_template('dashboard.html', username=session['username'])else:return redirect(url_for('home'))@app.route('/logout')
def logout():session.pop('username', None)return redirect(url_for('home'))if __name__ == '__main__':app.run(debug=True)

前端代码
登录:login.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Login</title>
</head>
<body><h1>Login</h1>{% if error %}<p style="color: red;">{{ error }}</p>{% endif %}<form action="{{ url_for('login') }}" method="post"><label for="username">Username:</label><input type="text" id="username" name="username" required><br><label for="password">Password:</label><input type="password" id="password" name="password" required><br><input type="submit" value="Login"></form>
</body>
</html>

仪表盘:dashboard.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Dashboard</title>
</head>
<body><h1>Welcome, {{ username }}!</h1><a href="{{ url_for('logout') }}">Logout</a>
</body>
</html>

启动app.py,访问http://127.0.0.1:5000进行测试
登录页面
登陆成功

2,抓包

简单的登录抓包可以直接使用浏览器自带的
点击F12,进入开发者模式,然后点击网络

点击网络
输入账号密码,抓包
查看请求标头
记录标头
查看负载,也就是数据
在这里插入图片描述
查看响应标头
在这里插入图片描述

明确流程:
输入账号和密码之后,会在后端验证,验证成功后会将当前网页重定向到dashboard.html

3,模拟登录

方法一
python">import requests# 登录页面的URL
login_url = 'http://127.0.0.1:5000/login'# 登录表单数据
data = {'username': 'user1','password': 'password1'
}# 发送POST请求
response = requests.post(login_url, data=data)# 检查响应状态码
if response.status_code == 200:print('登录成功')
else:print('登录失败')

在这里插入图片描述

方法二
python">pip install selenium
python">from selenium import webdriver
from selenium.webdriver.common.keys import Keys# 创建浏览器实例
driver = webdriver.Chrome()  # 假设你使用的是Chrome浏览器# 打开登录页面
driver.get('http://127.0.0.1:5000/')# 找到用户名和密码输入框,并输入相应的值
username_input = driver.find_element_by_name('username')
password_input = driver.find_element_by_name('password')username_input.send_keys('user1')
password_input.send_keys('password1')# 提交表单
password_input.send_keys(Keys.RETURN)# 检查是否登录成功
if 'Welcome' in driver.page_source:print('登录成功')
else:print('登录失败')# 关闭浏览器
driver.quit()
方法三
python">import requests# 创建会话对象
session = requests.Session()# 登录页面的URL
login_url = 'http://127.0.0.1:5000/login'# 登录表单数据
data = {'username': 'user1','password': 'password1'
}# 发送POST请求
response = session.post(login_url, data=data)# 检查响应状态码
if response.status_code == 200:print('登录成功')
else:print('登录失败')# 使用会话对象发送其他请求
dashboard_url = 'http://127.0.0.1:5000/dashboard'
dashboard_response = session.get(dashboard_url)if 'Welcome' in dashboard_response.text:print('访问仪表盘成功')
else:print('访问仪表盘失败')


Adobe系列工具全家桶地址:https://8ma.co/res/J3TL3A1M
网盘空间要钱,所以是付费资源,只需打赏一yuan,自愿付费,望海涵!!!谢谢支持!!!


http://www.ppmy.cn/news/1571227.html

相关文章

驱动开发系列36 - Linux Graphics 2D 绘制流程

一: 概述 在Linux中,2D绘制流程是操作系统、图形库、显示协议、驱动程序等多个组件协调工作的结果。整体流程如下步骤所示: 1. 客户端请求:客户端程序(如GTK、Qt应用程序)通过X11协议与Xorg-Server通信(或通过Wayland协议与Wayland合成器通信)、请求绘制2D图形,比如绘制…

基于Kotlin中Flow扩展重试方法

最近项目中统一采用Kotlin的Flow来重构了网络请求相关代码。 目前的场景是,接口在请求的时候需要一个accessToken值,因为此值会过期或者不存在,需要刷新,因此最终方案是在使用Flow请求的时候先获取accessToken值然后再进行接口请求,而获取accessToken值的方法已经封装成了…

FastReport 加载Load(Stream) 模板内包含换行符不能展示

如下代码 当以FastReport 载入streams时 当模板内包含换行符时会导致不能正常生成pdf System.Xml.XmlDocument newFrxXml new System.Xml.XmlDocument(); newFrxXml.Load(fileName);FastReport.Report report new FastReport.Report();using (var memStream new MemoryStre…

w200基于spring boot的个人博客系统的设计与实现

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…

Android 常用场景events log分析

在Android开发中&#xff0c;分析事件日志(Events Log)是调试和优化应用性能的关键步骤。事件 日志可以提供关于应用在不同场景下的运行状态、资源使用情况、异常崩溃等信息。以下是 一些常用的场景和相应的日志分析方法: 1.性能监控 场景描述:监控应用的启动时间、页面加载…

FFmpeg + OpenGL ES 美颜相机教程大纲

做OpenGL和FFmpeg也有很长一段时间了&#xff0c;最近打算结合FFmpegOpenGL ES做一期视频教程&#xff0c;下面是完整视频教程大纲。最终的项目实战效果是实现一款美颜相机。教程分为理论讲解和实战开发两部分&#xff0c;适合有一定编程基础的开发者。课程计划是免费发布在B站…

[论文阅读] Knowledge Fusion of Large Language Models

Knowledge Fusion of Large Language Models (FuseLLM) Methodology 整体Pipeline如下图所示 不同的动物代表不同的LLM。左边第一&#xff0c;第二分别是Ensemble以及Weight Merging方法。最右侧为本文提出的FuseLLM。 Ensemble: 融合多个models的预测结果&#xff0c;比如…

2.10学习总结

Dijkstra算法求取最短路径 注&#xff1a;迪杰斯特拉算法并不能直接生成最短路径&#xff0c;但是算法将最短路径信息保存在dist数组和path数组中。 dist数组中保存的是起始点到数组下标对应顶点的路径长度&#xff08;累加的结果&#xff09;path数组中保存的是对应path数组…