Files
hometown/docs/720yun_资源与鉴权说明.md
2026-03-07 23:35:08 +08:00

3.8 KiB
Raw Blame History

720yun 原项目资源与鉴权说明

基于对 text.md720yun 页面保存的 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。若服务端按 expiredurlExpiredDate 做时效控制,过期后可能拒绝部分接口或资源。

结论:没有对图片做“加密”,但有 Referer/来源校验 和可能的 时效/权限 控制,所以用脚本从站外直接拉取会失败或拿不全;在浏览器里从 720yun 页面打开时,由同源请求带正确 Referer才能正常加载。

为什么 Chrome 能访问、脚本“读取”就不正确?

  • 浏览器请求 720 的 CDN 时会自动带上 Referer: https://www.720yun.com/(以及完整 User-Agent。CDN 只认这类请求,返回 200 和正确图片。
  • 脚本若用默认 urllib 或只带简单 User-Agent、不带 RefererCDN 会拒绝或关闭连接你看到的就是“读取不正确”、EOF、403 等。
  • 解决办法:脚本里请求 720static.com 的 URL 时,必须加上与浏览器一致的请求头,例如:
    • Referer: https://www.720yun.com/
    • User-Agent: Mozilla/5.0 (Macintosh; ...) Chrome/120.0.0.0 Safari/537.36
  • 本仓库已在 scripts/fetch_720yun.pydownload_filescripts/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 scripts/parse_720yun_doc.py --download,会用与浏览器一致的 Referer/User-Agent 把 6 面 + 缩略图下载到 image/,再在页面上选「选择六面体(6张)」按顺序选 image 下 6 张即可。
  • 若仍只有 5 张(没有 d可用一张纯黑或占位图作为第 6 张,或在 config 的 cubemap 里第 6 个用占位图路径。