
Security News
GitHub Actions Checkout Now Blocks Risky pull_request_target Checkouts
GitHub Actions checkout now blocks risky pull_request_target checkouts by default to help prevent pwn request supply chain attacks.
@nohost/server
Advanced tools
Nohost 是基于 Whistle 实现的多用户多环境配置及抓包调试系统,不仅具备 Whistle 的所有功能,并在 Whistle 基础上扩展了一些功能,且支持多人多环境同时使用,主要用于部署在公共服务器上供整个部门(公司)的同事共同使用,具有以下功能:

安装 Nohost 之前,建议先做好以下工作:
xxx.key 和 xxx.crt(非必须,但建议用正式的证书,否则要么 Nohost 里面无法查看 HTTPS 的内容,要么每个访问 Nohost 的客户端都要安装一遍根证书)申请域名的好处是可以直接用域名访问管理及账号页面,手机也可以通过域名设置代理访问 Nohost,方便记忆及输入
首先,需要安装Node(建议使用最新的LTS版本):Node
Node安装成功后,通过npm安装 nohost:
npm i -g @nohost/server --registry=https://r.npm.taobao.org
安装完成后执行启动命令:
n2 start
也可以启动时直接设置当前 Nohost 服务到域名
n2 restart -o nohost.imweb.ioNohost 的默认端口为 8080,如果需要自定义端口,可以通过n2 restart -p 80设置。 如果命令行提示没有对应命令,检查下系统环境变量PATH配置,看看 Nohost 安装后生成的命令所在目录是否已添加到PATH。
重启 Nohost:
n2 restart
停止 Nohost:
n2 stop
重置管理员账号:
n2 restart --reset
安装启动成功后,打开管理员页面 http://10.1.2.3:8080/admin.html#system/administrator,输入默认用户名(admin)和密码(123456),打开系统配置后:
其中
10.1.2.3表示Nohost运行的服务器IP,具体根据实际 ServerIP 替换
n2 restart --reset 重置), 分隔,也可以通过启动参数 -o www.xxx.com,www.yyy.com 设置).crt 格式)
Note: 设置的域名 DNS 一定要指向该IP,否则可能出现不可用状态,上述配置会自动重启服务,建议避免频繁操作
Nohost 本身就是一个代理,可以直接配置浏览器或系统代理访问,也可以通过 Nginx反向代理访问,为方便大家使用,针对不同的人群可以使用不同的方案(以下用 nohost.imweb.io 表示 Nohost 的域名,具体域名需要自己申请及设置)。
前端开发建议使用最新版的 Whistle,可以通过以下两种方式访问 Nohost:
直接在 Whistle 上配置远程规则
@http://nohost.imweb.io:8080/whistle.nohost/cgi-bin/plugin-rules
上述配置表示 Whistle 从
http://nohost.imweb.io:8080/whistle.nohost/cgi-bin/plugin-rules获取 Nohost 的生成的入口规则,并且如果 Nohost 规则有变会自动更新规则,这些规则是由 Nohost 上传证书的域名及界面配置/入口配置配置的规则自动生成(具体参见后面的配置),这些规则可以自动过滤掉无关请求,只会把相关的请求转到Nohost。
当然这种直接手动配置在 Whistle 上还不是最好的方式,更建议的方式是把这些规则集成到插件里面,这样开发者只需安装插件即可。
【强烈推荐】 集成 Whistle 插件,具体参考:https://github.com/nohosts/whistle.nohost-imweb/blob/master/dev.md
后台开发推荐使用 Chrome 的 SwitchyOmega 配置代理规则 (如上述代理配置 nohost.imweb.io + 8080),如果不想所有请求都转到 Nohost,可以配置 SwitchyOmega 的自动切换或者用PAC脚本代替,也可以参考 nohost-client 打包一个客户端:https://github.com/nohosts/client。手机端可以直接配代理,或者通过 VPN App 设置代理,如 iPhone 可以用 detour。
非开发人员尽量使用客户端、APP、或通过外网转发的方式,减少他们的接入成本,如何打包客户端参考:https://github.com/nohosts/client;手机等同后台开发的配置方式。
一般 Nohost 是部署在公司内网,外网是不可以直接访问,需要通过接入层(如:Nginx)转发。
安装好插件或配置好代理后,打开相关页面(这些页面的域名必须在上面上传证书里面,如果没有需要额外配置,具体参考下方 配置 说明),即可看到页面左下脚出现一个小圆点,点击小圆点可以进行切换环境:




如果页面左下脚没出现小圆点,可以看下面 配置 说明 第一次打开小圆点只有一个 正式环境,需要管理员添加账号:
添加完账号后,打开独立的环境选择页面 http://nohost.imweb.io:8080:

创建完环境后,可以在环境里面配置任何 Whistle 规则,跟普通到本地 Whistle 功能一模一样,甚至更多。每个实例可以建立上百个账号,每个账号可以建立上百个环境,具体取决于你到机器性能。
默认情况下,只有证书里面域名的请求才会被转发到各个账号,且 html 类型的内容会自动注入小圆点,但在实际应用中你可能会遇到以下问题:
有些域名只涉及 http 请求,不涉及 https 的请求不需要证书,或者某些敏感及第三方域名无法获得证书,这类域名可以通过在 配置 -> 入口配置 里面设置:

入口配置的规则有三种(#xxx表示注释):
pattern #转发到Nohost,如果是html页面则注入小圆点
-pattern #转发到Nohost,不注入小圆点
--pattern #不转发到Nohost,且不注入小圆点
x)-pattern #x为整数(正负数零都可以),表示手动设置优先级,默认为0
pattern 参见:https://wproxy.org/whistle/pattern.html,匹配顺序是从上到下,每个请求只会匹配其中一个,证书里面到域名优先级默认最低,可以通过 1) 设置优先级。
如:
ke.qq.com
-*.url.cn
--localhost.**
-1)**.qq.com
表示:
ke.qq.com 的请求都转发到Nohost,且所有 html 都注入小圆点xxx.url.cn 的请求都转发到Nohost,但不注入小圆点localhost.xxx.yyy... 的请求都不转发到Nohost,且不注入小圆点qq.com 的子代域名请求都转发到Nohost,但不注入小圆点,并优先级设为 -1 ,确保证书里面的 qq.com 子域名可以正常注入小圆点这个是 Nohost 主进程 Whistle,所有请求都会通过该 Whistle,并通过该进程的 whistle.nohost 插件进行账号管理及请求转发,主进程 Whistle 在生产环境下无法查看抓包数据,可用于设置规则及全局插件管理,如:屏蔽一些请求等等,更多内容参见后面的文档。
详细内容参见文档:https://nohost.pro/
开发环境搭建:
git clone git@github.com:Tencent/nohost.git
# 切换到dev开发分支
git checkout dev
# 安装依赖
npm install
# 启动页面构建
npm run dev
# 启动 Nohost
npm start
修改页面后需要手动刷新
欢迎大家加入Nohost交流群。考虑到群二维码有时效限制,请大家扫码加好友,验证回复 Nohost ,会统一将大家拉进群。

如果你有好的意见或建议,欢迎给我们提 Issues 或 Pull Requests,为提升抓包调试体验贡献力量。 腾讯开源激励计划 鼓励开发者的参与和贡献,期待你的加入。
FAQs
Multi-user & multi-env web debugging proxy based on whistle
The npm package @nohost/server receives a total of 110 weekly downloads. As such, @nohost/server popularity was classified as not popular.
We found that @nohost/server demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
GitHub Actions checkout now blocks risky pull_request_target checkouts by default to help prevent pwn request supply chain attacks.

Product
Socket now supports Custom Roles and Repository Access Permissions so organizations can control who can access specific repositories and actions.

Product
Socket MCP now lets AI assistants review org alerts, investigate threats using the Socket threat feed, and inspect package files in addition to dependency scoring.