python爬虫--简单登录
1,使用flask框架搭建一个简易网站
后端代码app.py
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
<!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,模拟登录
方法一
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('登录失败')
方法二
pip install selenium
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()
方法三
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,自愿付费,望海涵!!!谢谢支持!!!