Open lfire opened 1 year ago
根目录为 /.whistle-path.5b6af7b9884e1165/
的 url 为 whistle 的内部请求,只能匹配 proxy 等一些特殊规则
@avwo 我所做的操作主要是第5行的规则注释了,也就代表,不再使用nohost的规则注入。
另外,我配置了一个第7行这样的规则,我理解是,这时候已经与nohost没有任何关系了。
我需要达成的目标是,这样的一个规则:/.*\/whistle\.nohost\/cgi-bin\/list(.*)/i
,我在whistle中,能进行不同的指向配置,这里不一定就是指到我上面第7行的位置,可以是任意的一个想去的位置,如:https://www.qq.com
那第7行的规则就可以是:/.*\/whistle\.nohost\/cgi-bin\/list(.*)/i https://www.qq.com
这时候当我访问一个符合规则的链接时(在开启代理的情况下),如:http://localhost:15000/.whistle-path.5b6af709884e1165/whistle.nohost/cgi-bin/list?_=1682495486094
可以看到如下结果:
但问题在于,当我访问的链接是:http://localhost:15000/.whistle-path.5b6af7b9884e1165/whistle.nohost/cgi-bin/list?_=1682495486094 ,其中只是将af70
=>af7b
,替换了一个字母而已,得到的结果确是代理失败,如下:
这两个链接的对应的代理规则没有任何区别,怀疑的点只在于,5b6af7b9884e1165
这个特殊的字符串,曾出现在nohost的注入规则中,(现在这个注入规则,第5行是注释掉的),这也是为什么我说,whistle的自有规则受到了nohost曾经的注入规则影响。
在我的理解中,第5行注释后,nohost的规则应该是不会再注入,也不会影响到whistle的正常使用。
简单说下你要实现什么功能?
两个端: nohost服务端 & whistle本地端,两个所在的网络不在一个局域网。 通过whistle配置,希望可以在以localhost的方式注入小圆点,这样可以实现环境切换。但因为nohost的入口规则并不支持这样的配置,因此希望可以通过whistle的本地化配置来实现nohost的自动规则注入能力。
问题是,我手工在whistle中配置这些规则时,发现nohost的注入规则,在注释移除后,好像还在生效,导致自己手动配置的whistle规则不生效。
试试 * internal-proxy://host:port excludeFilter://*/.whistle-path.5b6af7b9884e1165/
试试
* internal-proxy://host:port excludeFilter://*/.whistle-path.5b6af7b9884e1165/
加上了这个配置,但依然是失败的
nohost的接入方式是参考:https://nohost.pro/docs/developer/usage
@http://{nohost ip|domain}:8080/whistle.nohost/cgi-bin/plugin-rules
在我的示例中,目前猜测是受如下规则的影响:
*/.whistle-path.5b6af7b9884e1165/ ignore://-proxy|-host reqHeaders://whistleInternalHost=local.whistlejs.com enable://proxyTunnel
其在nohost端的作用,本身是为了注入小原点设计的。 但当我把本地的接入规则注释后,即
# @http://{nohost ip|domain}:8080/whistle.nohost/cgi-bin/plugin-rules
再额外配置一条规则时,如下图:![image](https://user-images.githubusercontent.com/2528719/234593363-d1d9f898-b4f7-4558-8f34-68528e9c0e7b.png)
第7行的规则,
/.*\/whistle\.nohost\/cgi-bin\/list(.*)/i https://proxy.xxx.xxx.com:444/whistle/plugin.nohost/cgi-bin/list$1 resCors://*
其目的是希望自己实现一个小圆点的注入,这样就能支持localhost或是其他任意域名下的小圆点注入,访问链接如:http://localhost:15000/.whistle-path.5b6af7b9884e1165/whistle.nohost/cgi-bin/list?_=1682495486094
而当我访问上续链接时,会发现一直不能代理成功,返回 404,而当我稍微修改一下链接中的
5b6af7b9884e1165
,修改为:5b6af709884e1165
,发现则可以正常访问,并代理成功,如下图:目前我尝试过全系统查找带有
5b6af7b9884e1165
字符的文件,我猜测是否是规则缓存导致,但我没能找到,现在不知道具体的原因,只是高度怀疑是上面提到的那个注入规则影响了whistle的代理能力。求大佬解答