python爬虫--简单登录

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

后端代码app.py

python 复制代码
from flask import Flask, render_template, request, redirect, url_for, session

app = 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'] = username
        return 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

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

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,自愿付费,望海涵!!!谢谢支持!!!

相关推荐
深蓝电商API15 小时前
行为模拟的艺术:如何让爬虫的鼠标轨迹像真人
爬虫
枕星而眠15 小时前
C++ 面向对象核心机制深度解析:多态性、虚函数、虚继承与 final 类
运维·开发语言·c++·后端
Sammyyyyy15 小时前
Google I/O 2026 Antigravity 更新解析与 SDK 实战指南
python·ai编程·servbay
Evand J15 小时前
【MATLAB例程】自适应渐消扩展卡尔曼滤波(AFEKF)三维雷达目标跟踪|效果已调优,附下载链接和运行结果,代码直接运行即可
开发语言·算法·matlab·目标跟踪·卡尔曼滤波·自适应滤波·代码定制
爱装代码的小瓶子15 小时前
3. 设计buffer模块
linux·服务器·开发语言·c++·php
郝学胜-神的一滴15 小时前
Qt 高级开发 027: QTabWidget自定义样式表美化实战
开发语言·c++·qt·程序人生·软件构建·用户界面
keykey6.15 小时前
迁移学习实战:用预训练模型做图像分类
开发语言·人工智能·深度学习·机器学习
双河子思15 小时前
《代码整洁之道》——读书笔记(持续更新)
开发语言·c++·c#
嫂子的姐夫15 小时前
047-MD5:飞卢网
爬虫·python·js逆向·逆向
川冰ICE15 小时前
JavaScript实战②|电商网站交互效果,轮播图与购物车
开发语言·javascript·交互