diff --git a/_docs_src/guide/README.md b/_docs_src/guide/README.md index 4a0e2f8..03bec2e 100644 --- a/_docs_src/guide/README.md +++ b/_docs_src/guide/README.md @@ -33,7 +33,7 @@ sidebar: auto | 操作系统 | 二进制包 | | :----: | :-------------------: | -| winx64 | [微采助手-Setup-x86-0.1.7.exe](https://github.com/lunnlew/weicai-scraper/releases/download/v0.1.7/Setup-x86-0.1.7.exe) | +| winx64 | [微采助手-Setup-x86-0.1.8.exe](https://github.com/lunnlew/weicai-scraper/releases/download/v0.1.8/Setup-x86-0.1.8.exe) | diff --git a/docs/404.html b/docs/404.html index d5a6e6c..498159a 100644 --- a/docs/404.html +++ b/docs/404.html @@ -7,11 +7,11 @@ - +

404

There's nothing here.
Take me home.
- + diff --git a/docs/assets/js/4.c3655745.js b/docs/assets/js/4.b22ca3a7.js similarity index 99% rename from docs/assets/js/4.c3655745.js rename to docs/assets/js/4.b22ca3a7.js index 23a0112..8f54c30 100644 --- a/docs/assets/js/4.c3655745.js +++ b/docs/assets/js/4.b22ca3a7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{193:function(t,e,a){t.exports=a.p+"assets/img/1.fcce54ca.png"},197:function(t,e,a){"use strict";a.r(e);var s=a(0),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"指南"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#指南"}},[t._v("#")]),t._v(" 指南")]),t._v(" "),s("blockquote",[s("p",[t._v("声明!")]),t._v(" "),s("p",[t._v("本项目仅供技术研究及个人学习使用,请勿用于任何商业用途,请勿用于非法用途,如有任何人凭此做任何非法事情,均于作者无关,特此声明。")])]),t._v(" "),s("h2",{attrs:{id:"介绍"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#介绍"}},[t._v("#")]),t._v(" 介绍")]),t._v(" "),s("p",[t._v("微采助手是一个以NodeJs驱动的公众号文章采集工具,为了支持更方便地采集和本地浏览而创建并开源的。\n当你浏览微信公众号发现一个有趣的文章时,你就可以使用它下载该资源以用于本地浏览存储等。\n"),s("img",{attrs:{src:a(193),alt:"1"}})]),t._v(" "),s("h2",{attrs:{id:"支持平台"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#支持平台"}},[t._v("#")]),t._v(" 支持平台")]),t._v(" "),s("p",[t._v("目前仅支持window10 x64")]),t._v(" "),s("h2",{attrs:{id:"功能"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#功能"}},[t._v("#")]),t._v(" 功能")]),t._v(" "),s("ol",[s("li",[t._v("公众号历史文章采集")]),t._v(" "),s("li",[t._v("文章列表查看及搜索,包含标题,发布时间,链接等")]),t._v(" "),s("li",[t._v("支持手动生成文章图片,也支持后台批量生成图片任务模式")]),t._v(" "),s("li",[t._v("文章阅读数,点赞数,赞赏量,评论数采集")]),t._v(" "),s("li",[t._v("文章评论数据采集")]),t._v(" "),s("li",[t._v("公众号列表查看及搜索,包含名称等")]),t._v(" "),s("li",[t._v("简化的采集代理设置操作")])]),t._v(" "),s("h2",{attrs:{id:"安装"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装"}},[t._v("#")]),t._v(" 安装")]),t._v(" "),s("h3",{attrs:{id:"安装包"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装包"}},[t._v("#")]),t._v(" 安装包")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",{staticStyle:{"text-align":"center"}},[t._v("操作系统")]),t._v(" "),s("th",{staticStyle:{"text-align":"center"}},[t._v("二进制包")])])]),t._v(" "),s("tbody",[s("tr",[s("td",{staticStyle:{"text-align":"center"}},[t._v("winx64")]),t._v(" "),s("td",{staticStyle:{"text-align":"center"}},[s("a",{attrs:{href:"https://github.com/lunnlew/weicai-scraper/releases/download/v0.1.7/Setup-x86-0.1.7.exe",target:"_blank",rel:"noopener noreferrer"}},[t._v("微采助手-Setup-x86-0.1.7.exe"),s("OutboundLink")],1)])])])]),t._v(" "),s("h2",{attrs:{id:"使用"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#使用"}},[t._v("#")]),t._v(" 使用")]),t._v(" "),s("h3",{attrs:{id:"使用前设置"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#使用前设置"}},[t._v("#")]),t._v(" 使用前设置")]),t._v(" "),s("div",{staticClass:"language-powershell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-powershell"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## 在powershell(管理员模式)设置执行策略")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## 设置采集代理模式时的脚本动作需要")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Set")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("ExecutionPolicy "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("ExecutionPolicy Unrestricted "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("Scope CurrentUser\n")])])]),s("h3",{attrs:{id:"使用前注意"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#使用前注意"}},[t._v("#")]),t._v(" 使用前注意")]),t._v(" "),s("blockquote",[s("p",[s("strong",[t._v("公众号历史文章列表页不要频繁进行访问刷新,否则会导致提示"),s("code",[t._v("操作频繁")]),t._v("并封禁该接口访问24小时")]),t._v("。")])]),t._v(" "),s("h3",{attrs:{id:"代理模式"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#代理模式"}},[t._v("#")]),t._v(" 代理模式")]),t._v(" "),s("p",[t._v("代理模式是在开启系统代理设置时,通过操作微信客户端访问并拦截内容来达成对"),s("code",[t._v("历史文章列表")]),t._v(","),s("code",[t._v("文章页")]),t._v(","),s("code",[t._v("文章评论数据")]),t._v(","),s("code",[t._v("公众号信息")]),t._v("等采集。")]),t._v(" "),s("ol",[s("li",[s("p",[t._v("如何使用")]),t._v(" "),s("p",[t._v("打开"),s("code",[t._v("微采助手")]),t._v(",进入点击"),s("code",[t._v("开始管理")]),t._v("进入主界面,然后启用"),s("code",[t._v("采集代理")]),t._v("开关即可。")])]),t._v(" "),s("li",[s("p",[t._v("如何采集历史文章页")]),t._v(" "),s("p",[t._v("在处于"),s("code",[t._v("采集代理模式")]),t._v("时,打开你想要采集的公众号的"),s("code",[t._v("历史文章列表")]),t._v("页面即可,注意:首次打开"),s("code",[t._v("历史文章列表")]),t._v("页面的时候,建议等待其完全采集,第二次及以后再次采集时将判断30分钟内采集重复文章次数是否达到3次来决定继续采集。")])]),t._v(" "),s("li",[s("p",[t._v("如何自动采集下一个公众号的历史列表页")]),t._v(" "),s("p",[t._v("在处于"),s("code",[t._v("采集代理模式")]),t._v("时,打开你想要采集的任意一个公众号的"),s("code",[t._v("历史文章列表")]),t._v("页面,会出现操作界面,目前你需要手动选择相应的选项并提交才会进行下一步的采集动作。")])]),t._v(" "),s("li",[s("p",[t._v("如何采集文章评论数据")]),t._v(" "),s("p",[t._v("在处于"),s("code",[t._v("采集代理模式")]),t._v("时,在微信内部浏览器中打开相应的文章即可,目前需要手动从微信中打开链接,如果在其他外部浏览器中打开仅会采集文章的基本信息,不会采集到评论信息")])]),t._v(" "),s("li",[s("p",[t._v("如何采集文章阅读量数据")]),t._v(" "),s("p",[t._v("在处于"),s("code",[t._v("采集代理模式")]),t._v("时,在微信内部浏览器中打开相应的文章即可,目前需要手动从微信中打开链接,如果在其他外部浏览器中打开仅会采集文章的基本信息,不会采集到阅读量信息")])]),t._v(" "),s("li",[s("p",[t._v("如何生成文章的图片以便本地存储和预览")]),t._v(" "),s("p",[t._v("先关闭"),s("code",[t._v("采集代理")]),t._v("开关,然后在软件文章列表页右侧操作"),s("code",[t._v("生成")]),t._v("按钮即可,生成成功后,可以点击"),s("code",[t._v("查看")]),t._v("按钮,浏览生成的文章图片内容。")])]),t._v(" "),s("li",[s("p",[t._v("如何批量生成文章图片")]),t._v(" "),s("p",[t._v("先关闭"),s("code",[t._v("采集代理")]),t._v("开关,然后在软件文章列表页上方启用"),s("code",[t._v("后台文章图片生成任务")]),t._v("开关即可,将会从"),s("code",[t._v("最早发布的未生成图片的文章")]),t._v("开始生成文章图片并存放在个人的主目录下。")])]),t._v(" "),s("li",[s("p",[t._v("无法采集列表页数据")]),t._v(" "),s("p",[t._v("请确认页面是否有操作界面提示信息,如没有可能是代理设置失败问题。可尝试手动将"),s("code",[t._v("127.0.0.1:6879")]),t._v("设置到系统代理并启用。然后刷新页面再次尝试采集。\n多次失败的情况下,建议先关闭软件再重启,然后再启用"),s("code",[t._v("采集代理")]),t._v("开关,及手动设置代理。")])])]),t._v(" "),s("h3",{attrs:{id:"监控模式"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#监控模式"}},[t._v("#")]),t._v(" 监控模式")]),t._v(" "),s("p",[t._v("目前软件支持对微信进行公众号文章推送数据的监控及采集,首先启用"),s("code",[t._v("监控模式")]),t._v(",然后到"),s("code",[t._v("PC微信")]),t._v("界面去点击"),s("code",[t._v("新开微信")]),t._v("按钮,支持多开,每个微信客户端需要不同的账号登录。\n当公众号有推送文章数据过来的时候,软件将会采集处理并展示到软件的文章列表界面。")]),t._v(" "),s("blockquote",[s("p",[t._v("支持列表")])]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",{staticStyle:{"text-align":"center"}},[t._v("wechat")]),t._v(" "),s("th",{staticStyle:{"text-align":"center"}},[t._v("wechatwin.dll")])])]),t._v(" "),s("tbody",[s("tr",[s("td",{staticStyle:{"text-align":"center"}},[t._v("2.7.1.88")]),t._v(" "),s("td",{staticStyle:{"text-align":"center"}},[t._v("2.7.1.88")])]),t._v(" "),s("tr",[s("td",{staticStyle:{"text-align":"center"}},[t._v("2.7.2.76")]),t._v(" "),s("td",{staticStyle:{"text-align":"center"}},[t._v("2.7.2.76")])]),t._v(" "),s("tr",[s("td",{staticStyle:{"text-align":"center"}},[t._v("2.8.0.78")]),t._v(" "),s("td",{staticStyle:{"text-align":"center"}},[t._v("2.7.2.78")])]),t._v(" "),s("tr",[s("td",{staticStyle:{"text-align":"center"}},[t._v("2.8.0.88")]),t._v(" "),s("td",{staticStyle:{"text-align":"center"}},[t._v("2.8.0.88")])])])]),t._v(" "),s("h2",{attrs:{id:"开发"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#开发"}},[t._v("#")]),t._v(" 开发")]),t._v(" "),s("h3",{attrs:{id:"技术栈及语言"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#技术栈及语言"}},[t._v("#")]),t._v(" 技术栈及语言")]),t._v(" "),s("ol",[s("li",[t._v("nodejs")]),t._v(" "),s("li",[t._v("electron")]),t._v(" "),s("li",[t._v("vue")]),t._v(" "),s("li",[t._v("nodejs native addons")]),t._v(" "),s("li",[t._v("c++ dll")]),t._v(" "),s("li",[t._v("powershell")])]),t._v(" "),s("h3",{attrs:{id:"系统开发环境"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#系统开发环境"}},[t._v("#")]),t._v(" 系统开发环境")]),t._v(" "),s("pre",[s("code",[t._v("window10 x64\nnode v12.8.1 32位\npython v2.7\nVisual Studio 2017\n")])]),t._v(" "),s("h3",{attrs:{id:"安装nvm"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装nvm"}},[t._v("#")]),t._v(" 安装nvm")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",{staticStyle:{"text-align":"center"}},[t._v("操作系统")]),t._v(" "),s("th",{staticStyle:{"text-align":"center"}},[t._v("二进制包")])])]),t._v(" "),s("tbody",[s("tr",[s("td",{staticStyle:{"text-align":"center"}},[t._v("win10")]),t._v(" "),s("td",{staticStyle:{"text-align":"center"}},[s("a",{attrs:{href:"https://github.com/coreybutler/nvm/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("nvm-windows"),s("OutboundLink")],1)])])])]),t._v(" "),s("h3",{attrs:{id:"安装nodejs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装nodejs"}},[t._v("#")]),t._v(" 安装Nodejs")]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## 安装nodejs版本")]),t._v("\nnvm "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("12.8")]),t._v(".1 "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("32")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## 指定nodejs版本")]),t._v("\nnvm use "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("12.8")]),t._v(".1 "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("32")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## 查看生效nodejs版本")]),t._v("\nnvm list\nnode -v\n")])])]),s("h3",{attrs:{id:"安装yarn"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装yarn"}},[t._v("#")]),t._v(" 安装yarn")]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("npm")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -g "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v("\n")])])]),s("h3",{attrs:{id:"更新依赖"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#更新依赖"}},[t._v("#")]),t._v(" 更新依赖")]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## 主项目依赖")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## worker依赖")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("cd")]),t._v(" src/worker "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v("\n")])])]),s("h3",{attrs:{id:"安装python-2-7"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装python-2-7"}},[t._v("#")]),t._v(" 安装Python 2.7")]),t._v(" "),s("p",[s("a",{attrs:{href:"https://www.python.org/downloads/release/python-2717/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Python 下载地址"),s("OutboundLink")],1)]),t._v(" "),s("h3",{attrs:{id:"安装visual-studio-2017"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装visual-studio-2017"}},[t._v("#")]),t._v(" 安装Visual Studio 2017")]),t._v(" "),s("p",[s("a",{attrs:{href:"https://visualstudio.microsoft.com/downloads/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Visual Studio 下载地址"),s("OutboundLink")],1)]),t._v(" "),s("h2",{attrs:{id:"下载源码"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#下载源码"}},[t._v("#")]),t._v(" 下载源码")]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("cd")]),t._v(" ~/Desktop\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("git")]),t._v(" clone https://github.com/lunnlew/weicai-scraper.git\n")])])]),s("h2",{attrs:{id:"编译打包"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#编译打包"}},[t._v("#")]),t._v(" 编译打包")]),t._v(" "),s("p",[t._v("以"),s("code",[t._v("Visual Studio 2017")]),t._v("为例,原生模块"),s("code",[t._v("WeChatCtl")]),t._v("、"),s("code",[t._v("WeChatHelper")]),t._v("及"),s("code",[t._v("WeicaiBinding")]),t._v("支持通过ide运行构建及命令行方式运行构建,ide方式运行相应的"),s("code",[t._v("sln")]),t._v("文件即可")]),t._v(" "),s("h3",{attrs:{id:"编译weicaibinding"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#编译weicaibinding"}},[t._v("#")]),t._v(" 编译WeicaiBinding")]),t._v(" "),s("div",{staticClass:"language-cmd extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("# 原始命令\ncd src/native/WeicaiBinding && cross-env HOME=~/.electron-gyp node-gyp configure && cross-env HOME=~/.electron-gyp node-gyp rebuild --target=7.1.3 --runtime=electron --arch=ia32 --dist-url=https://electronjs.org/headers\n\n# 或者项目目录运行\nyarn run native:build-WeicaiBinding-ia32\n\n")])])]),s("h3",{attrs:{id:"编译wechatctl"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#编译wechatctl"}},[t._v("#")]),t._v(" 编译WeChatCtl")]),t._v(" "),s("div",{staticClass:"language-cmd extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v('#命令方式\n##调试版本\n"C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/Common7/IDE/devenv" src/native/WeChatCtl/WeChatCtl.sln /Build "Debug|x86"\n##发布版本版本\n"C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/Common7/IDE/devenv" src/native/WeChatCtl/WeChatCtl.sln /Build "Release|x86"\n\n# 或者项目目录运行构建Release\nyarn run native:build-WeChatCtl\n')])])]),s("h3",{attrs:{id:"编译wechathelper"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#编译wechathelper"}},[t._v("#")]),t._v(" 编译WeChatHelper")]),t._v(" "),s("div",{staticClass:"language-cmd extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v('#命令方式\n##调试版本\n"C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/Common7/IDE/devenv" src/native/WeChatHelper/WeChatHelper.sln /Build "Debug|x86"\n##发布版本版本\n"C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/Common7/IDE/devenv" src/native/WeChatHelper/WeChatHelper.sln /Build "Release|x86"\n\n# 或者项目目录运行构建Release\nyarn run native:build-WeChatHelper\n')])])]),s("h3",{attrs:{id:"运行开发模式"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#运行开发模式"}},[t._v("#")]),t._v(" 运行开发模式")]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" run electron:serve\n")])])]),s("h3",{attrs:{id:"打包主程序"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#打包主程序"}},[t._v("#")]),t._v(" 打包主程序")]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" run electron:build\n")])])]),s("h2",{attrs:{id:"调试远程注入dll"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#调试远程注入dll"}},[t._v("#")]),t._v(" 调试远程注入DLL")]),t._v(" "),s("p",[t._v("以"),s("code",[t._v("WeChatHelper")]),t._v("为例")]),t._v(" "),s("h3",{attrs:{id:"编译wechathelper-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#编译wechathelper-2"}},[t._v("#")]),t._v(" 编译WeChatHelper")]),t._v(" "),s("p",[t._v("参考前文使用"),s("code",[t._v("vs2017")]),t._v("运行项目编译")]),t._v(" "),s("h3",{attrs:{id:"编译detours"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#编译detours"}},[t._v("#")]),t._v(" 编译Detours")]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("cd")]),t._v(" ~/Desktop\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("git")]),t._v(" clone https://github.com/microsoft/Detours.git\n")])])]),s("p",[t._v("运行"),s("code",[t._v("vs2017工具x86 Native Tools Command Prompt for VS 2017")])]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("cd")]),t._v(" ~/Desktop/Detours\nnmake /f Makefile\n")])])]),s("h3",{attrs:{id:"修改原始程序iat"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#修改原始程序iat"}},[t._v("#")]),t._v(" 修改原始程序IAT")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("# 进入要调试的应用主程序\ncd D:/Applications/WeChat\n# 将要调试的dll复制到程序目录\ncp ~/Desktop/weicai-scraper/src/native/WeChatHelper/Debug/WeChatHelper.dll .\ncp ~/Desktop/weicai-scraper/src/native/WeChatHelper/Debug/WeChatHelper.pdb .\n# 修改IAT\n~/Desktop/Detours/bin.X86/setdll.exe /d:WeChatHelper.dll WeChat.exe\n# 恢复IAT\n~/Desktop/Detours/bin.X86/setdll.exe /r WeChat.exe\n\n")])])]),s("h3",{attrs:{id:"配置vs2017的本地调试设置"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#配置vs2017的本地调试设置"}},[t._v("#")]),t._v(" 配置vs2017的本地调试设置")]),t._v(" "),s("p",[t._v("将"),s("code",[t._v("配置属性")]),t._v("-"),s("code",[t._v("调试")]),t._v("-"),s("code",[t._v("本地windows调试")]),t._v(":\n"),s("code",[t._v("命令")]),t._v("改为主程序地址如"),s("code",[t._v("D:/Applications/WeChat/WeChat.exe")]),t._v(";\n"),s("code",[t._v("工作目录")]),t._v("改为主程序目录址如"),s("code",[t._v("D:/Applications/WeChat")])]),t._v(" "),s("h3",{attrs:{id:"运行调试"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#运行调试"}},[t._v("#")]),t._v(" 运行调试")]),t._v(" "),s("p",[t._v("在DLL入口下个断点, 启动调试即可。")]),t._v(" "),s("h2",{attrs:{id:"文档生成"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#文档生成"}},[t._v("#")]),t._v(" 文档生成")]),t._v(" "),s("h3",{attrs:{id:"安装vuepress"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装vuepress"}},[t._v("#")]),t._v(" 安装vuepress")]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("add")]),t._v(" vuepress --dev\n")])])]),s("h3",{attrs:{id:"构建文档"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#构建文档"}},[t._v("#")]),t._v(" 构建文档")]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" run docs:build\n")])])]),s("h2",{attrs:{id:"开源许可"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#开源许可"}},[t._v("#")]),t._v(" 开源许可")]),t._v(" "),s("p",[t._v("基于 "),s("a",{attrs:{href:"https://opensource.org/licenses/MIT",target:"_blank",rel:"noopener noreferrer"}},[t._v("MIT license"),s("OutboundLink")],1),t._v(" 许可进行开源。")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{193:function(t,e,a){t.exports=a.p+"assets/img/1.fcce54ca.png"},198:function(t,e,a){"use strict";a.r(e);var s=a(0),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"指南"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#指南"}},[t._v("#")]),t._v(" 指南")]),t._v(" "),s("blockquote",[s("p",[t._v("声明!")]),t._v(" "),s("p",[t._v("本项目仅供技术研究及个人学习使用,请勿用于任何商业用途,请勿用于非法用途,如有任何人凭此做任何非法事情,均于作者无关,特此声明。")])]),t._v(" "),s("h2",{attrs:{id:"介绍"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#介绍"}},[t._v("#")]),t._v(" 介绍")]),t._v(" "),s("p",[t._v("微采助手是一个以NodeJs驱动的公众号文章采集工具,为了支持更方便地采集和本地浏览而创建并开源的。\n当你浏览微信公众号发现一个有趣的文章时,你就可以使用它下载该资源以用于本地浏览存储等。\n"),s("img",{attrs:{src:a(193),alt:"1"}})]),t._v(" "),s("h2",{attrs:{id:"支持平台"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#支持平台"}},[t._v("#")]),t._v(" 支持平台")]),t._v(" "),s("p",[t._v("目前仅支持window10 x64")]),t._v(" "),s("h2",{attrs:{id:"功能"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#功能"}},[t._v("#")]),t._v(" 功能")]),t._v(" "),s("ol",[s("li",[t._v("公众号历史文章采集")]),t._v(" "),s("li",[t._v("文章列表查看及搜索,包含标题,发布时间,链接等")]),t._v(" "),s("li",[t._v("支持手动生成文章图片,也支持后台批量生成图片任务模式")]),t._v(" "),s("li",[t._v("文章阅读数,点赞数,赞赏量,评论数采集")]),t._v(" "),s("li",[t._v("文章评论数据采集")]),t._v(" "),s("li",[t._v("公众号列表查看及搜索,包含名称等")]),t._v(" "),s("li",[t._v("简化的采集代理设置操作")])]),t._v(" "),s("h2",{attrs:{id:"安装"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装"}},[t._v("#")]),t._v(" 安装")]),t._v(" "),s("h3",{attrs:{id:"安装包"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装包"}},[t._v("#")]),t._v(" 安装包")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",{staticStyle:{"text-align":"center"}},[t._v("操作系统")]),t._v(" "),s("th",{staticStyle:{"text-align":"center"}},[t._v("二进制包")])])]),t._v(" "),s("tbody",[s("tr",[s("td",{staticStyle:{"text-align":"center"}},[t._v("winx64")]),t._v(" "),s("td",{staticStyle:{"text-align":"center"}},[s("a",{attrs:{href:"https://github.com/lunnlew/weicai-scraper/releases/download/v0.1.8/Setup-x86-0.1.8.exe",target:"_blank",rel:"noopener noreferrer"}},[t._v("微采助手-Setup-x86-0.1.8.exe"),s("OutboundLink")],1)])])])]),t._v(" "),s("h2",{attrs:{id:"使用"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#使用"}},[t._v("#")]),t._v(" 使用")]),t._v(" "),s("h3",{attrs:{id:"使用前设置"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#使用前设置"}},[t._v("#")]),t._v(" 使用前设置")]),t._v(" "),s("div",{staticClass:"language-powershell extra-class"},[s("pre",{pre:!0,attrs:{class:"language-powershell"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## 在powershell(管理员模式)设置执行策略")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## 设置采集代理模式时的脚本动作需要")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("Set")]),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("ExecutionPolicy "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("ExecutionPolicy Unrestricted "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("-")]),t._v("Scope CurrentUser\n")])])]),s("h3",{attrs:{id:"使用前注意"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#使用前注意"}},[t._v("#")]),t._v(" 使用前注意")]),t._v(" "),s("blockquote",[s("p",[s("strong",[t._v("公众号历史文章列表页不要频繁进行访问刷新,否则会导致提示"),s("code",[t._v("操作频繁")]),t._v("并封禁该接口访问24小时")]),t._v("。")])]),t._v(" "),s("h3",{attrs:{id:"代理模式"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#代理模式"}},[t._v("#")]),t._v(" 代理模式")]),t._v(" "),s("p",[t._v("代理模式是在开启系统代理设置时,通过操作微信客户端访问并拦截内容来达成对"),s("code",[t._v("历史文章列表")]),t._v(","),s("code",[t._v("文章页")]),t._v(","),s("code",[t._v("文章评论数据")]),t._v(","),s("code",[t._v("公众号信息")]),t._v("等采集。")]),t._v(" "),s("ol",[s("li",[s("p",[t._v("如何使用")]),t._v(" "),s("p",[t._v("打开"),s("code",[t._v("微采助手")]),t._v(",进入点击"),s("code",[t._v("开始管理")]),t._v("进入主界面,然后启用"),s("code",[t._v("采集代理")]),t._v("开关即可。")])]),t._v(" "),s("li",[s("p",[t._v("如何采集历史文章页")]),t._v(" "),s("p",[t._v("在处于"),s("code",[t._v("采集代理模式")]),t._v("时,打开你想要采集的公众号的"),s("code",[t._v("历史文章列表")]),t._v("页面即可,注意:首次打开"),s("code",[t._v("历史文章列表")]),t._v("页面的时候,建议等待其完全采集,第二次及以后再次采集时将判断30分钟内采集重复文章次数是否达到3次来决定继续采集。")])]),t._v(" "),s("li",[s("p",[t._v("如何自动采集下一个公众号的历史列表页")]),t._v(" "),s("p",[t._v("在处于"),s("code",[t._v("采集代理模式")]),t._v("时,打开你想要采集的任意一个公众号的"),s("code",[t._v("历史文章列表")]),t._v("页面,会出现操作界面,目前你需要手动选择相应的选项并提交才会进行下一步的采集动作。")])]),t._v(" "),s("li",[s("p",[t._v("如何采集文章评论数据")]),t._v(" "),s("p",[t._v("在处于"),s("code",[t._v("采集代理模式")]),t._v("时,在微信内部浏览器中打开相应的文章即可,目前需要手动从微信中打开链接,如果在其他外部浏览器中打开仅会采集文章的基本信息,不会采集到评论信息")])]),t._v(" "),s("li",[s("p",[t._v("如何采集文章阅读量数据")]),t._v(" "),s("p",[t._v("在处于"),s("code",[t._v("采集代理模式")]),t._v("时,在微信内部浏览器中打开相应的文章即可,目前需要手动从微信中打开链接,如果在其他外部浏览器中打开仅会采集文章的基本信息,不会采集到阅读量信息")])]),t._v(" "),s("li",[s("p",[t._v("如何生成文章的图片以便本地存储和预览")]),t._v(" "),s("p",[t._v("先关闭"),s("code",[t._v("采集代理")]),t._v("开关,然后在软件文章列表页右侧操作"),s("code",[t._v("生成")]),t._v("按钮即可,生成成功后,可以点击"),s("code",[t._v("查看")]),t._v("按钮,浏览生成的文章图片内容。")])]),t._v(" "),s("li",[s("p",[t._v("如何批量生成文章图片")]),t._v(" "),s("p",[t._v("先关闭"),s("code",[t._v("采集代理")]),t._v("开关,然后在软件文章列表页上方启用"),s("code",[t._v("后台文章图片生成任务")]),t._v("开关即可,将会从"),s("code",[t._v("最早发布的未生成图片的文章")]),t._v("开始生成文章图片并存放在个人的主目录下。")])]),t._v(" "),s("li",[s("p",[t._v("无法采集列表页数据")]),t._v(" "),s("p",[t._v("请确认页面是否有操作界面提示信息,如没有可能是代理设置失败问题。可尝试手动将"),s("code",[t._v("127.0.0.1:6879")]),t._v("设置到系统代理并启用。然后刷新页面再次尝试采集。\n多次失败的情况下,建议先关闭软件再重启,然后再启用"),s("code",[t._v("采集代理")]),t._v("开关,及手动设置代理。")])])]),t._v(" "),s("h3",{attrs:{id:"监控模式"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#监控模式"}},[t._v("#")]),t._v(" 监控模式")]),t._v(" "),s("p",[t._v("目前软件支持对微信进行公众号文章推送数据的监控及采集,首先启用"),s("code",[t._v("监控模式")]),t._v(",然后到"),s("code",[t._v("PC微信")]),t._v("界面去点击"),s("code",[t._v("新开微信")]),t._v("按钮,支持多开,每个微信客户端需要不同的账号登录。\n当公众号有推送文章数据过来的时候,软件将会采集处理并展示到软件的文章列表界面。")]),t._v(" "),s("blockquote",[s("p",[t._v("支持列表")])]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",{staticStyle:{"text-align":"center"}},[t._v("wechat")]),t._v(" "),s("th",{staticStyle:{"text-align":"center"}},[t._v("wechatwin.dll")])])]),t._v(" "),s("tbody",[s("tr",[s("td",{staticStyle:{"text-align":"center"}},[t._v("2.7.1.88")]),t._v(" "),s("td",{staticStyle:{"text-align":"center"}},[t._v("2.7.1.88")])]),t._v(" "),s("tr",[s("td",{staticStyle:{"text-align":"center"}},[t._v("2.7.2.76")]),t._v(" "),s("td",{staticStyle:{"text-align":"center"}},[t._v("2.7.2.76")])]),t._v(" "),s("tr",[s("td",{staticStyle:{"text-align":"center"}},[t._v("2.8.0.78")]),t._v(" "),s("td",{staticStyle:{"text-align":"center"}},[t._v("2.7.2.78")])]),t._v(" "),s("tr",[s("td",{staticStyle:{"text-align":"center"}},[t._v("2.8.0.88")]),t._v(" "),s("td",{staticStyle:{"text-align":"center"}},[t._v("2.8.0.88")])])])]),t._v(" "),s("h2",{attrs:{id:"开发"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#开发"}},[t._v("#")]),t._v(" 开发")]),t._v(" "),s("h3",{attrs:{id:"技术栈及语言"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#技术栈及语言"}},[t._v("#")]),t._v(" 技术栈及语言")]),t._v(" "),s("ol",[s("li",[t._v("nodejs")]),t._v(" "),s("li",[t._v("electron")]),t._v(" "),s("li",[t._v("vue")]),t._v(" "),s("li",[t._v("nodejs native addons")]),t._v(" "),s("li",[t._v("c++ dll")]),t._v(" "),s("li",[t._v("powershell")])]),t._v(" "),s("h3",{attrs:{id:"系统开发环境"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#系统开发环境"}},[t._v("#")]),t._v(" 系统开发环境")]),t._v(" "),s("pre",[s("code",[t._v("window10 x64\nnode v12.8.1 32位\npython v2.7\nVisual Studio 2017\n")])]),t._v(" "),s("h3",{attrs:{id:"安装nvm"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装nvm"}},[t._v("#")]),t._v(" 安装nvm")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",{staticStyle:{"text-align":"center"}},[t._v("操作系统")]),t._v(" "),s("th",{staticStyle:{"text-align":"center"}},[t._v("二进制包")])])]),t._v(" "),s("tbody",[s("tr",[s("td",{staticStyle:{"text-align":"center"}},[t._v("win10")]),t._v(" "),s("td",{staticStyle:{"text-align":"center"}},[s("a",{attrs:{href:"https://github.com/coreybutler/nvm/releases",target:"_blank",rel:"noopener noreferrer"}},[t._v("nvm-windows"),s("OutboundLink")],1)])])])]),t._v(" "),s("h3",{attrs:{id:"安装nodejs"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装nodejs"}},[t._v("#")]),t._v(" 安装Nodejs")]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## 安装nodejs版本")]),t._v("\nnvm "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("12.8")]),t._v(".1 "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("32")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## 指定nodejs版本")]),t._v("\nnvm use "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("12.8")]),t._v(".1 "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("32")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## 查看生效nodejs版本")]),t._v("\nnvm list\nnode -v\n")])])]),s("h3",{attrs:{id:"安装yarn"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装yarn"}},[t._v("#")]),t._v(" 安装yarn")]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("npm")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -g "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v("\n")])])]),s("h3",{attrs:{id:"更新依赖"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#更新依赖"}},[t._v("#")]),t._v(" 更新依赖")]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## 主项目依赖")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v("\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## worker依赖")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("cd")]),t._v(" src/worker "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("&&")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v("\n")])])]),s("h3",{attrs:{id:"安装python-2-7"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装python-2-7"}},[t._v("#")]),t._v(" 安装Python 2.7")]),t._v(" "),s("p",[s("a",{attrs:{href:"https://www.python.org/downloads/release/python-2717/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Python 下载地址"),s("OutboundLink")],1)]),t._v(" "),s("h3",{attrs:{id:"安装visual-studio-2017"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装visual-studio-2017"}},[t._v("#")]),t._v(" 安装Visual Studio 2017")]),t._v(" "),s("p",[s("a",{attrs:{href:"https://visualstudio.microsoft.com/downloads/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Visual Studio 下载地址"),s("OutboundLink")],1)]),t._v(" "),s("h2",{attrs:{id:"下载源码"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#下载源码"}},[t._v("#")]),t._v(" 下载源码")]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("cd")]),t._v(" ~/Desktop\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("git")]),t._v(" clone https://github.com/lunnlew/weicai-scraper.git\n")])])]),s("h2",{attrs:{id:"编译打包"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#编译打包"}},[t._v("#")]),t._v(" 编译打包")]),t._v(" "),s("p",[t._v("以"),s("code",[t._v("Visual Studio 2017")]),t._v("为例,原生模块"),s("code",[t._v("WeChatCtl")]),t._v("、"),s("code",[t._v("WeChatHelper")]),t._v("及"),s("code",[t._v("WeicaiBinding")]),t._v("支持通过ide运行构建及命令行方式运行构建,ide方式运行相应的"),s("code",[t._v("sln")]),t._v("文件即可")]),t._v(" "),s("h3",{attrs:{id:"编译weicaibinding"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#编译weicaibinding"}},[t._v("#")]),t._v(" 编译WeicaiBinding")]),t._v(" "),s("div",{staticClass:"language-cmd extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("# 原始命令\ncd src/native/WeicaiBinding && cross-env HOME=~/.electron-gyp node-gyp configure && cross-env HOME=~/.electron-gyp node-gyp rebuild --target=7.1.3 --runtime=electron --arch=ia32 --dist-url=https://electronjs.org/headers\n\n# 或者项目目录运行\nyarn run native:build-WeicaiBinding-ia32\n\n")])])]),s("h3",{attrs:{id:"编译wechatctl"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#编译wechatctl"}},[t._v("#")]),t._v(" 编译WeChatCtl")]),t._v(" "),s("div",{staticClass:"language-cmd extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v('#命令方式\n##调试版本\n"C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/Common7/IDE/devenv" src/native/WeChatCtl/WeChatCtl.sln /Build "Debug|x86"\n##发布版本版本\n"C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/Common7/IDE/devenv" src/native/WeChatCtl/WeChatCtl.sln /Build "Release|x86"\n\n# 或者项目目录运行构建Release\nyarn run native:build-WeChatCtl\n')])])]),s("h3",{attrs:{id:"编译wechathelper"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#编译wechathelper"}},[t._v("#")]),t._v(" 编译WeChatHelper")]),t._v(" "),s("div",{staticClass:"language-cmd extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v('#命令方式\n##调试版本\n"C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/Common7/IDE/devenv" src/native/WeChatHelper/WeChatHelper.sln /Build "Debug|x86"\n##发布版本版本\n"C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/Common7/IDE/devenv" src/native/WeChatHelper/WeChatHelper.sln /Build "Release|x86"\n\n# 或者项目目录运行构建Release\nyarn run native:build-WeChatHelper\n')])])]),s("h3",{attrs:{id:"运行开发模式"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#运行开发模式"}},[t._v("#")]),t._v(" 运行开发模式")]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" run electron:serve\n")])])]),s("h3",{attrs:{id:"打包主程序"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#打包主程序"}},[t._v("#")]),t._v(" 打包主程序")]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" run electron:build\n")])])]),s("h2",{attrs:{id:"调试远程注入dll"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#调试远程注入dll"}},[t._v("#")]),t._v(" 调试远程注入DLL")]),t._v(" "),s("p",[t._v("以"),s("code",[t._v("WeChatHelper")]),t._v("为例")]),t._v(" "),s("h3",{attrs:{id:"编译wechathelper-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#编译wechathelper-2"}},[t._v("#")]),t._v(" 编译WeChatHelper")]),t._v(" "),s("p",[t._v("参考前文使用"),s("code",[t._v("vs2017")]),t._v("运行项目编译")]),t._v(" "),s("h3",{attrs:{id:"编译detours"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#编译detours"}},[t._v("#")]),t._v(" 编译Detours")]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("cd")]),t._v(" ~/Desktop\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("git")]),t._v(" clone https://github.com/microsoft/Detours.git\n")])])]),s("p",[t._v("运行"),s("code",[t._v("vs2017工具x86 Native Tools Command Prompt for VS 2017")])]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("cd")]),t._v(" ~/Desktop/Detours\nnmake /f Makefile\n")])])]),s("h3",{attrs:{id:"修改原始程序iat"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#修改原始程序iat"}},[t._v("#")]),t._v(" 修改原始程序IAT")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("# 进入要调试的应用主程序\ncd D:/Applications/WeChat\n# 将要调试的dll复制到程序目录\ncp ~/Desktop/weicai-scraper/src/native/WeChatHelper/Debug/WeChatHelper.dll .\ncp ~/Desktop/weicai-scraper/src/native/WeChatHelper/Debug/WeChatHelper.pdb .\n# 修改IAT\n~/Desktop/Detours/bin.X86/setdll.exe /d:WeChatHelper.dll WeChat.exe\n# 恢复IAT\n~/Desktop/Detours/bin.X86/setdll.exe /r WeChat.exe\n\n")])])]),s("h3",{attrs:{id:"配置vs2017的本地调试设置"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#配置vs2017的本地调试设置"}},[t._v("#")]),t._v(" 配置vs2017的本地调试设置")]),t._v(" "),s("p",[t._v("将"),s("code",[t._v("配置属性")]),t._v("-"),s("code",[t._v("调试")]),t._v("-"),s("code",[t._v("本地windows调试")]),t._v(":\n"),s("code",[t._v("命令")]),t._v("改为主程序地址如"),s("code",[t._v("D:/Applications/WeChat/WeChat.exe")]),t._v(";\n"),s("code",[t._v("工作目录")]),t._v("改为主程序目录址如"),s("code",[t._v("D:/Applications/WeChat")])]),t._v(" "),s("h3",{attrs:{id:"运行调试"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#运行调试"}},[t._v("#")]),t._v(" 运行调试")]),t._v(" "),s("p",[t._v("在DLL入口下个断点, 启动调试即可。")]),t._v(" "),s("h2",{attrs:{id:"文档生成"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#文档生成"}},[t._v("#")]),t._v(" 文档生成")]),t._v(" "),s("h3",{attrs:{id:"安装vuepress"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#安装vuepress"}},[t._v("#")]),t._v(" 安装vuepress")]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("add")]),t._v(" vuepress --dev\n")])])]),s("h3",{attrs:{id:"构建文档"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#构建文档"}},[t._v("#")]),t._v(" 构建文档")]),t._v(" "),s("div",{staticClass:"language-sh extra-class"},[s("pre",{pre:!0,attrs:{class:"language-sh"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("yarn")]),t._v(" run docs:build\n")])])]),s("h2",{attrs:{id:"开源许可"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#开源许可"}},[t._v("#")]),t._v(" 开源许可")]),t._v(" "),s("p",[t._v("基于 "),s("a",{attrs:{href:"https://opensource.org/licenses/MIT",target:"_blank",rel:"noopener noreferrer"}},[t._v("MIT license"),s("OutboundLink")],1),t._v(" 许可进行开源。")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/6.a162ba71.js b/docs/assets/js/6.1e78a955.js similarity index 79% rename from docs/assets/js/6.a162ba71.js rename to docs/assets/js/6.1e78a955.js index b97eb8b..a7a8e0c 100644 --- a/docs/assets/js/6.a162ba71.js +++ b/docs/assets/js/6.1e78a955.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{198:function(t,e,n){"use strict";n.r(e);var s=n(0),l=Object(s.a)({},(function(){var t=this.$createElement;return(this._self._c||t)("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}})}),[],!1,null,null,null);e.default=l.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{197:function(t,e,n){"use strict";n.r(e);var s=n(0),l=Object(s.a)({},(function(){var t=this.$createElement;return(this._self._c||t)("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}})}),[],!1,null,null,null);e.default=l.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/app.7a4629ac.js b/docs/assets/js/app.1725c35f.js similarity index 97% rename from docs/assets/js/app.7a4629ac.js rename to docs/assets/js/app.1725c35f.js index 52b4dde..81d4d45 100644 --- a/docs/assets/js/app.7a4629ac.js +++ b/docs/assets/js/app.1725c35f.js @@ -1,4 +1,4 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(t){function e(e){for(var r,a,s=e[0],c=e[1],u=e[2],f=0,p=[];f
'};function o(t,e,n){return tn?n:t}function i(t){return 100*(-1+t)}n.configure=function(t){var e,n;for(e in t)void 0!==(n=t[e])&&t.hasOwnProperty(e)&&(r[e]=n);return this},n.status=null,n.set=function(t){var e=n.isStarted();t=o(t,r.minimum,1),n.status=1===t?null:t;var c=n.render(!e),u=c.querySelector(r.barSelector),l=r.speed,f=r.easing;return c.offsetWidth,a((function(e){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,function(t,e,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+i(t)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+i(t)+"%,0)"}:{"margin-left":i(t)+"%"}).transition="all "+e+"ms "+n,o}(t,l,f)),1===t?(s(c,{transition:"none",opacity:1}),c.offsetWidth,setTimeout((function(){s(c,{transition:"all "+l+"ms linear",opacity:0}),setTimeout((function(){n.remove(),e()}),l)}),l)):setTimeout(e,l)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var t=function(){setTimeout((function(){n.status&&(n.trickle(),t())}),r.trickleSpeed)};return r.trickle&&t(),this},n.done=function(t){return t||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(t){var e=n.status;return e?("number"!=typeof t&&(t=(1-e)*o(Math.random()*e,.1,.95)),e=o(e+t,0,.994),n.set(e)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},t=0,e=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===e&&n.start(),t++,e++,r.always((function(){0==--e?(t=0,n.done()):n.set((t-e)/t)})),this):this},n.render=function(t){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var e=document.createElement("div");e.id="nprogress",e.innerHTML=r.template;var o,a=e.querySelector(r.barSelector),c=t?"-100":i(n.status||0),l=document.querySelector(r.parent);return s(a,{transition:"all 0 linear",transform:"translate3d("+c+"%,0,0)"}),r.showSpinner||(o=e.querySelector(r.spinnerSelector))&&p(o),l!=document.body&&u(l,"nprogress-custom-parent"),l.appendChild(e),e},n.remove=function(){l(document.documentElement,"nprogress-busy"),l(document.querySelector(r.parent),"nprogress-custom-parent");var t=document.getElementById("nprogress");t&&p(t)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var t=document.body.style,e="WebkitTransform"in t?"Webkit":"MozTransform"in t?"Moz":"msTransform"in t?"ms":"OTransform"in t?"O":"";return e+"Perspective"in t?"translate3d":e+"Transform"in t?"translate":"margin"};var a=function(){var t=[];function e(){var n=t.shift();n&&n(e)}return function(n){t.push(n),1==t.length&&e()}}(),s=function(){var t=["Webkit","O","Moz","ms"],e={};function n(n){return n=n.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(t,e){return e.toUpperCase()})),e[n]||(e[n]=function(e){var n=document.body.style;if(e in n)return e;for(var r,o=t.length,i=e.charAt(0).toUpperCase()+e.slice(1);o--;)if((r=t[o]+i)in n)return r;return e}(n))}function r(t,e,r){e=n(e),t.style[e]=r}return function(t,e){var n,o,i=arguments;if(2==i.length)for(n in e)void 0!==(o=e[n])&&e.hasOwnProperty(n)&&r(t,n,o);else r(t,i[1],i[2])}}();function c(t,e){return("string"==typeof t?t:f(t)).indexOf(" "+e+" ")>=0}function u(t,e){var n=f(t),r=n+e;c(n,e)||(t.className=r.substring(1))}function l(t,e){var n,r=f(t);c(t,e)&&(n=r.replace(" "+e+" "," "),t.className=n.substring(1,n.length-1))}function f(t){return(" "+(t.className||"")+" ").replace(/\s+/gi," ")}function p(t){t&&t.parentNode&&t.parentNode.removeChild(t)}return n})?r.call(e,n,e,t):r)||(t.exports=o)},function(t,e){var n="Expected a function",r=NaN,o="[object Symbol]",i=/^\s+|\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,c=/^0o[0-7]+$/i,u=parseInt,l="object"==typeof global&&global&&global.Object===Object&&global,f="object"==typeof self&&self&&self.Object===Object&&self,p=l||f||Function("return this")(),d=Object.prototype.toString,h=Math.max,v=Math.min,m=function(){return p.Date.now()};function y(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function g(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&d.call(t)==o}(t))return r;if(y(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=y(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(i,"");var n=s.test(t);return n||c.test(t)?u(t.slice(2),n?2:8):a.test(t)?r:+t}t.exports=function(t,e,r){var o,i,a,s,c,u,l=0,f=!1,p=!1,d=!0;if("function"!=typeof t)throw new TypeError(n);function _(e){var n=o,r=i;return o=i=void 0,l=e,s=t.apply(r,n)}function b(t){var n=t-u;return void 0===u||n>=e||n<0||p&&t-l>=a}function w(){var t=m();if(b(t))return $(t);c=setTimeout(w,function(t){var n=e-(t-u);return p?v(n,a-(t-l)):n}(t))}function $(t){return c=void 0,d&&o?_(t):(o=i=void 0,s)}function C(){var t=m(),n=b(t);if(o=arguments,i=this,u=t,n){if(void 0===c)return function(t){return l=t,c=setTimeout(w,e),f?_(t):s}(u);if(p)return c=setTimeout(w,e),_(u)}return void 0===c&&(c=setTimeout(w,e)),s}return e=g(e)||0,y(r)&&(f=!!r.leading,a=(p="maxWait"in r)?h(g(r.maxWait)||0,e):a,d="trailing"in r?!!r.trailing:d),C.cancel=function(){void 0!==c&&clearTimeout(c),l=0,o=u=i=c=void 0},C.flush=function(){return void 0===c?s:$(m())},C}},function(t,e,n){t.exports=n(8)},function(t,e,n){Promise.all([n.e(0),n.e(7)]).then(n.t.bind(null,9,7))},function(t,e,n){},function(t,e,n){"use strict";var r=n(1);n.n(r).a},function(t,e,n){"use strict";n.r(e); /*! @@ -11,4 +11,4 @@ var r=Object.freeze({});function o(t){return null==t}function i(t){return null!= * vue-router v3.1.3 * (c) 2019 Evan You * @license MIT - */function Fo(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function Bo(t,e){return e instanceof t||e&&(e.name===t.name||e._name===t._name)}function Vo(t,e){for(var n in e)t[n]=e[n];return t}var Ho={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(t,e){var n=e.props,r=e.children,o=e.parent,i=e.data;i.routerView=!0;for(var a=o.$createElement,s=n.name,c=o.$route,u=o._routerViewCache||(o._routerViewCache={}),l=0,f=!1;o&&o._routerRoot!==o;){var p=o.$vnode&&o.$vnode.data;p&&(p.routerView&&l++,p.keepAlive&&o._inactive&&(f=!0)),o=o.$parent}if(i.routerViewDepth=l,f)return a(u[s],i,r);var d=c.matched[l];if(!d)return u[s]=null,a();var h=u[s]=d.components[s];i.registerRouteInstance=function(t,e){var n=d.instances[s];(e&&n!==t||!e&&n===t)&&(d.instances[s]=e)},(i.hook||(i.hook={})).prepatch=function(t,e){d.instances[s]=e.componentInstance},i.hook.init=function(t){t.data.keepAlive&&t.componentInstance&&t.componentInstance!==d.instances[s]&&(d.instances[s]=t.componentInstance)};var v=i.props=function(t,e){switch(typeof e){case"undefined":return;case"object":return e;case"function":return e(t);case"boolean":return e?t.params:void 0;default:0}}(c,d.props&&d.props[s]);if(v){v=i.props=Vo({},v);var m=i.attrs=i.attrs||{};for(var y in v)h.props&&y in h.props||(m[y]=v[y],delete v[y])}return a(h,i,r)}};var qo=/[!'()*]/g,zo=function(t){return"%"+t.charCodeAt(0).toString(16)},Wo=/%2C/g,Ko=function(t){return encodeURIComponent(t).replace(qo,zo).replace(Wo,",")},Xo=decodeURIComponent;function Jo(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach((function(t){var n=t.replace(/\+/g," ").split("="),r=Xo(n.shift()),o=n.length>0?Xo(n.join("=")):null;void 0===e[r]?e[r]=o:Array.isArray(e[r])?e[r].push(o):e[r]=[e[r],o]})),e):e}function Go(t){var e=t?Object.keys(t).map((function(e){var n=t[e];if(void 0===n)return"";if(null===n)return Ko(e);if(Array.isArray(n)){var r=[];return n.forEach((function(t){void 0!==t&&(null===t?r.push(Ko(e)):r.push(Ko(e)+"="+Ko(t)))})),r.join("&")}return Ko(e)+"="+Ko(n)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var Yo=/\/?$/;function Zo(t,e,n,r){var o=r&&r.options.stringifyQuery,i=e.query||{};try{i=Qo(i)}catch(t){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:ni(e,o),matched:t?ei(t):[]};return n&&(a.redirectedFrom=ni(n,o)),Object.freeze(a)}function Qo(t){if(Array.isArray(t))return t.map(Qo);if(t&&"object"==typeof t){var e={};for(var n in t)e[n]=Qo(t[n]);return e}return t}var ti=Zo(null,{path:"/"});function ei(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function ni(t,e){var n=t.path,r=t.query;void 0===r&&(r={});var o=t.hash;return void 0===o&&(o=""),(n||"/")+(e||Go)(r)+o}function ri(t,e){return e===ti?t===e:!!e&&(t.path&&e.path?t.path.replace(Yo,"")===e.path.replace(Yo,"")&&t.hash===e.hash&&oi(t.query,e.query):!(!t.name||!e.name)&&(t.name===e.name&&t.hash===e.hash&&oi(t.query,e.query)&&oi(t.params,e.params)))}function oi(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var n=Object.keys(t),r=Object.keys(e);return n.length===r.length&&n.every((function(n){var r=t[n],o=e[n];return"object"==typeof r&&"object"==typeof o?oi(r,o):String(r)===String(o)}))}function ii(t,e,n){var r=t.charAt(0);if("/"===r)return t;if("?"===r||"#"===r)return e+t;var o=e.split("/");n&&o[o.length-1]||o.pop();for(var i=t.replace(/^\//,"").split("/"),a=0;a=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}(o.path||""),c=e&&e.path||"/",u=s.path?ii(s.path,c,n||o.append):c,l=function(t,e,n){void 0===e&&(e={});var r,o=n||Jo;try{r=o(t||"")}catch(t){r={}}for(var i in e)r[i]=e[i];return r}(s.query,o.query,r&&r.options.parseQuery),f=o.hash||s.hash;return f&&"#"!==f.charAt(0)&&(f="#"+f),{_normalized:!0,path:u,query:l,hash:f}}var ki,Ai=function(){},Si={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},exact:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,event:{type:[String,Array],default:"click"}},render:function(t){var e=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,s=o.href,c={},u=n.options.linkActiveClass,l=n.options.linkExactActiveClass,f=null==u?"router-link-active":u,p=null==l?"router-link-exact-active":l,d=null==this.activeClass?f:this.activeClass,h=null==this.exactActiveClass?p:this.exactActiveClass,v=a.redirectedFrom?Zo(null,Oi(a.redirectedFrom),null,n):a;c[h]=ri(r,v),c[d]=this.exact?c[h]:function(t,e){return 0===t.path.replace(Yo,"/").indexOf(e.path.replace(Yo,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(r,v);var m=function(t){Ei(t)&&(e.replace?n.replace(i,Ai):n.push(i,Ai))},y={click:Ei};Array.isArray(this.event)?this.event.forEach((function(t){y[t]=m})):y[this.event]=m;var g={class:c},_=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:s,route:a,navigate:m,isActive:c[d],isExactActive:c[h]});if(_){if(1===_.length)return _[0];if(_.length>1||!_.length)return 0===_.length?t():t("span",{},_)}if("a"===this.tag)g.on=y,g.attrs={href:s};else{var b=function t(e){var n;if(e)for(var r=0;r-1&&(s.params[p]=n.params[p]);return s.path=xi(l.path,s.params),c(l,s,a)}if(s.path){s.params={};for(var d=0;d=t.length?n():t[o]?e(t[o],(function(){r(o+1)})):r(o+1)};r(0)}function ta(t){return function(e,n,r){var o=!1,i=0,a=null;ea(t,(function(t,e,n,s){if("function"==typeof t&&void 0===t.cid){o=!0,i++;var c,u=oa((function(e){var o;((o=e).__esModule||ra&&"Module"===o[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:ki.extend(e),n.components[s]=e,--i<=0&&r()})),l=oa((function(t){var e="Failed to resolve async component "+s+": "+t;a||(a=Fo(t)?t:new Error(e),r(a))}));try{c=t(u,l)}catch(t){l(t)}if(c)if("function"==typeof c.then)c.then(u,l);else{var f=c.component;f&&"function"==typeof f.then&&f.then(u,l)}}})),o||r()}}function ea(t,e){return na(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function na(t){return Array.prototype.concat.apply([],t)}var ra="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function oa(t){var e=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var ia=function(t){function e(e){t.call(this),this.name=this._name="NavigationDuplicated",this.message='Navigating to current location ("'+e.fullPath+'") is not allowed',Object.defineProperty(this,"stack",{value:(new t).stack,writable:!0,configurable:!0})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Error);ia._name="NavigationDuplicated";var aa=function(t,e){this.router=t,this.base=function(t){if(!t)if(ji){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(e),this.current=ti,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[]};function sa(t,e,n,r){var o=ea(t,(function(t,r,o,i){var a=function(t,e){"function"!=typeof t&&(t=ki.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map((function(t){return n(t,r,o,i)})):n(a,r,o,i)}));return na(r?o.reverse():o)}function ca(t,e){if(e)return function(){return t.apply(e,arguments)}}aa.prototype.listen=function(t){this.cb=t},aa.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},aa.prototype.onError=function(t){this.errorCbs.push(t)},aa.prototype.transitionTo=function(t,e,n){var r=this,o=this.router.match(t,this.current);this.confirmTransition(o,(function(){r.updateRoute(o),e&&e(o),r.ensureURL(),r.ready||(r.ready=!0,r.readyCbs.forEach((function(t){t(o)})))}),(function(t){n&&n(t),t&&!r.ready&&(r.ready=!0,r.readyErrorCbs.forEach((function(e){e(t)})))}))},aa.prototype.confirmTransition=function(t,e,n){var r=this,o=this.current,i=function(t){!Bo(ia,t)&&Fo(t)&&(r.errorCbs.length?r.errorCbs.forEach((function(e){e(t)})):console.error(t)),n&&n(t)};if(ri(t,o)&&t.matched.length===o.matched.length)return this.ensureURL(),i(new ia(t));var a=function(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n-1?decodeURI(t.slice(0,r))+t.slice(r):decodeURI(t)}else n>-1&&(t=decodeURI(t.slice(0,n))+t.slice(n));return t}function ha(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function va(t){Gi?Yi(ha(t)):window.location.hash=t}function ma(t){Gi?Zi(ha(t)):window.location.replace(ha(t))}var ya=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){e.index=n,e.updateRoute(r)}),(function(t){Bo(ia,t)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(aa),ga=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Ri(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!Gi&&!1!==t.fallback,this.fallback&&(e="hash"),ji||(e="abstract"),this.mode=e,e){case"history":this.history=new ua(this,t.base);break;case"hash":this.history=new fa(this,t.base,this.fallback);break;case"abstract":this.history=new ya(this,t.base);break;default:0}},_a={currentRoute:{configurable:!0}};function ba(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}ga.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},_a.currentRoute.get=function(){return this.history&&this.history.current},ga.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null)})),!this.app){this.app=t;var n=this.history;if(n instanceof ua)n.transitionTo(n.getCurrentLocation());else if(n instanceof fa){var r=function(){n.setupListeners()};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},ga.prototype.beforeEach=function(t){return ba(this.beforeHooks,t)},ga.prototype.beforeResolve=function(t){return ba(this.resolveHooks,t)},ga.prototype.afterEach=function(t){return ba(this.afterHooks,t)},ga.prototype.onReady=function(t,e){this.history.onReady(t,e)},ga.prototype.onError=function(t){this.history.onError(t)},ga.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},ga.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},ga.prototype.go=function(t){this.history.go(t)},ga.prototype.back=function(){this.go(-1)},ga.prototype.forward=function(){this.go(1)},ga.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},ga.prototype.resolve=function(t,e,n){var r=Oi(t,e=e||this.history.current,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?ai(t+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},ga.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==ti&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(ga.prototype,_a),ga.install=function t(e){if(!t.installed||ki!==e){t.installed=!0,ki=e;var n=function(t){return void 0!==t},r=function(t,e){var r=t.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(t,e)};e.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",Ho),e.component("RouterLink",Si);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},ga.version="3.1.3",ji&&window.Vue&&window.Vue.use(ga);var wa=ga;var $a={NotFound:()=>n.e(5).then(n.bind(null,196)),Layout:()=>Promise.all([n.e(0),n.e(2)]).then(n.bind(null,195))},Ca={"v-366c6a4c":()=>n.e(4).then(n.bind(null,197)),"v-457a2439":()=>n.e(6).then(n.bind(null,198))};function xa(t){const e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}const Oa=/-(\w)/g,ka=xa(t=>t.replace(Oa,(t,e)=>e?e.toUpperCase():"")),Aa=/\B([A-Z])/g,Sa=xa(t=>t.replace(Aa,"-$1").toLowerCase()),Ea=xa(t=>t.charAt(0).toUpperCase()+t.slice(1));function ja(t,e){if(!e)return;if(t(e))return t(e);return e.includes("-")?t(Ea(ka(e))):t(Ea(e))||t(Sa(e))}const Ta=Object.assign({},$a,Ca),Pa=t=>Ta[t],Ra=t=>Ca[t],Ia=t=>$a[t],La=t=>Uo.component(t);function Ma(t){return ja(Ra,t)}function Da(t){return ja(Ia,t)}function Na(t){return ja(Pa,t)}function Ua(t){return ja(La,t)}function Fa(...t){return Promise.all(t.filter(t=>t).map(async t=>{if(!Ua(t)&&Na(t)){const e=await Na(t)();Uo.component(t,e.default)}}))}function Ba(t,e){"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[t]=e)}var Va={created(){this.$ssrContext&&(this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.description=this.$page.description||this.$description)},mounted(){this.currentMetaTags=new Set,this.updateMeta()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const t=this.$page.frontmatter.meta||[],e=t.slice(0);0===t.filter(t=>"description"===t.name).length&&e.push({name:"description",content:this.$description});const n=document.querySelectorAll('meta[name="description"]');n.length&&n.forEach(t=>this.currentMetaTags.add(t)),this.currentMetaTags=new Set(Ha(e,this.currentMetaTags))}},watch:{$page(){this.updateMeta()}},beforeDestroy(){Ha(null,this.currentMetaTags)}};function Ha(t,e){if(e&&[...e].forEach(t=>{document.head.removeChild(t)}),t)return t.map(t=>{const e=document.createElement("meta");return Object.keys(t).forEach(n=>{e.setAttribute(n,t[n])}),document.head.appendChild(e),e})}var qa=n(3),za={mounted(){window.addEventListener("scroll",this.onScroll)},methods:{onScroll:n.n(qa)()((function(){this.setActiveHash()}),300),setActiveHash(){const t=[].slice.call(document.querySelectorAll(".sidebar-link")),e=[].slice.call(document.querySelectorAll(".header-anchor")).filter(e=>t.some(t=>t.hash===e.hash)),n=Math.max(window.pageYOffset,document.documentElement.scrollTop,document.body.scrollTop),r=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),o=window.innerHeight+n;for(let t=0;t=i.parentElement.offsetTop+10&&(!a||n{this.$nextTick(()=>{this.$vuepress.$set("disableScrollBehavior",!1)})})}}}},beforeDestroy(){window.removeEventListener("scroll",this.onScroll)}},Wa=n(2),Ka=n.n(Wa),Xa=[Va,za,{mounted(){Ka.a.configure({showSpinner:!1}),this.$router.beforeEach((t,e,n)=>{t.path===e.path||Uo.component(t.name)||Ka.a.start(),n()}),this.$router.afterEach(()=>{Ka.a.done(),this.isSidebarOpen=!1})}}],Ja={methods:{getLayout:function(){if(this.$page.path){var t=this.$page.frontmatter.layout;return t&&(this.$vuepress.getLayoutAsyncComponent(t)||this.$vuepress.getVueComponent(t))?t:"Layout"}return"NotFound"}},computed:{layout:function(){var t=this.getLayout();return Ba("layout",t),Uo.component(t)}}},Ga=n(0),Ya=Object(Ga.a)(Ja,(function(){var t=this.$createElement;return(this._self._c||t)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;!function(t,e,n){switch(e){case"components":t[e]||(t[e]={}),Object.assign(t[e],n);break;case"mixins":t[e]||(t[e]=[]),t[e].push(...n);break;default:throw new Error("Unknown option name.")}}(Ya,"mixins",Xa);const Za=[{name:"v-366c6a4c",path:"/guide/",component:Ya,beforeEnter:(t,e,n)=>{Fa("Layout","v-366c6a4c").then(n)}},{path:"/guide/index.html",redirect:"/guide/"},{name:"v-457a2439",path:"/",component:Ya,beforeEnter:(t,e,n)=>{Fa("Layout","v-457a2439").then(n)}},{path:"/index.html",redirect:"/"},{path:"*",component:Ya}],Qa={title:"微采助手",description:"一个以NodeJs驱动的公众号文章采集工具。",base:"/",pages:[{title:"指南",frontmatter:{sidebar:"auto"},regularPath:"/guide/",relativePath:"guide/README.md",key:"v-366c6a4c",path:"/guide/",headers:[{level:2,title:"介绍",slug:"介绍"},{level:2,title:"支持平台",slug:"支持平台"},{level:2,title:"功能",slug:"功能"},{level:2,title:"安装",slug:"安装"},{level:3,title:"安装包",slug:"安装包"},{level:2,title:"使用",slug:"使用"},{level:3,title:"使用前设置",slug:"使用前设置"},{level:3,title:"使用前注意",slug:"使用前注意"},{level:3,title:"代理模式",slug:"代理模式"},{level:3,title:"监控模式",slug:"监控模式"},{level:2,title:"开发",slug:"开发"},{level:3,title:"技术栈及语言",slug:"技术栈及语言"},{level:3,title:"系统开发环境",slug:"系统开发环境"},{level:3,title:"安装nvm",slug:"安装nvm"},{level:3,title:"安装Nodejs",slug:"安装nodejs"},{level:3,title:"安装yarn",slug:"安装yarn"},{level:3,title:"更新依赖",slug:"更新依赖"},{level:3,title:"安装Python 2.7",slug:"安装python-2-7"},{level:3,title:"安装Visual Studio 2017",slug:"安装visual-studio-2017"},{level:2,title:"下载源码",slug:"下载源码"},{level:2,title:"编译打包",slug:"编译打包"},{level:3,title:"编译WeicaiBinding",slug:"编译weicaibinding"},{level:3,title:"编译WeChatCtl",slug:"编译wechatctl"},{level:3,title:"编译WeChatHelper",slug:"编译wechathelper"},{level:3,title:"运行开发模式",slug:"运行开发模式"},{level:3,title:"打包主程序",slug:"打包主程序"},{level:2,title:"调试远程注入DLL",slug:"调试远程注入dll"},{level:3,title:"编译WeChatHelper",slug:"编译wechathelper-2"},{level:3,title:"编译Detours",slug:"编译detours"},{level:3,title:"修改原始程序IAT",slug:"修改原始程序iat"},{level:3,title:"配置vs2017的本地调试设置",slug:"配置vs2017的本地调试设置"},{level:3,title:"运行调试",slug:"运行调试"},{level:2,title:"文档生成",slug:"文档生成"},{level:3,title:"安装vuepress",slug:"安装vuepress"},{level:3,title:"构建文档",slug:"构建文档"},{level:2,title:"开源许可",slug:"开源许可"}]},{title:"Home",frontmatter:{home:!0,heroImage:"/hellow.png",heroText:"微采助手",tagline:"微信公众号文章采集管理",actionText:"快速上手 →",actionLink:"/guide/"},regularPath:"/",relativePath:"README.md",key:"v-457a2439",path:"/"}],themeConfig:{nav:[{text:"首页",link:"/"},{text:"指南",link:"/guide/"},{text:"GitHub",link:"https://github.com/lunnlew/weicai-scraper/"}]}};n(5);Uo.component("Badge",()=>Promise.all([n.e(0),n.e(3)]).then(n.bind(null,199)));n(6);var ts=[{},({Vue:t})=>{t.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},{}],es=[];class ns{constructor(){this.store=new Uo({data:{state:{}}})}$get(t){return this.store.state[t]}$set(t,e){Uo.set(this.store.state,t,e)}$emit(...t){this.store.$emit(...t)}$on(...t){this.store.$on(...t)}}class rs extends ns{}Object.assign(rs.prototype,{getPageAsyncComponent:Ma,getLayoutAsyncComponent:Da,getAsyncComponent:Na,getVueComponent:Ua});var os={install(t){const e=new rs;t.$vuepress=e,t.prototype.$vuepress=e}};function is(t,e){return t.options.routes.filter(t=>t.path.toLowerCase()===e.toLowerCase()).length>0}var as={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(t){const e=this.pageKey||this.$parent.$page.key;return Ba("pageKey",e),Uo.component(e)||Uo.component(e,Ma(e)),Uo.component(e)?t(e):t("")}},ss={functional:!0,props:{slotKey:String,required:!0},render:(t,{props:e,slots:n})=>t("div",{class:[`content__${e.slotKey}`]},n()[e.slotKey])},cs=(n(7),Object(Ga.a)({},(function(t,e){var n=e._c;return n("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[n("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),e._v(" "),n("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])}),[],!0,null,null,null).exports),us={functional:!0,render(t,{parent:e,children:n}){if(e._isMounted)return n;e.$once("hook:mounted",()=>{e.$forceUpdate()})}};Uo.config.productionTip=!1,Uo.use(wa),Uo.use(os),Uo.mixin(function(t,e,n=Uo){!function(t){t.locales&&Object.keys(t.locales).forEach(e=>{t.locales[e].path=e});Object.freeze(t)}(e),n.$vuepress.$set("siteData",e);const r=new(t(n.$vuepress.$get("siteData"))),o=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(r)),i={};return Object.keys(o).reduce((t,e)=>(e.startsWith("$")&&(t[e]=o[e].get),t),i),{computed:i}}(t=>(class{setPage(t){this.__page=t}get $site(){return t}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:t={}}=this.$site;let e,n;for(const r in t)"/"===r?n=t[r]:0===this.$page.path.indexOf(r)&&(e=t[r]);return e||n||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $title(){const t=this.$page,{metaTitle:e}=this.$page.frontmatter;if("string"==typeof e)return e;const n=this.$siteTitle,r=t.frontmatter.home?null:t.frontmatter.title||t.title;return n?r?r+" | "+n:n:r||"VuePress"}get $description(){const t=function(t){if(t){const e=t.filter(t=>"description"===t.name)[0];if(e)return e.content}}(this.$page.frontmatter.meta);return t||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(t,e){for(let n=0;nn||(t.hash?!Uo.$vuepress.$get("disableScrollBehavior")&&{selector:t.hash}:{x:0,y:0})});!function(t){t.beforeEach((e,n,r)=>{if(is(t,e.path))r();else if(/(\/|\.html)$/.test(e.path))if(/\/$/.test(e.path)){const n=e.path.replace(/\/$/,"")+".html";is(t,n)?r(n):r()}else r();else{const n=e.path+"/",o=e.path+".html";is(t,o)?r(o):is(t,n)?r(n):r()}})}(n);const r={};try{ts.forEach(e=>{"function"==typeof e&&e({Vue:Uo,options:r,router:n,siteData:Qa,isServer:t})})}catch(t){console.error(t)}return{app:new Uo(Object.assign(r,{router:n,render:t=>t("div",{attrs:{id:"app"}},[t("router-view",{ref:"layout"}),t("div",{class:"global-ui"},es.map(e=>t(e)))])})),router:n}}(!1);window.__VUEPRESS__={version:"1.2.0",hash:"1c66c02"},fs.onReady(()=>{ls.$mount("#app")})}]); \ No newline at end of file + */function Fo(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function Bo(t,e){return e instanceof t||e&&(e.name===t.name||e._name===t._name)}function Vo(t,e){for(var n in e)t[n]=e[n];return t}var Ho={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(t,e){var n=e.props,r=e.children,o=e.parent,i=e.data;i.routerView=!0;for(var a=o.$createElement,s=n.name,c=o.$route,u=o._routerViewCache||(o._routerViewCache={}),l=0,f=!1;o&&o._routerRoot!==o;){var p=o.$vnode&&o.$vnode.data;p&&(p.routerView&&l++,p.keepAlive&&o._inactive&&(f=!0)),o=o.$parent}if(i.routerViewDepth=l,f)return a(u[s],i,r);var d=c.matched[l];if(!d)return u[s]=null,a();var h=u[s]=d.components[s];i.registerRouteInstance=function(t,e){var n=d.instances[s];(e&&n!==t||!e&&n===t)&&(d.instances[s]=e)},(i.hook||(i.hook={})).prepatch=function(t,e){d.instances[s]=e.componentInstance},i.hook.init=function(t){t.data.keepAlive&&t.componentInstance&&t.componentInstance!==d.instances[s]&&(d.instances[s]=t.componentInstance)};var v=i.props=function(t,e){switch(typeof e){case"undefined":return;case"object":return e;case"function":return e(t);case"boolean":return e?t.params:void 0;default:0}}(c,d.props&&d.props[s]);if(v){v=i.props=Vo({},v);var m=i.attrs=i.attrs||{};for(var y in v)h.props&&y in h.props||(m[y]=v[y],delete v[y])}return a(h,i,r)}};var qo=/[!'()*]/g,zo=function(t){return"%"+t.charCodeAt(0).toString(16)},Wo=/%2C/g,Ko=function(t){return encodeURIComponent(t).replace(qo,zo).replace(Wo,",")},Xo=decodeURIComponent;function Jo(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach((function(t){var n=t.replace(/\+/g," ").split("="),r=Xo(n.shift()),o=n.length>0?Xo(n.join("=")):null;void 0===e[r]?e[r]=o:Array.isArray(e[r])?e[r].push(o):e[r]=[e[r],o]})),e):e}function Go(t){var e=t?Object.keys(t).map((function(e){var n=t[e];if(void 0===n)return"";if(null===n)return Ko(e);if(Array.isArray(n)){var r=[];return n.forEach((function(t){void 0!==t&&(null===t?r.push(Ko(e)):r.push(Ko(e)+"="+Ko(t)))})),r.join("&")}return Ko(e)+"="+Ko(n)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var Yo=/\/?$/;function Zo(t,e,n,r){var o=r&&r.options.stringifyQuery,i=e.query||{};try{i=Qo(i)}catch(t){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:i,params:e.params||{},fullPath:ni(e,o),matched:t?ei(t):[]};return n&&(a.redirectedFrom=ni(n,o)),Object.freeze(a)}function Qo(t){if(Array.isArray(t))return t.map(Qo);if(t&&"object"==typeof t){var e={};for(var n in t)e[n]=Qo(t[n]);return e}return t}var ti=Zo(null,{path:"/"});function ei(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function ni(t,e){var n=t.path,r=t.query;void 0===r&&(r={});var o=t.hash;return void 0===o&&(o=""),(n||"/")+(e||Go)(r)+o}function ri(t,e){return e===ti?t===e:!!e&&(t.path&&e.path?t.path.replace(Yo,"")===e.path.replace(Yo,"")&&t.hash===e.hash&&oi(t.query,e.query):!(!t.name||!e.name)&&(t.name===e.name&&t.hash===e.hash&&oi(t.query,e.query)&&oi(t.params,e.params)))}function oi(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var n=Object.keys(t),r=Object.keys(e);return n.length===r.length&&n.every((function(n){var r=t[n],o=e[n];return"object"==typeof r&&"object"==typeof o?oi(r,o):String(r)===String(o)}))}function ii(t,e,n){var r=t.charAt(0);if("/"===r)return t;if("?"===r||"#"===r)return e+t;var o=e.split("/");n&&o[o.length-1]||o.pop();for(var i=t.replace(/^\//,"").split("/"),a=0;a=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}(o.path||""),c=e&&e.path||"/",u=s.path?ii(s.path,c,n||o.append):c,l=function(t,e,n){void 0===e&&(e={});var r,o=n||Jo;try{r=o(t||"")}catch(t){r={}}for(var i in e)r[i]=e[i];return r}(s.query,o.query,r&&r.options.parseQuery),f=o.hash||s.hash;return f&&"#"!==f.charAt(0)&&(f="#"+f),{_normalized:!0,path:u,query:l,hash:f}}var ki,Ai=function(){},Si={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},exact:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,event:{type:[String,Array],default:"click"}},render:function(t){var e=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,s=o.href,c={},u=n.options.linkActiveClass,l=n.options.linkExactActiveClass,f=null==u?"router-link-active":u,p=null==l?"router-link-exact-active":l,d=null==this.activeClass?f:this.activeClass,h=null==this.exactActiveClass?p:this.exactActiveClass,v=a.redirectedFrom?Zo(null,Oi(a.redirectedFrom),null,n):a;c[h]=ri(r,v),c[d]=this.exact?c[h]:function(t,e){return 0===t.path.replace(Yo,"/").indexOf(e.path.replace(Yo,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(r,v);var m=function(t){Ei(t)&&(e.replace?n.replace(i,Ai):n.push(i,Ai))},y={click:Ei};Array.isArray(this.event)?this.event.forEach((function(t){y[t]=m})):y[this.event]=m;var g={class:c},_=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:s,route:a,navigate:m,isActive:c[d],isExactActive:c[h]});if(_){if(1===_.length)return _[0];if(_.length>1||!_.length)return 0===_.length?t():t("span",{},_)}if("a"===this.tag)g.on=y,g.attrs={href:s};else{var b=function t(e){var n;if(e)for(var r=0;r-1&&(s.params[p]=n.params[p]);return s.path=xi(l.path,s.params),c(l,s,a)}if(s.path){s.params={};for(var d=0;d=t.length?n():t[o]?e(t[o],(function(){r(o+1)})):r(o+1)};r(0)}function ta(t){return function(e,n,r){var o=!1,i=0,a=null;ea(t,(function(t,e,n,s){if("function"==typeof t&&void 0===t.cid){o=!0,i++;var c,u=oa((function(e){var o;((o=e).__esModule||ra&&"Module"===o[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:ki.extend(e),n.components[s]=e,--i<=0&&r()})),l=oa((function(t){var e="Failed to resolve async component "+s+": "+t;a||(a=Fo(t)?t:new Error(e),r(a))}));try{c=t(u,l)}catch(t){l(t)}if(c)if("function"==typeof c.then)c.then(u,l);else{var f=c.component;f&&"function"==typeof f.then&&f.then(u,l)}}})),o||r()}}function ea(t,e){return na(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function na(t){return Array.prototype.concat.apply([],t)}var ra="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function oa(t){var e=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var ia=function(t){function e(e){t.call(this),this.name=this._name="NavigationDuplicated",this.message='Navigating to current location ("'+e.fullPath+'") is not allowed',Object.defineProperty(this,"stack",{value:(new t).stack,writable:!0,configurable:!0})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Error);ia._name="NavigationDuplicated";var aa=function(t,e){this.router=t,this.base=function(t){if(!t)if(ji){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(e),this.current=ti,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[]};function sa(t,e,n,r){var o=ea(t,(function(t,r,o,i){var a=function(t,e){"function"!=typeof t&&(t=ki.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map((function(t){return n(t,r,o,i)})):n(a,r,o,i)}));return na(r?o.reverse():o)}function ca(t,e){if(e)return function(){return t.apply(e,arguments)}}aa.prototype.listen=function(t){this.cb=t},aa.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},aa.prototype.onError=function(t){this.errorCbs.push(t)},aa.prototype.transitionTo=function(t,e,n){var r=this,o=this.router.match(t,this.current);this.confirmTransition(o,(function(){r.updateRoute(o),e&&e(o),r.ensureURL(),r.ready||(r.ready=!0,r.readyCbs.forEach((function(t){t(o)})))}),(function(t){n&&n(t),t&&!r.ready&&(r.ready=!0,r.readyErrorCbs.forEach((function(e){e(t)})))}))},aa.prototype.confirmTransition=function(t,e,n){var r=this,o=this.current,i=function(t){!Bo(ia,t)&&Fo(t)&&(r.errorCbs.length?r.errorCbs.forEach((function(e){e(t)})):console.error(t)),n&&n(t)};if(ri(t,o)&&t.matched.length===o.matched.length)return this.ensureURL(),i(new ia(t));var a=function(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n-1?decodeURI(t.slice(0,r))+t.slice(r):decodeURI(t)}else n>-1&&(t=decodeURI(t.slice(0,n))+t.slice(n));return t}function ha(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function va(t){Gi?Yi(ha(t)):window.location.hash=t}function ma(t){Gi?Zi(ha(t)):window.location.replace(ha(t))}var ya=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){e.index=n,e.updateRoute(r)}),(function(t){Bo(ia,t)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(aa),ga=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Ri(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!Gi&&!1!==t.fallback,this.fallback&&(e="hash"),ji||(e="abstract"),this.mode=e,e){case"history":this.history=new ua(this,t.base);break;case"hash":this.history=new fa(this,t.base,this.fallback);break;case"abstract":this.history=new ya(this,t.base);break;default:0}},_a={currentRoute:{configurable:!0}};function ba(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}ga.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},_a.currentRoute.get=function(){return this.history&&this.history.current},ga.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null)})),!this.app){this.app=t;var n=this.history;if(n instanceof ua)n.transitionTo(n.getCurrentLocation());else if(n instanceof fa){var r=function(){n.setupListeners()};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},ga.prototype.beforeEach=function(t){return ba(this.beforeHooks,t)},ga.prototype.beforeResolve=function(t){return ba(this.resolveHooks,t)},ga.prototype.afterEach=function(t){return ba(this.afterHooks,t)},ga.prototype.onReady=function(t,e){this.history.onReady(t,e)},ga.prototype.onError=function(t){this.history.onError(t)},ga.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},ga.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},ga.prototype.go=function(t){this.history.go(t)},ga.prototype.back=function(){this.go(-1)},ga.prototype.forward=function(){this.go(1)},ga.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},ga.prototype.resolve=function(t,e,n){var r=Oi(t,e=e||this.history.current,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?ai(t+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},ga.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==ti&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(ga.prototype,_a),ga.install=function t(e){if(!t.installed||ki!==e){t.installed=!0,ki=e;var n=function(t){return void 0!==t},r=function(t,e){var r=t.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(t,e)};e.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",Ho),e.component("RouterLink",Si);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},ga.version="3.1.3",ji&&window.Vue&&window.Vue.use(ga);var wa=ga;var $a={NotFound:()=>n.e(5).then(n.bind(null,196)),Layout:()=>Promise.all([n.e(0),n.e(2)]).then(n.bind(null,195))},Ca={"v-457a2439":()=>n.e(6).then(n.bind(null,197)),"v-366c6a4c":()=>n.e(4).then(n.bind(null,198))};function xa(t){const e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}const Oa=/-(\w)/g,ka=xa(t=>t.replace(Oa,(t,e)=>e?e.toUpperCase():"")),Aa=/\B([A-Z])/g,Sa=xa(t=>t.replace(Aa,"-$1").toLowerCase()),Ea=xa(t=>t.charAt(0).toUpperCase()+t.slice(1));function ja(t,e){if(!e)return;if(t(e))return t(e);return e.includes("-")?t(Ea(ka(e))):t(Ea(e))||t(Sa(e))}const Ta=Object.assign({},$a,Ca),Pa=t=>Ta[t],Ra=t=>Ca[t],Ia=t=>$a[t],La=t=>Uo.component(t);function Ma(t){return ja(Ra,t)}function Da(t){return ja(Ia,t)}function Na(t){return ja(Pa,t)}function Ua(t){return ja(La,t)}function Fa(...t){return Promise.all(t.filter(t=>t).map(async t=>{if(!Ua(t)&&Na(t)){const e=await Na(t)();Uo.component(t,e.default)}}))}function Ba(t,e){"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[t]=e)}var Va={created(){this.$ssrContext&&(this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.description=this.$page.description||this.$description)},mounted(){this.currentMetaTags=new Set,this.updateMeta()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const t=this.$page.frontmatter.meta||[],e=t.slice(0);0===t.filter(t=>"description"===t.name).length&&e.push({name:"description",content:this.$description});const n=document.querySelectorAll('meta[name="description"]');n.length&&n.forEach(t=>this.currentMetaTags.add(t)),this.currentMetaTags=new Set(Ha(e,this.currentMetaTags))}},watch:{$page(){this.updateMeta()}},beforeDestroy(){Ha(null,this.currentMetaTags)}};function Ha(t,e){if(e&&[...e].forEach(t=>{document.head.removeChild(t)}),t)return t.map(t=>{const e=document.createElement("meta");return Object.keys(t).forEach(n=>{e.setAttribute(n,t[n])}),document.head.appendChild(e),e})}var qa=n(3),za={mounted(){window.addEventListener("scroll",this.onScroll)},methods:{onScroll:n.n(qa)()((function(){this.setActiveHash()}),300),setActiveHash(){const t=[].slice.call(document.querySelectorAll(".sidebar-link")),e=[].slice.call(document.querySelectorAll(".header-anchor")).filter(e=>t.some(t=>t.hash===e.hash)),n=Math.max(window.pageYOffset,document.documentElement.scrollTop,document.body.scrollTop),r=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),o=window.innerHeight+n;for(let t=0;t=i.parentElement.offsetTop+10&&(!a||n{this.$nextTick(()=>{this.$vuepress.$set("disableScrollBehavior",!1)})})}}}},beforeDestroy(){window.removeEventListener("scroll",this.onScroll)}},Wa=n(2),Ka=n.n(Wa),Xa=[Va,za,{mounted(){Ka.a.configure({showSpinner:!1}),this.$router.beforeEach((t,e,n)=>{t.path===e.path||Uo.component(t.name)||Ka.a.start(),n()}),this.$router.afterEach(()=>{Ka.a.done(),this.isSidebarOpen=!1})}}],Ja={methods:{getLayout:function(){if(this.$page.path){var t=this.$page.frontmatter.layout;return t&&(this.$vuepress.getLayoutAsyncComponent(t)||this.$vuepress.getVueComponent(t))?t:"Layout"}return"NotFound"}},computed:{layout:function(){var t=this.getLayout();return Ba("layout",t),Uo.component(t)}}},Ga=n(0),Ya=Object(Ga.a)(Ja,(function(){var t=this.$createElement;return(this._self._c||t)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;!function(t,e,n){switch(e){case"components":t[e]||(t[e]={}),Object.assign(t[e],n);break;case"mixins":t[e]||(t[e]=[]),t[e].push(...n);break;default:throw new Error("Unknown option name.")}}(Ya,"mixins",Xa);const Za=[{name:"v-457a2439",path:"/",component:Ya,beforeEnter:(t,e,n)=>{Fa("Layout","v-457a2439").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-366c6a4c",path:"/guide/",component:Ya,beforeEnter:(t,e,n)=>{Fa("Layout","v-366c6a4c").then(n)}},{path:"/guide/index.html",redirect:"/guide/"},{path:"*",component:Ya}],Qa={title:"微采助手",description:"一个以NodeJs驱动的公众号文章采集工具。",base:"/",pages:[{title:"Home",frontmatter:{home:!0,heroImage:"/hellow.png",heroText:"微采助手",tagline:"微信公众号文章采集管理",actionText:"快速上手 →",actionLink:"/guide/"},regularPath:"/",relativePath:"README.md",key:"v-457a2439",path:"/"},{title:"指南",frontmatter:{sidebar:"auto"},regularPath:"/guide/",relativePath:"guide/README.md",key:"v-366c6a4c",path:"/guide/",headers:[{level:2,title:"介绍",slug:"介绍"},{level:2,title:"支持平台",slug:"支持平台"},{level:2,title:"功能",slug:"功能"},{level:2,title:"安装",slug:"安装"},{level:3,title:"安装包",slug:"安装包"},{level:2,title:"使用",slug:"使用"},{level:3,title:"使用前设置",slug:"使用前设置"},{level:3,title:"使用前注意",slug:"使用前注意"},{level:3,title:"代理模式",slug:"代理模式"},{level:3,title:"监控模式",slug:"监控模式"},{level:2,title:"开发",slug:"开发"},{level:3,title:"技术栈及语言",slug:"技术栈及语言"},{level:3,title:"系统开发环境",slug:"系统开发环境"},{level:3,title:"安装nvm",slug:"安装nvm"},{level:3,title:"安装Nodejs",slug:"安装nodejs"},{level:3,title:"安装yarn",slug:"安装yarn"},{level:3,title:"更新依赖",slug:"更新依赖"},{level:3,title:"安装Python 2.7",slug:"安装python-2-7"},{level:3,title:"安装Visual Studio 2017",slug:"安装visual-studio-2017"},{level:2,title:"下载源码",slug:"下载源码"},{level:2,title:"编译打包",slug:"编译打包"},{level:3,title:"编译WeicaiBinding",slug:"编译weicaibinding"},{level:3,title:"编译WeChatCtl",slug:"编译wechatctl"},{level:3,title:"编译WeChatHelper",slug:"编译wechathelper"},{level:3,title:"运行开发模式",slug:"运行开发模式"},{level:3,title:"打包主程序",slug:"打包主程序"},{level:2,title:"调试远程注入DLL",slug:"调试远程注入dll"},{level:3,title:"编译WeChatHelper",slug:"编译wechathelper-2"},{level:3,title:"编译Detours",slug:"编译detours"},{level:3,title:"修改原始程序IAT",slug:"修改原始程序iat"},{level:3,title:"配置vs2017的本地调试设置",slug:"配置vs2017的本地调试设置"},{level:3,title:"运行调试",slug:"运行调试"},{level:2,title:"文档生成",slug:"文档生成"},{level:3,title:"安装vuepress",slug:"安装vuepress"},{level:3,title:"构建文档",slug:"构建文档"},{level:2,title:"开源许可",slug:"开源许可"}]}],themeConfig:{nav:[{text:"首页",link:"/"},{text:"指南",link:"/guide/"},{text:"GitHub",link:"https://github.com/lunnlew/weicai-scraper/"}]}};n(5);Uo.component("Badge",()=>Promise.all([n.e(0),n.e(3)]).then(n.bind(null,199)));n(6);var ts=[{},({Vue:t})=>{t.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},{}],es=[];class ns{constructor(){this.store=new Uo({data:{state:{}}})}$get(t){return this.store.state[t]}$set(t,e){Uo.set(this.store.state,t,e)}$emit(...t){this.store.$emit(...t)}$on(...t){this.store.$on(...t)}}class rs extends ns{}Object.assign(rs.prototype,{getPageAsyncComponent:Ma,getLayoutAsyncComponent:Da,getAsyncComponent:Na,getVueComponent:Ua});var os={install(t){const e=new rs;t.$vuepress=e,t.prototype.$vuepress=e}};function is(t,e){return t.options.routes.filter(t=>t.path.toLowerCase()===e.toLowerCase()).length>0}var as={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(t){const e=this.pageKey||this.$parent.$page.key;return Ba("pageKey",e),Uo.component(e)||Uo.component(e,Ma(e)),Uo.component(e)?t(e):t("")}},ss={functional:!0,props:{slotKey:String,required:!0},render:(t,{props:e,slots:n})=>t("div",{class:[`content__${e.slotKey}`]},n()[e.slotKey])},cs=(n(7),Object(Ga.a)({},(function(t,e){var n=e._c;return n("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[n("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),e._v(" "),n("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])}),[],!0,null,null,null).exports),us={functional:!0,render(t,{parent:e,children:n}){if(e._isMounted)return n;e.$once("hook:mounted",()=>{e.$forceUpdate()})}};Uo.config.productionTip=!1,Uo.use(wa),Uo.use(os),Uo.mixin(function(t,e,n=Uo){!function(t){t.locales&&Object.keys(t.locales).forEach(e=>{t.locales[e].path=e});Object.freeze(t)}(e),n.$vuepress.$set("siteData",e);const r=new(t(n.$vuepress.$get("siteData"))),o=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(r)),i={};return Object.keys(o).reduce((t,e)=>(e.startsWith("$")&&(t[e]=o[e].get),t),i),{computed:i}}(t=>(class{setPage(t){this.__page=t}get $site(){return t}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:t={}}=this.$site;let e,n;for(const r in t)"/"===r?n=t[r]:0===this.$page.path.indexOf(r)&&(e=t[r]);return e||n||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $title(){const t=this.$page,{metaTitle:e}=this.$page.frontmatter;if("string"==typeof e)return e;const n=this.$siteTitle,r=t.frontmatter.home?null:t.frontmatter.title||t.title;return n?r?r+" | "+n:n:r||"VuePress"}get $description(){const t=function(t){if(t){const e=t.filter(t=>"description"===t.name)[0];if(e)return e.content}}(this.$page.frontmatter.meta);return t||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(t,e){for(let n=0;nn||(t.hash?!Uo.$vuepress.$get("disableScrollBehavior")&&{selector:t.hash}:{x:0,y:0})});!function(t){t.beforeEach((e,n,r)=>{if(is(t,e.path))r();else if(/(\/|\.html)$/.test(e.path))if(/\/$/.test(e.path)){const n=e.path.replace(/\/$/,"")+".html";is(t,n)?r(n):r()}else r();else{const n=e.path+"/",o=e.path+".html";is(t,o)?r(o):is(t,n)?r(n):r()}})}(n);const r={};try{ts.forEach(e=>{"function"==typeof e&&e({Vue:Uo,options:r,router:n,siteData:Qa,isServer:t})})}catch(t){console.error(t)}return{app:new Uo(Object.assign(r,{router:n,render:t=>t("div",{attrs:{id:"app"}},[t("router-view",{ref:"layout"}),t("div",{class:"global-ui"},es.map(e=>t(e)))])})),router:n}}(!1);window.__VUEPRESS__={version:"1.2.0",hash:"7cdb4cd"},fs.onReady(()=>{ls.$mount("#app")})}]); \ No newline at end of file diff --git a/docs/guide/index.html b/docs/guide/index.html index 3a527a4..84754a7 100644 --- a/docs/guide/index.html +++ b/docs/guide/index.html @@ -7,7 +7,7 @@ - + @@ -17,7 +17,7 @@ GitHub

# 指南

声明!

本项目仅供技术研究及个人学习使用,请勿用于任何商业用途,请勿用于非法用途,如有任何人凭此做任何非法事情,均于作者无关,特此声明。

# 介绍

微采助手是一个以NodeJs驱动的公众号文章采集工具,为了支持更方便地采集和本地浏览而创建并开源的。 当你浏览微信公众号发现一个有趣的文章时,你就可以使用它下载该资源以用于本地浏览存储等。 -1

# 支持平台

目前仅支持window10 x64

# 功能

  1. 公众号历史文章采集
  2. 文章列表查看及搜索,包含标题,发布时间,链接等
  3. 支持手动生成文章图片,也支持后台批量生成图片任务模式
  4. 文章阅读数,点赞数,赞赏量,评论数采集
  5. 文章评论数据采集
  6. 公众号列表查看及搜索,包含名称等
  7. 简化的采集代理设置操作

# 安装

# 安装包

操作系统 二进制包
winx64 微采助手-Setup-x86-0.1.7.exe

# 使用

# 使用前设置

## 在powershell(管理员模式)设置执行策略
+1

# 支持平台

目前仅支持window10 x64

# 功能

  1. 公众号历史文章采集
  2. 文章列表查看及搜索,包含标题,发布时间,链接等
  3. 支持手动生成文章图片,也支持后台批量生成图片任务模式
  4. 文章阅读数,点赞数,赞赏量,评论数采集
  5. 文章评论数据采集
  6. 公众号列表查看及搜索,包含名称等
  7. 简化的采集代理设置操作

# 安装

# 安装包

操作系统 二进制包
winx64 微采助手-Setup-x86-0.1.8.exe

# 使用

# 使用前设置

## 在powershell(管理员模式)设置执行策略
 ## 设置采集代理模式时的脚本动作需要
 Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
 

# 使用前注意

公众号历史文章列表页不要频繁进行访问刷新,否则会导致提示操作频繁并封禁该接口访问24小时

# 代理模式

代理模式是在开启系统代理设置时,通过操作微信客户端访问并拦截内容来达成对历史文章列表文章页文章评论数据公众号信息等采集。

  1. 如何使用

    打开微采助手,进入点击开始管理进入主界面,然后启用采集代理开关即可。

  2. 如何采集历史文章页

    在处于采集代理模式时,打开你想要采集的公众号的历史文章列表页面即可,注意:首次打开历史文章列表页面的时候,建议等待其完全采集,第二次及以后再次采集时将判断30分钟内采集重复文章次数是否达到3次来决定继续采集。

  3. 如何自动采集下一个公众号的历史列表页

    在处于采集代理模式时,打开你想要采集的任意一个公众号的历史文章列表页面,会出现操作界面,目前你需要手动选择相应的选项并提交才会进行下一步的采集动作。

  4. 如何采集文章评论数据

    在处于采集代理模式时,在微信内部浏览器中打开相应的文章即可,目前需要手动从微信中打开链接,如果在其他外部浏览器中打开仅会采集文章的基本信息,不会采集到评论信息

  5. 如何采集文章阅读量数据

    在处于采集代理模式时,在微信内部浏览器中打开相应的文章即可,目前需要手动从微信中打开链接,如果在其他外部浏览器中打开仅会采集文章的基本信息,不会采集到阅读量信息

  6. 如何生成文章的图片以便本地存储和预览

    先关闭采集代理开关,然后在软件文章列表页右侧操作生成按钮即可,生成成功后,可以点击查看按钮,浏览生成的文章图片内容。

  7. 如何批量生成文章图片

    先关闭采集代理开关,然后在软件文章列表页上方启用后台文章图片生成任务开关即可,将会从最早发布的未生成图片的文章开始生成文章图片并存放在个人的主目录下。

  8. 无法采集列表页数据

    请确认页面是否有操作界面提示信息,如没有可能是代理设置失败问题。可尝试手动将127.0.0.1:6879设置到系统代理并启用。然后刷新页面再次尝试采集。 @@ -86,6 +86,6 @@ 工作目录改为主程序目录址如D:/Applications/WeChat

    # 运行调试

    在DLL入口下个断点, 启动调试即可。

    # 文档生成

    # 安装vuepress

    yarn add vuepress --dev
     

    # 构建文档

    yarn run docs:build
     

    # 开源许可

    基于 MIT license 许可进行开源。

- + diff --git a/docs/index.html b/docs/index.html index 8c0dfac..7d298a9 100644 --- a/docs/index.html +++ b/docs/index.html @@ -7,7 +7,7 @@ - + @@ -18,6 +18,6 @@
hero

微采助手

微信公众号文章采集管理

快速上手 →

- + diff --git a/package.json b/package.json index 112a7e9..16b5958 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "weicai-scraper", - "version": "0.1.7", + "version": "0.1.8", "description": "One wechat scraper", "private": true, "scripts": {