first commit

This commit is contained in:
2026-02-17 13:06:23 +08:00
commit 7cbd3d061d
349 changed files with 126558 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 326 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 381 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 KiB

+152
View File
@@ -0,0 +1,152 @@
# 微信验证页面浏览器访问解决方案
## 问题描述
微信的安全验证页面(如 `https://weixin110.qq.com/security/acct/newreadtemplate?t=extdevsignin/slaveverify&ticket=xxx`)通常只能在微信内置浏览器中打开,在普通浏览器中会报错。
## 解决方案
本方案通过以下技术手段解决了浏览器访问限制:
### 1. User-Agent模拟
- 使用微信浏览器的User-Agent头部
- 模拟iPhone微信浏览器环境
- 绕过微信服务器的浏览器检测
### 2. 代理接口
创建了代理接口 `/api/v1/login/ProxyWechatVerify`,该接口:
- 接收ticket参数
- 设置正确的微信浏览器User-Agent
- 代理请求微信验证页面
- 返回可在浏览器中正常显示的页面
### 3. 验证页面封装
提供了 `/api/v1/login/GetWechatVerifyPage` 接口,返回包含多种验证方式的HTML页面:
- **方法一**:直接在iframe中显示验证页面(推荐)
- **方法二**:新窗口打开验证页面
- **方法三**:复制链接手动打开
## 在Swagger中的集成
### 自动检测功能
- 当调用获取二维码接口后,系统自动开始监控登录状态
- 检测到需要验证时,自动显示浮动验证按钮
- 点击按钮即可打开验证弹窗
### 使用流程
1. 在Swagger中调用获取二维码接口
2. 用户扫描二维码
3. 如果需要安全验证,右下角会出现"🔐 安全验证"按钮
4. 点击按钮打开验证弹窗
5. 在弹窗中完成滑块验证
6. 验证成功后自动关闭弹窗,继续登录流程
## API接口说明
### 1. 代理微信验证页面
```
GET /api/v1/login/ProxyWechatVerify?ticket={ticket}
```
**参数:**
- `ticket`: 微信验证票据(从检测扫码状态接口获取)
**返回:**
- 微信验证页面的HTML内容(已处理CORS和路径问题)
### 2. 获取微信验证页面
```
GET /api/v1/login/GetWechatVerifyPage?ticket={ticket}
```
**参数:**
- `ticket`: 微信验证票据
**返回:**
- 包含多种验证方式的自定义HTML页面
### 3. 检测扫码状态(已增强)
```
GET /api/v1/login/CheckLoginStatus?key={key}
```
**返回数据包含:**
```json
{
"code": 200,
"data": {
"state": 0, // 0: 等待扫码, 1: 已扫码, 2: 登录成功
"loginState": "waiting",
"data62": "...",
"ticket": "3_890d910a803559e0a6681089cbf70205" // 验证票据
},
"text": "等待扫码"
}
```
## 技术特点
### 1. 微信浏览器模拟
```javascript
req.Header.Set("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.42(0x18002a2f) NetType/WIFI Language/zh_CN")
```
### 2. 自动路径修复
- 将相对路径转换为绝对路径
- 处理CORS跨域问题
- 确保资源正确加载
### 3. 实时状态监控
- 自动轮询检测登录状态
- 智能识别验证需求
- 用户友好的交互体验
## 使用建议
1. **推荐方法一**:直接在iframe中验证,体验最佳
2. **备用方案**:如果iframe加载失败,使用新窗口方式
3. **手动方式**:复制链接到新标签页打开(最后选择)
## 安全说明
- 所有验证过程在用户浏览器中完成
- 不存储任何用户凭据信息
- 仅作为微信验证页面的技术代理
- 验证票据具有时效性,过期需重新获取
## 故障排除
### 常见问题
1. **验证页面无法加载**
- 检查ticket是否有效
- 尝试使用不同的验证方法
- 确保网络连接正常
2. **验证后无响应**
- 检查是否完成了验证操作
- 等待几秒钟让系统检测状态变化
- 可手动调用状态检查接口
3. **弹窗被浏览器拦截**
- 允许浏览器弹窗
- 使用iframe方式验证
### 日志调试
```javascript
// 在浏览器控制台中查看
console.log(window.WechatVerifyIntegration);
// 手动触发状态检查
window.WechatVerifyIntegration.checkLoginStatusOnce();
```
## 更新记录
- **v1.0** - 初始版本,支持基本的微信验证页面代理
- **v1.1** - 添加Swagger集成,自动检测和弹窗功能
- **v1.2** - 优化用户体验,增加多种验证方式
---
> 本解决方案仅供学习交流使用,请遵守相关法律法规和平台规则。