正常get或post提交账号密码

本文介绍如何使用Fiddler进行抓包并分析登录请求,包括配置浏览器代理、清除抓包记录及利用过滤功能定位登录请求。文中还提供了Python代码示例,展示如何通过requests库模拟登录。
部署运行你感兴趣的模型镜像

登陆前打开fiddler,进行抓包,当然你需要先配置浏览器代理。

在点击登录前可以使用快捷键Ctrl+x清空fiddler抓取记录,这样可以更好的找到登陆的请求。同样你也可以使用fiddler的过滤功能,如下图:


至于如何确定那个是登陆的请求,一般使用Ctrl+f查找某些关键字,如用户名、密码

下图为一般登陆请求,使用post请求,用户名和密码为明文提交


如下图为登陆的请求头和响应头信息,可见响应头中有set-cookie,但不一定登陆成功需要看响应内容才能确定时候登陆成功。


然后可以写代码了

self.session = self.gen_session()
self.session.headers.update({
    "User-Agent": "Dalvik/2.1.0 (Linux; U; Android 5.0.2; CHE-TL00H Build/HonorCHE-TL00H)",
    "Connection": "Keep-Alive",
    "Accept-Encoding": "gzip",
    "Content-Type": "application/x-www-form-urlencoded",
})
params = {
    "userName": self.user_name,
    "pwd": self.pass_word,
    "userType": "0",
}
r = self.session.post(self.login_url, params=params)
使用的是requests.session

理解登陆过程推荐看一下《图解HTTP》,顺便理解一下请求头和响应头中各个参数的作用,虽然我还没看完

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think>我们正在处理一个前后端分离的场景:前端使用Vue.js和axios发送HTTP POST请求,后端使用Django。 用户需求:在Django中验证axios.post提交账号密码,验证成功后返回其他页面(即重定向返回一个新的页面)。 但是注意:在前后端分离的架构中,后端通常不直接返回HTML页面,而是返回JSON数据,由前端根据响应进行页面跳转(路由切换)。 根据引用内容: 1. 前端使用axios发送表单数据(账号密码)到Django后端(引用[1][2][4])。 2. 后端使用Django的`authenticate`函数验证用户(引用[3])。 3. 后端验证成功后,使用session记录登录状态(引用[1]),者返回一个JSON响应(引用[5]),其中包含跳转信息。 然而,用户要求的是“返回其他页面”,在传统多页面应用中,后端可以直接返回重定向响应(302)者渲染一个新页面。但在前后端分离中,通常有两种做法: - 后端返回重定向的URL,前端通过`window.location`Vue Router进行跳转。 - 后端返回一个包含跳转URL的JSON响应,前端根据响应跳转。 根据引用[5]中的后台代码示例,它返回的是JsonResponse,并没有直接返回HTML页面。所以,我们这里采用返回JSON数据指示前端跳转。 步骤: 1. 前端通过axios.post发送登录请求(包含用户名和密码)。 2. 后端Django视图接收POST数据,验证用户。 3. 如果验证成功: a. 使用session记录登录状态(可选,用于后续请求的认证) b. 返回JSON响应,包含跳转的URL(例如:{'code':200, 'msg':'登录成功', 'redirect_url': '/dashboard/'}) 4. 如果验证失败,返回错误信息(如:{'code':400, 'msg':'账号密码错误'})。 5. 前端根据响应,如果成功,则使用Vue Router(this.$router.push)者window.location.href进行跳转。 注意:由于前后端分离,Django不应该返回重定向的HTML页面,而是返回一个URL让前端跳转。 下面我们分别给出前端和后端的代码示例: 后端Django视图(基于引用[5]修改): - 使用Django的认证系统进行用户验证(引用[3])。 - 使用session记录登录状态。 前端Vue方法使用axios): - 提交表单数据,处理响应。 另外,引用[4]中提到了在axios请求头中添加Authorization和token,但我们这里使用session认证,所以暂时不需要。如果需要使用token认证,则后端应返回token,前端保存并后续携带。 然而,用户要求使用session认证(引用[1]),所以我们使用session。 后端代码示例(Django视图): - 使用`authenticate`验证用户,然后`login`函数设置session。 前端代码示例(Vue组件): - 使用axios发送POST请求,处理响应,跳转。 具体实现如下: </think>### Django 验证 Axios.post 提交账号密码并返回其他页面的解决方案 根据您的需求,以下是完整的实现方案(前后端协作流程): #### 1. 后端 Django 实现 ```python # views.py from django.http import JsonResponse from django.contrib.auth import authenticate, login from django.views import View import json class LoginView(View): def post(self, request): # 解析 Axios 提交的 JSON 数据 data = json.loads(request.body.decode('utf-8')) username = data.get('username') password = data.get('password') # 用户认证(引用[3]) user = authenticate(username=username, password=password) if user is not None: # 创建 session 记录登录状态(引用[1]) login(request, user) # 返回跳转指令和重定向 URL return JsonResponse({ 'code': 200, 'msg': '登录成功', 'redirect_url': '/dashboard/' # 目标页面路径 }) else: return JsonResponse({ 'code': 403, 'msg': '账号密码错误' }) ``` #### 2. 前端 Vue + Axios 实现 ```javascript // 在登录组件中 import api from '@/api' // 引用[4]封装的axios实例 export default { methods: { submitLogin() { api.post('/login/', { username: this.username, password: this.password }).then(response => { if (response.data.code === 200) { // 执行页面跳转(引用[2]) window.location.href = response.data.redirect_url; // 若使用 Vue Router // this.$router.push(response.data.redirect_url); } else { alert(response.data.msg); } }).catch(error => { console.error('请求失败:', error); }); } } } ``` #### 3. Django URL 配置 ```python # urls.py from django.urls import path from .views import LoginView urlpatterns = [ path('login/', LoginView.as_view(), name='login'), ] ``` #### 关键实现说明: 1. **认证流程** - 前端通过 Axios 发送 JSON 格式的凭证 - 后端使用 `authenticate()` 验证(引用[3]) - 验证成功后建立 session(引用[1]) 2. **页面跳转机制** - 后端返回 JSON 包含 `redirect_url` - 前端通过 `window.location.href` Vue Router 跳转 - 避免使用 Django 的重定向(前后端分离架构要求) 3. **安全增强建议**: - 启用 CSRF 保护:在 Axios 请求头添加 `X-CSRFToken` - 使用 HTTPS 传输敏感数据 - 添加登录失败次数限制 #### 配置注意事项: 1. 确保 Django 的 `settings.py` 包含: ```python INSTALLED_APPS = [ # ... 'django.contrib.sessions', 'django.contrib.auth' ] MIDDLEWARE = [ 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware' ] ``` 2. 若使用 Vue Router 跳转,需提前配置路由: ```javascript // router.js const routes = [ { path: '/dashboard', component: DashboardComponent } ] ``` 此方案实现了: - 安全的用户凭证验证(基于 Django 原生认证系统) - 前后端分离架构的正确跳转模式 - 可扩展的 JSON 交互协议 - Session 状态管理的最佳实践 如需实现 JWT 验证替代 session,可增加 token 返回机制(引用[4]),但需注意 token 刷新策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值