feat: new projiect

This commit is contained in:
Daniel
2026-03-07 19:13:49 +08:00
commit ea760bb71c
27 changed files with 5866 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
# 720yun 原项目资源与鉴权说明
基于对 `text.md`720yun 页面保存的 HTML/脚本)的检查,说明**是否有加密措施**、**为什么脚本读取与浏览器不一致**,以及**底面图的实际地址**。
---
## 一、原项目是否有加密/鉴权措施?
文档中**没有**对图片内容做加密(如 AES、自定义编解码。资源 URL 为明文路径,不携带 token 或签名。
但存在以下**访问控制**,会影响脚本直接拉取或离线使用:
| 措施 | 说明 |
|------|------|
| **Referer 校验** | 页面含 `<meta name="referrer" content="always">`请求会带来源页。CDN如 resource-t.720static.com很可能只允许来自 `*.720yun.com` 的 Referer否则关闭连接或返回异常。用 Python/脚本直接请求时未带该 Referer易出现连接被关如 EOF。 |
| **场景 JSON 不直出** | 场景配置在 `window.json="json/4ca3fae5e7x/.../3.json"`,由前端在浏览器里请求。该接口可能校验 Cookie/Origin/Referer脚本直接 GET 常返回 403/404 或空,无法拿到完整 cube 路径列表。 |
| **过期与权限字段** | `window.data` 中有 `"expired":1``"urlExpiredDate":null``"privilege":1`。若服务端按 `expired``urlExpiredDate` 做时效控制,过期后可能拒绝部分接口或资源。 |
**结论**:没有对图片做“加密”,但有 **Referer/来源校验** 和可能的 **时效/权限** 控制,所以用脚本从站外直接拉取会失败或拿不全;在浏览器里从 720yun 页面打开时,由同源请求带正确 Referer才能正常加载。
### 为什么 Chrome 能访问、脚本“读取”就不正确?
- 浏览器请求 720 的 CDN 时会自动带上 **Referer: https://www.720yun.com/**(以及完整 User-Agent。CDN 只认这类请求,返回 200 和正确图片。
- 脚本若用默认 `urllib` 或只带简单 User-Agent、**不带 Referer**CDN 会拒绝或关闭连接你看到的就是“读取不正确”、EOF、403 等。
- **解决办法**:脚本里请求 720static.com 的 URL 时,必须加上与浏览器一致的请求头,例如:
- `Referer: https://www.720yun.com/`
- `User-Agent: Mozilla/5.0 (Macintosh; ...) Chrome/120.0.0.0 Safari/537.36`
- 本仓库已在 `fetch_720yun.py``download_file``parse_720yun_doc.py` 的下载逻辑里使用上述头,用 `--download` 拉取时与浏览器行为一致。
---
## 二、底面图mobile_d的实际地址与 CDN 域名
原项目**有底图**,地址为(与浏览器一致):
- **底面**`https://ssl-panoimg130.720static.com/resource/prod/4ca3fae5e7x/d22jkguytw6/59446768/imgs/mobile_d.jpg`
之前解析脚本里用的资源域是 **resource-t.720static.com**,而真实全景图 CDN 是 **ssl-panoimg130.720static.com**。用错域名时,脚本请求会失败或拿不到正确数据;在浏览器里因为页面请求的是正确域名,所以“在浏览器里是正确的数据”。
- 解析脚本已改为使用 **ssl-panoimg130.720static.com** 作为资源 base生成的 6 面 + 缩略图 URL 与浏览器一致。
- 下载时需同时带 **Referer: https://www.720yun.com/** 和浏览器 User-Agent见上一节否则 CDN 仍可能拒绝,导致“读取”与浏览器不一致。
---
## 三、在本项目里怎么用(含底面)
- 解析出的 6 面 URL 已使用正确 CDNssl-panoimg130.720static.com且含底面 mobile_d.jpg。
- 在项目根目录执行 **`python3 parse_720yun_doc.py --download`**,会用与浏览器一致的 Referer/User-Agent 把 6 面 + 缩略图下载到 `image/`,再在页面上选「选择六面体(6张)」按顺序选 image 下 6 张即可。
- 若仍只有 5 张(没有 d可用一张纯黑或占位图作为第 6 张,或在 config 的 cubemap 里第 6 个用占位图路径。