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 339b9ab..0000000 Binary files a/browser-extension.zip and /dev/null differ 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