python爬虫--简单登录

ops/2025/2/12 13:36:35/

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/ops/157276.html

相关文章

Jenkins数据备份到windows FTP服务器

文章目录 背景1. 安装配置 FileZilla Server&#xff08;Windows&#xff09;1.1 下载并安装 FileZilla Server1.2 配置 FTP 用户和共享目录 2. 安装并配置 FTP 客户端&#xff08;CentOS&#xff09;2.1 在 CentOS 安装 lftp 3. 编写 Jenkins 备份脚本3.1 赋予执行权限3.2 测试…

harmonyOS生命周期详述

harmonyOS的生命周期分为app(应用)的生命周期和页面的生命周期函数两部分 应用的生命周期-app应用 在app.js中写逻辑,具体有哪些生命周期函数呢,请看下图: onCreated()、onShow()、onHide()、onDestroy()这五部分 页面及组件生命周期 着重说下onShow和onHide,分别代表是不是…

浏览器自动化插件Selenium IDE介绍与下载

下载Selenium IDE 点击下载Selenium IDE 介绍一下Selenium IDE Selenium IDE 的主要特点 ✅ 录制 & 回放&#xff1a;自动记录用户在浏览器中的操作&#xff0c;并生成可回放的测试脚本。 ✅ 跨浏览器支持&#xff1a;兼容 Chrome、Firefox&#xff0c;支持基于 WebDri…

【详细版】DETR网络学习笔记(2020 ECCV)

论文标题End-to-End Object Detection with Transformers论文作者Nicolas Carion;Francisco Massa;Gabriel Synnaeve;Nicolas Usunier;Alexander Kirillov and Sergey Zagoruyko发表日期2020年11月03日GB引用> Nicolas Carion, Francisco Massa, Gabriel Synnaeve, et a…

ProxySQL实现mysql8主从同步读写分离

一、ProxySQL基本介绍 ProxySQL是 MySQL 的高性能、高可用性、协议感知代理。 简单介绍下ProxySQL及其功能和配置&#xff0c;主要包括&#xff1a; 最基本的读/写分离&#xff0c;且方式有多种&#xff1b;可定制基于用户、基于schema、基于语句的规则对SQL语句进行路由&…

DeepSeek各版本说明与优缺点分析

DeepSeek各版本说明与优缺点分析 DeepSeek是最近人工智能领域备受瞩目的一个语言模型系列&#xff0c;其在不同版本的发布过程中&#xff0c;逐步加强了对多种任务的处理能力。本文将详细介绍DeepSeek的各版本&#xff0c;从版本的发布时间、特点、优势以及不足之处&#xff0…

苍穹外卖-菜品分页查询

3. 菜品分页查询 3.1 需求分析和设计 3.1.1 产品原型 系统中的菜品数据很多的时候&#xff0c;如果在一个页面中全部展示出来会显得比较乱&#xff0c;不便于查看&#xff0c;所以一般的系统中都会以分页的方式来展示列表数据。 菜品分页原型&#xff1a; 在菜品列表展示时…

Ollama + AnythingLLM + Deepseek r1 实现本地知识库

1、Ollama&#xff1a;‌是一个开源的大型语言模型 (LLM)服务工具&#xff0c;旨在简化在本地运行大语言模型的过程&#xff0c;降低使用大语言模型的门槛‌。 2、AnythingLLM&#xff1a;是由Mintplex Labs Inc. 开发的一款全栈应用程序&#xff0c;旨在构建一个高效、可定制、…