feat: new projiect
This commit is contained in:
49
docs/720yun_资源与鉴权说明.md
Normal file
49
docs/720yun_资源与鉴权说明.md
Normal 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 已使用正确 CDN(ssl-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 个用占位图路径。
|
||||
Reference in New Issue
Block a user