From 60598655238647cd17adfc6c7d354c7cd7af9e52 Mon Sep 17 00:00:00 2001 From: empty Date: Wed, 3 Dec 2025 17:06:53 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E7=BB=84=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - src/ 存放源代码 - docs/ 存放文档 - scripts/ 存放工具脚本 - 移除临时文件 --- README.md | 30 +- browser-extension.zip | Bin 13682 -> 0 bytes .../README.md => docs/EXTENSION.md | 0 {browser-extension => docs}/INSTALL.md | 15 +- result.md | 957 ------------------ .../generate_icons.py | 0 mcp.py => scripts/mcp.py | 0 .../browser-extension}/content.css | 0 .../browser-extension}/content.js | 0 .../browser-extension}/icons/icon.svg | 0 .../browser-extension}/icons/icon128.png | Bin .../browser-extension}/icons/icon16.png | Bin .../browser-extension}/icons/icon48.png | Bin .../browser-extension}/manifest.json | 0 .../browser-extension}/popup.html | 0 .../browser-extension}/popup.js | 0 wechat_dev_seo_structured.json | 81 -- 17 files changed, 27 insertions(+), 1056 deletions(-) delete mode 100644 browser-extension.zip rename browser-extension/README.md => docs/EXTENSION.md (100%) rename {browser-extension => docs}/INSTALL.md (85%) delete mode 100644 result.md rename generate_icons.py => scripts/generate_icons.py (100%) rename mcp.py => scripts/mcp.py (100%) rename {browser-extension => src/browser-extension}/content.css (100%) rename {browser-extension => src/browser-extension}/content.js (100%) rename {browser-extension => src/browser-extension}/icons/icon.svg (100%) rename {browser-extension => src/browser-extension}/icons/icon128.png (100%) rename {browser-extension => src/browser-extension}/icons/icon16.png (100%) rename {browser-extension => src/browser-extension}/icons/icon48.png (100%) rename {browser-extension => src/browser-extension}/manifest.json (100%) rename {browser-extension => src/browser-extension}/popup.html (100%) rename {browser-extension => src/browser-extension}/popup.js (100%) delete mode 100644 wechat_dev_seo_structured.json diff --git a/README.md b/README.md index a3231e6..37e5a3d 100644 --- a/README.md +++ b/README.md @@ -6,15 +6,23 @@ ``` web2mcp/ -├── browser-extension/ # Chrome 浏览器扩展 -│ ├── manifest.json # 扩展配置 -│ ├── popup.html # 弹出界面 -│ ├── popup.js # 弹出逻辑 -│ ├── content.js # 内容提取脚本 -│ ├── content.css # 样式 -│ └── icons/ # 图标 -├── mcp.py # Python 网页抓取脚本 -└── README.md +├── src/ # 源代码 +│ └── browser-extension/ # Chrome 浏览器扩展 +│ ├── manifest.json # 扩展配置 +│ ├── popup.html # 弹出界面 +│ ├── popup.js # 弹出逻辑 +│ ├── content.js # 内容提取脚本 +│ ├── content.css # 样式 +│ └── icons/ # 图标 +├── docs/ # 文档 +│ ├── INSTALL.md # 安装指南 +│ └── EXTENSION.md # 扩展详细说明 +├── scripts/ # 工具脚本 +│ ├── mcp.py # Python 网页抓取脚本 +│ └── generate_icons.py # 图标生成脚本 +├── README.md +├── LICENSE +└── .gitignore ``` ## 功能 @@ -33,7 +41,9 @@ web2mcp/ 1. 打开 Chrome,访问 `chrome://extensions/` 2. 开启右上角 **开发者模式** 3. 点击 **加载已解压的扩展程序** -4. 选择 `browser-extension` 文件夹 +4. 选择 `src/browser-extension` 文件夹 + +详细安装说明请参考 [docs/INSTALL.md](docs/INSTALL.md) ### Python 脚本 diff --git a/browser-extension.zip b/browser-extension.zip deleted file mode 100644 index 339b9ab4ddb6e7e258bff2ea9dd144f4b35fce70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13682 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 iz>VoUpfvh_%B$C}~xum1(`NMc_A diff --git a/browser-extension/README.md b/docs/EXTENSION.md similarity index 100% rename from browser-extension/README.md rename to docs/EXTENSION.md diff --git a/browser-extension/INSTALL.md b/docs/INSTALL.md similarity index 85% rename from browser-extension/INSTALL.md rename to docs/INSTALL.md index ab32fd6..0c85427 100644 --- a/browser-extension/INSTALL.md +++ b/docs/INSTALL.md @@ -24,7 +24,7 @@ 4. **加载扩展** - 点击 **加载已解压的扩展程序** - - 选择项目中的 `browser-extension` 文件夹 + - 选择项目中的 `src/browser-extension` 文件夹 5. **完成** - 扩展图标会出现在浏览器工具栏 @@ -58,18 +58,17 @@ ## 文件说明 ``` -browser-extension/ +src/browser-extension/ ├── manifest.json # 扩展配置(权限、入口等) ├── popup.html # 弹出窗口界面 ├── popup.js # 弹出窗口逻辑 ├── content.js # 注入页面的内容脚本 ├── content.css # 框选样式 -├── icons/ # 图标文件 -│ ├── icon.svg # 矢量源文件 -│ ├── icon16.png # 16x16 图标 -│ ├── icon48.png # 48x48 图标 -│ └── icon128.png # 128x128 图标 -└── INSTALL.md # 本文件 +└── icons/ # 图标文件 + ├── icon.svg # 矢量源文件 + ├── icon16.png # 16x16 图标 + ├── icon48.png # 48x48 图标 + └── icon128.png # 128x128 图标 ``` ## 权限说明 diff --git a/result.md b/result.md deleted file mode 100644 index 1c38e86..0000000 --- a/result.md +++ /dev/null @@ -1,957 +0,0 @@ -[小程序]() - -- 小程序 -- 小游戏 -- 公众号 -- 服务号 -- 开放平台 -- 企业微信 -- 微信支付 -- 视频号 -- 微信小店 -- 智能对话 -- 腾讯小微 - -[开发](https://developers.weixin.qq.com/miniprogram/dev/framework/) - -[介绍](https://developers.weixin.qq.com/miniprogram/introduction/) - -[设计](https://developers.weixin.qq.com/miniprogram/design/) - -[运营](https://developers.weixin.qq.com/miniprogram/product/) - -[数据](https://developers.weixin.qq.com/miniprogram/analysis/wedata/intro/) - -[安全](https://developers.weixin.qq.com/miniprogram/security/basic/) - -[社区](https://developers.weixin.qq.com/community/develop/mixflow) - -[学堂](https://developers.weixin.qq.com/community/business) - -[取消](javascript:;) - -[查看更多](https://developers.weixin.qq.com/doc/search?source=more&query=&doc_type=miniprogram&jumpbackUrl=%2Fdoc%2F) - -[在小程序下暂无结果,查看其它业务相关内容 >](https://developers.weixin.qq.com/doc/search?source=more&query=&doc_type=miniprogram&jumpbackUrl=%2Fdoc%2F) - -- 指南 -- 框架 -- 组件 -- API -- 服务端 -- 平台能力 - 行业能力 - - 商业能力 - - 多端能力 - - 服务市场 - - 城市服务 - - 付费能力 - - 拓展能力 -- 工具 -- 云服务 - 云开发 - - 云托管 -- 更新日志 - -[开发](javascript:;) - -[开发](https://developers.weixin.qq.com/miniprogram/dev/framework/) - -[介绍](https://developers.weixin.qq.com/miniprogram/introduction/) - -[设计](https://developers.weixin.qq.com/miniprogram/design/) - -[运营](https://developers.weixin.qq.com/miniprogram/product/) - -[数据](https://developers.weixin.qq.com/miniprogram/analysis/wedata/intro/) - -[安全](https://developers.weixin.qq.com/miniprogram/security/basic/) - -[指南](javascript:;) - -- 起步 - - 小程序简介 - - 小程序技术发展史 - - 小程序与普通网页开发的区别 - - 体验小程序 - - 开始 - - 申请账号 - - 安装开发者工具 - - 你的第一个小程序 - - 编译预览 - - 小程序代码构成 - - JSON 配置 - - WXML 模板 - - WXSS 样式 - - JS 逻辑交互 - - 小程序宿主环境 - - 渲染层和逻辑层 - - 程序与页面 - - 组件 - - API - - 小程序协同工作和发布 - - 协同工作 - - 小程序的版本 - - 发布上线 - - 运营数据 - 小程序开发指南 -- 目录结构 -- 配置小程序 - - 全局配置 - - 页面配置 -- 小程序框架 - - 介绍 - - 场景值 - - 逻辑层 - - 介绍 - - 注册小程序 - - 注册页面 - - 页面生命周期 - - 页面路由 - - 介绍 - - 页面路由监听 - - 路由事件重写 - - 模块化 - - API - - 视图层 - - 介绍 - - WXML - - WXSS - - WXS - - 事件系统 - - 介绍 - - WXS 响应事件 - - Tap 事件 - - Pointer 事件 - - 简易双向绑定 - - 基础组件 - - 获取界面上的节点信息 - - 响应显示区域变化 - - 分栏模式 - - 动画 - - 初始渲染缓存 -- 小程序运行时 - - 运行环境 - - JavaScript 支持情况 - - 运行机制 - - 更新机制 -- Skyline 渲染引擎 - - 概览 - - 介绍 - - 特性 - - 性能对比 - - 示例体验 - - 支持与差异 - - 基础组件 - - WXSS 样式 - - 增强特性 - - Worklet 动画 - - 手势系统 - - 自定义路由 - - 预设路由效果 - - 容器转场动画 - - 页面返回手势 - - 共享元素动画 - - 全局工具栏 - - 滚动容器及其应用场景 - - 从 WebView 迁移 - - 起步 - - 新版组件框架适配指引 - - 最佳实践 - - 常见兼容问题 - - 发布上线 - - 迁移工具 - - 性能调试 - - 动态 - - 更新日志 - - 特性状态 -- glass-easel 组件框架 - - 介绍 - - 适配指引 - - 新增特性 - - 介绍 - - 在模板中调用 data 里的函数 - - Chaining API - - Chaining API 的 init 函数 - - 动态 slot -- 自定义组件 - - 介绍 - - 组件系统 - - 组件模板和样式 - - Component 构造器 - - 组件间通信与事件 - - 组件生命周期 - - behaviors - - 组件间关系 - - 数据监听器 - - 纯数据字段 - - 抽象节点 - - 自定义组件扩展 - - 开发第三方自定义组件 - - 单元测试 - - 获取更新性能统计信息 - - 占位组件 - - 查看自定义组件数据 -- 插件 - - 介绍 - - 开发插件 - - 使用插件 - - 插件调用 API 的限制 - - 插件使用组件的限制 - - 插件功能页 - - 介绍 - - 用户信息功能页 - - 支付功能页 - - 收货地址功能页 - - 发票功能页 - - 发票抬头功能页 -- 基础能力 - - 网络 - - 使用说明 - - 业务域名 - - 局域网通信 - - 移动解析HttpDNS - - 存储 - - 文件系统 - - 画布 - - 介绍 - - 旧版迁移指南 - - 分包加载 - - 使用分包 - - 独立分包 - - 分包预下载 - - 分包异步化 - - 按需注入和用时注入 - - 多线程 Worker - - 服务端能力 - - 服务端 API - - 消息推送 - - 自定义 tabBar - - 周期性更新 - - 数据预拉取 - - DarkMode 适配指南 - - 大屏适配指南 - - HarmonyOS 适配指南 - - AI/AR - - AI推理能力 - Beta - 介绍 - - 算子支持列表 - - 模型量化推理 - - VisionKit 视觉能力 - - VisionKit 基础 - - 6Dof-水平面 AR - - 6Dof-水平面 AR 扩展能力 - - Marker AR - - 单样本检测(OSD) - - 人脸检测 - - 人体检测 - - 人手检测 - - 鞋部检测 - - OCR检测 - - 身份证检测 - - 深度估计 -- XR-FRAME - - 开发指南 - - 开始 - - 新建一个XR组件 - - 在页面中使用这个组件 - - 添加一个物体 - - 来点颜色和灯光 - - 有点寡淡,加上图像 - - 让场景更丰富,环境数据 - - 动起来,加入动画 - - 还是不够,放个模型 - - 再来点交互 - - 组件通信,加上HUD - - 虚拟 x 现实,追加 AR 能力 - - 识别人脸,给自己戴个面具 - - 手势,给喜欢的作品点赞 - - OSDMarker,给现实物体做标记 - - 2DMarker+视频,让照片动起来 - - 加上魔法,来点粒子 - - 后处理,让画面更加好玩 - - 分享给你的好友吧! - - 之后的,就交给你的创意 -- 连接硬件能力 - - 蓝牙 - - 介绍 - - 蓝牙低功耗 (BLE) - - 蓝牙低功耗网状网络 (BLE Mesh) - - 蓝牙信标 (Beacon) - - 近场通信 (NFC) - - 无线局域网 (Wi-Fi) - - 硬件设备接入 - - 设备消息 - - 设备认证 - - 指引 - - 使用 WMPF(安卓)认证设备 - - 设备认证 SDK(安卓) - - 设备认证 TEE 规范 - - 穿戴设备小程序框架 - - 音视频通话+摄像头(for 硬件) - - 介绍 - - VoIP 通话插件 - - 接入指引 - - 接口文档 - - 发起通话 - - 介绍 - - initByCaller - - callWMPF - - callDevice - - forceHangUpVoip - - getPluginEnterOptions - - getPluginOnloadOptions - - onVoipEvent - - setCustomBtnText - - setUIConfig - - setVoipEndPagePath - - getIotBindContactList - - 错误码 - - 支付刷脸模式 - - 更新日志 - - 小程序摄像头插件 - - 接入指引 - - 开发安卓设备端应用 - - 小程序音视频通话 SDK - - Linux 设备 - - RTOS 设备 - - 云对云设备端 - - 云对云服务端 - - VoIP 视频流指南 - - 异步接口使用指南 - - 硬件抽象层 - - 用户授权设备 - - 设备呼叫手机微信 - - 手机微信呼叫设备(安卓) - - 手机微信呼叫设备(Linux) - - 性能与体验优化 - - 问题排查 - - 常见问题 FAQ - - 通话异常排查指南 - - 通话提醒异常排查指南 - 下载 安卓小程序硬件框架 - 设备组 - - 需要帮助 -- 开放能力 - - 用户信息 - - 小程序登录 - - UnionID 机制说明 - - 授权 - - 开放数据校验与解密 - - 手机号快速验证组件 - - 手机号实时验证组件 - - 获取头像昵称 - - 生物认证 - - 账户卡片 - - 分享到朋友圈 - - 转发 - - 转发 - - 动态消息 - - 小程序私密消息 - - 收藏 - - 聊天素材打开 - - 聊天工具 - - 用工关系 - - 安全能力 - - 小程序加密网络通道 - - 安全键盘 - - 分享数据到微信运动 - - 音视频通话 - - 多人音视频对话 - - 双人音视频对话 - - 打开 App - - 打开半屏小程序 - - 消息 - - 订阅消息 - - 新版一次性订阅消息开发指南 - - 小程序订阅消息(用户通过弹窗订阅)开发指南 - - 订阅消息语音提醒 - - 订阅消息添加提醒 - - 统一服务消息 - - 客服消息 - - 概述 - - 接收消息和事件 - - 发送消息 - - 转发消息 - - 下发客服输入状态 - - 临时素材 - - 位置消息 - - 获取小程序码 - - 获取小程序链接 - - 获取 URL Scheme - - 获取 URL Link - - 获取 Short Link - - 应用:短信打开小程序 - - 应用:NFC 标签打开小程序 - - 小程序账号迁移 - - 视频号 - - 视频号主页 - - 视频号视频 - - 视频号直播 - - 视频号活动 - - 数据分析 - - 附近的小程序 - - 广告 - - Banner 广告 - - 激励视频广告 - - 插屏广告 - - 视频广告 - - 视频前贴广告 - - 格子广告 - - 原生模板广告 - - 广告预加载接口 - - 广告数据接口 - - 广告汇总数据 - - 广告细分数据 - - 广告位清单 - - 结算收入数据 -- 调试 - - 概述 - - vConsole - - Source Map - - 实时日志 - - Errno错误码 -- 性能与体验 - - 概述 - - 启动性能 - - 概述 - - 小程序启动流程 - - 代码包体积优化 - - 代码注入优化 - - 首屏渲染优化 - - 其他优化建议 - - 运行时性能 - - 概述 - - 合理使用 setData - - 渲染性能优化 - - 页面切换优化 - - 资源加载优化 - - 内存优化 - - 性能数据 - - 性能诊断工具 - - 工具介绍 - - 工具评测标准 - - 体验分析 - - 调试工具 - - 概述 - - 真机调试 2.0 - - 「模拟器」和「调试器」 - - 代码质量分析面板 - - FPS 面板 - - 性能面板 - - 体验评分 - - 体验评分简介 - - 评分方法与规则 - - 评分方法 - - 性能 - - 体验 - - 最佳实践 - - WXWebAssembly - - 接口调用频率规范 - - 网络调优 - - 弱网体验优化 -- 安全指引 - - 开发原则与注意事项 - - 通用 - - 接口鉴权 - - 代码管理与泄漏 - - 信息泄露 - - 授权用户信息变更 - - 小程序违规处罚信息通知 - - 后台 - - 注入漏洞 - - 弱口令 - - 文件上传漏洞 - - 文件下载 - - 目录遍历 - - 条件竞争 -- 健康运营指引 - - 用户隐私保护 - - 用户隐私保护指引填写说明 - - 小程序用户隐私保护指引内容介绍 - - 插件用户隐私保护说明内容介绍 - - 小程序隐私协议开发指南 - - 用户安全解决方案 - - 内容安全解决方案 - - 业务安全解决方案 -- 企业微信兼容 -- 基础库 - - 介绍 - - 版本分布 - - 低版本兼容 -- 小程序搜索 - - 小程序搜索优化指南 - - 商品数据接入(内测) -- PC 小程序 - - PC 小程序接入指南 - -# # 小程序搜索优化指南 - -爬虫访问小程序内页面时,会携带特定的 user-agent "mpcrawler" 及场景值:1129 - -判断请求是否来源于官方搜索爬虫的方法: - -签名算法与小程序消息推送接口的签名算法一致。详情 - -参数在请求的header里设置,分别是: -X-WXApp-Crawler-Timestamp -X-WXApp-Crawler-Nonce -X-WXApp-Crawler-Signature - -签名流程如下: -1.将token、X-WXApp-Crawler-Timestamp、X-WXApp-Crawler-Nonce三个参数进行字典序排序 -2.将三个参数字符串拼接成一个字符串进行sha1加密 -3.开发者获得加密后的字符串可与X-WXApp-Crawler-Signature对比,标识该请求来源于微信 - -## # 1. 小程序里跳转的页面 (url) 可被直接打开。 - -小程序页面内的跳转url是我们爬虫发现页面的重要来源,且搜索引擎召回的结果页面 (url) 是必须能直接打开,不依赖上下文状态的。 -特别的:建议页面所需的参数都包含在url - -## # 2. 页面跳转优先采用navigator组件。 - -小程序提供了两种页面路由方式: -a. navigator 组件 -b. 路由 API,包括 navigateTo / redirectTo / switchTab / navigateBack / reLaunch -建议使用 navigator 组件,若不得不使用API,可在爬虫访问时屏蔽针对点击设置的时间锁或变量锁。 - -## # 3. 清晰简洁的页面参数。 - -结构清晰、简洁、参数有含义的 querystring 对抓取以及后续的分析都有很大帮助,但是将 JSON 数据作为参数的方式是比较糟糕的实现。 - -## # 4. 必要的时候才请求用户进行授权、登录、绑定手机号等。 - -建议在必须的时候才要求用户授权(比如阅读文章可以匿名,而发表评论需要留名)。 - -## # 5. 我们不收录 web-view 中的任何内容。 - -我们暂时做不到这一点,长期来看,我们可能也做不到。 - -## # 6. 设置一个清晰的标题和页面缩略图。 - -页面标题和缩略图对于我们理解页面和提高曝光转化有重要的作用。 -通过 wx.setNavigationBarTitle 或 自定义转发内容 onShareAppMessage 对页面的标题和缩略图设置,另外也为 video、audio 组件补齐 poster / poster-for-crawler 属性。 - -[Tap to report.](javascript:;) - -- 关于腾讯 -- 文档中心 -- 辟谣中心 -- 客服中心 - -Copyright © 2012-2025 Tencent. All Rights Reserved. - -- 1. 小程序里跳转的页面 (url) 可被直接打开。 - -- 2. 页面跳转优先采用navigator组件。 - -- 3. 清晰简洁的页面参数。 - -- 4. 必要的时候才请求用户进行授权、登录、绑定手机号等。 - -- 5. 我们不收录 web-view 中的任何内容。 - -- 6. 设置一个清晰的标题和页面缩略图。 - -- 复制 -- 问题反馈 - -[反馈](javascript:;) diff --git a/generate_icons.py b/scripts/generate_icons.py similarity index 100% rename from generate_icons.py rename to scripts/generate_icons.py diff --git a/mcp.py b/scripts/mcp.py similarity index 100% rename from mcp.py rename to scripts/mcp.py diff --git a/browser-extension/content.css b/src/browser-extension/content.css similarity index 100% rename from browser-extension/content.css rename to src/browser-extension/content.css diff --git a/browser-extension/content.js b/src/browser-extension/content.js similarity index 100% rename from browser-extension/content.js rename to src/browser-extension/content.js diff --git a/browser-extension/icons/icon.svg b/src/browser-extension/icons/icon.svg similarity index 100% rename from browser-extension/icons/icon.svg rename to src/browser-extension/icons/icon.svg diff --git a/browser-extension/icons/icon128.png b/src/browser-extension/icons/icon128.png similarity index 100% rename from browser-extension/icons/icon128.png rename to src/browser-extension/icons/icon128.png diff --git a/browser-extension/icons/icon16.png b/src/browser-extension/icons/icon16.png similarity index 100% rename from browser-extension/icons/icon16.png rename to src/browser-extension/icons/icon16.png diff --git a/browser-extension/icons/icon48.png b/src/browser-extension/icons/icon48.png similarity index 100% rename from browser-extension/icons/icon48.png rename to src/browser-extension/icons/icon48.png diff --git a/browser-extension/manifest.json b/src/browser-extension/manifest.json similarity index 100% rename from browser-extension/manifest.json rename to src/browser-extension/manifest.json diff --git a/browser-extension/popup.html b/src/browser-extension/popup.html similarity index 100% rename from browser-extension/popup.html rename to src/browser-extension/popup.html diff --git a/browser-extension/popup.js b/src/browser-extension/popup.js similarity index 100% rename from browser-extension/popup.js rename to src/browser-extension/popup.js diff --git a/wechat_dev_seo_structured.json b/wechat_dev_seo_structured.json deleted file mode 100644 index 7070e4c..0000000 --- a/wechat_dev_seo_structured.json +++ /dev/null @@ -1,81 +0,0 @@ -[ - { - "type": "heading", - "level": 1, - "content": "#小程序搜索优化指南" - }, - { - "type": "paragraph", - "content": "爬虫访问小程序内页面时,会携带特定的 user-agent \"mpcrawler\" 及场景值:1129" - }, - { - "type": "paragraph", - "content": "判断请求是否来源于官方搜索爬虫的方法:" - }, - { - "type": "paragraph", - "content": "签名算法与小程序消息推送接口的签名算法一致。 详情" - }, - { - "type": "paragraph", - "content": "参数在请求的header里设置,分别是:\nX-WXApp-Crawler-Timestamp\nX-WXApp-Crawler-Nonce\nX-WXApp-Crawler-Signature" - }, - { - "type": "paragraph", - "content": "签名流程如下:\n1.将token、X-WXApp-Crawler-Timestamp、X-WXApp-Crawler-Nonce三个参数进行字典序排序\n2.将三个参数字符串拼接成一个字符串进行sha1加密\n3.开发者获得加密后的字符串可与X-WXApp-Crawler-Signature对比,标识该请求来源于微信" - }, - { - "type": "heading", - "level": 2, - "content": "#1. 小程序里跳转的页面 (url) 可被直接打开。" - }, - { - "type": "paragraph", - "content": "小程序页面内的跳转url是我们爬虫发现页面的重要来源,且搜索引擎召回的结果页面 (url) 是必须能直接打开,不依赖上下文状态的。\n特别的:建议页面所需的参数都包含在url" - }, - { - "type": "heading", - "level": 2, - "content": "#2. 页面跳转优先采用navigator组件。" - }, - { - "type": "paragraph", - "content": "小程序提供了两种页面路由方式: a. navigator 组件 b. 路由 API,包括 navigateTo / redirectTo / switchTab / navigateBack / reLaunch\n建议使用 navigator 组件,若不得不使用API,可在爬虫访问时屏蔽针对点击设置的时间锁或变量锁。" - }, - { - "type": "heading", - "level": 2, - "content": "#3. 清晰简洁的页面参数。" - }, - { - "type": "paragraph", - "content": "结构清晰、简洁、参数有含义的 querystring 对抓取以及后续的分析都有很大帮助,但是将 JSON 数据作为参数的方式是比较糟糕的实现。" - }, - { - "type": "heading", - "level": 2, - "content": "#4. 必要的时候才请求用户进行授权、登录、绑定手机号等。" - }, - { - "type": "paragraph", - "content": "建议在必须的时候才要求用户授权(比如阅读文章可以匿名,而发表评论需要留名)。" - }, - { - "type": "heading", - "level": 2, - "content": "#5. 我们不收录 web-view 中的任何内容。" - }, - { - "type": "paragraph", - "content": "我们暂时做不到这一点,长期来看,我们可能也做不到。" - }, - { - "type": "heading", - "level": 2, - "content": "#6. 设置一个清晰的标题和页面缩略图。" - }, - { - "type": "paragraph", - "content": "页面标题和缩略图对于我们理解页面和提高曝光转化有重要的作用。\n通过 wx.setNavigationBarTitle 或 自定义转发内容 onShareAppMessage 对页面的标题和缩略图设置,另外也为 video、audio 组件补齐 poster / poster-for-crawler 属性。" - } -] \ No newline at end of file