跪求大神,帮助实现一个关键功能:域名隐性跳转(也称为域名掩码或隐形重定向)。具体需求如下:
隐性跳转实现: 所有输入的域名在用户浏览器地址栏中保持不变,但实际内容从目标 URL 加载。 需要处理的域名除了数字英文,还包含特殊字符(如 emoji 、中文、日文等)。 例如,当用户在地址栏访问 1.aaa.com ,服务器基于 API 查询“1.aaa”指向的页面如“bbb”,则跳转目标 URL 为 ccc.com/bbb ,但是地址栏域名不变仍显示 1.aaa.com 。 其他都实现了,就是这个隐性跳转搞不定,ccc.com 不允许跨域访问,没办法代理它的内容。
技术要求: 服务器端技术:nodejs Nginx pm2 代理目标 URL 是基于 API 指向的页面。
![]() |
1
xiaoming1992 2024-08-07 22:41:28 +08:00 via Android
你到底希望显示 bbb 的内容还是 ccc.com/bbb 的内容?
|
![]() |
2
xiaoming1992 2024-08-07 22:42:10 +08:00 via Android
aaa 是你自己的,bbb 和 ccc 不是你自己的,对吧?
|
![]() |
3
ysc3839 2024-08-07 22:53:36 +08:00
稳妥的方案只有用浏览器端 Service Worker 拦截请求,像其他文本替换之类的方案,副作用都太大了。
|
4
CnpPt 2024-08-07 22:56:59 +08:00
好像有 DNS 厂家做过这个功能,实现是网页 iframe😂
|
5
chenxuuu 2024-08-07 23:04:15 +08:00
直接用 nginx 跑个 lua 模块就能实现吧?
https://poe.com/s/SbO790ZFitf1Dogp2ovc |
6
om2mo 2024-08-07 23:10:39 +08:00
nginx 配置 node.js api 转发到 node.js 由它来处理域名隐形跳转
|
![]() |
7
chenzhe 2024-08-07 23:50:06 +08:00
🐎一个学习一下。
|
8
efcndi 2024-08-08 00:09:01 +08:00
很多域名注册商支持域名转发,本身就可以选择这种转发方式,比如 Spaceship 。
|
![]() |
9
pagxir 2024-08-08 07:15:43 +08:00 via Android
反向代理
|
![]() |
10
powerman OP @xiaoming1992 是的,bbb 是一个字段值,ccc.com 是别人的
|
![]() |
12
ericguo 2024-08-08 07:45:06 +08:00
朋友,你这是在做黑产啊!
|
![]() |
14
Qiss 2024-08-08 08:46:00 +08:00 ![]() OP 哪来那么多奇奇怪怪的词,反向代理就是。
|
![]() |
15
rrfeng 2024-08-08 08:55:00 +08:00 via Android
一个 rewrite 指令完事,给我 1000 包教会。
|
![]() |
17
0x5c0f 2024-08-08 09:02:26 +08:00
不是,随便找一个 AI 工具问下就行了
|
18
xxs55 2024-08-08 09:05:53 +08:00
cdn 不就可以了
|
![]() |
19
coolloves 2024-08-08 09:12:09 +08:00
感觉就是反代下就完事了吧
根据需求做一些细节的配置. |
![]() |
20
kissice 2024-08-08 09:12:26 +08:00
下面这样不晓得可以不
```config location / { proxy_cookie_domain ~ ccc.com; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass https://ccc.com/bbb; } ``` |
![]() |
23
sss15 2024-08-08 09:23:45 +08:00
似乎反代只能解决开始的问题,反代回来的 html 里应用的 js 譬如是 http://ccc.com/static/1.js ,这应该是可以加载的,应该没啥大问题
关键问题是 js 里的请求又是 http://ccc.com/api/action 这样的地址,对方网站又是不允许跨域的,他请求回来的网站就没办法正常显示了 |
24
wnpllrzodiac 2024-08-08 09:26:13 +08:00 via Android
这不就是跳板机么。内容是服务器转发给浏览器的吧。如果是 302,浏览器地址会变得
|
![]() |
25
xubeiyou 2024-08-08 09:27:09 +08:00
可能是理解有误 感觉不只是反代- - 一个 rewrite 不够的样子- -
|
26
wnpllrzodiac 2024-08-08 09:27:50 +08:00 via Android
要做完善比较困难,因为页面里面会有静态的访问地址,需要动态改页面内容。这种一般 case by case.可以私我交流下。
|
![]() |
28
xuAN111 2024-08-08 09:53:09 +08:00
你百度搜一下反代,几分钟就会了。
|
![]() |
29
totoro625 2024-08-08 09:53:28 +08:00
@kissice #20 同样的需求+1
proxy_pass 或许 rewrite 会 302 跳转 如果要说具体技术实现的话,在 CDN 里有一个词叫“回源跟随 301/302”: https://cloud.baidu.com/doc/CDN/s/klk80mlnh |
![]() |
30
liuidetmks 2024-08-08 09:54:40 +08:00
浏览器不是吃素的
再说了,人家 js 发请求,请求参数取页面 host ,太多了 巨坑 |
![]() |
31
coolloves 2024-08-08 10:00:18 +08:00
@sss15
所以要看细节,有影响的域名都做下反代.然后用 sub_filter 模块做下内容替换.这样,所有的都是你自己的域名了,什么跨域都不存在的. |
![]() |
32
LoliconInside 2024-08-08 10:12:07 +08:00
您要搜索的是否是:反向代理
|
![]() |
35
xxyang 2024-08-08 11:22:25 +08:00
iframe
|
![]() |
36
sead 2024-08-08 11:25:46 +08:00
|
37
zsh2517 2024-08-08 11:28:59 +08:00
|
![]() |
40
Jianrry 2024-08-08 12:34:28 +08:00 via iPhone
我之前接过 2 个单子,和楼主的需求差不多,通过 nginx 反向代理实现的。
预计工作时间 1-2 个小时,最后两个单子分别收了 50 、100 。 看到楼上的报价之后,我发现报价还有很大的提示空间。 |
![]() |
43
jiangzm 2024-08-08 13:03:14 +08:00
@Jianrry #40 这个要看目标网站内容实现,有点网站不写死域名请求,跟随当前 document domain ,如果这样只是个反向代理了。如果网站内容写死了域名 处理起来就麻烦一点。
|
![]() |
46
Jianrry 2024-08-08 13:56:58 +08:00 via iPhone
|
![]() |
47
zhangjiashu2023 2024-08-08 14:10:34 +08:00
做过,邮箱给我发联系方式 [email protected]
|
49
buffzty 2024-08-08 14:56:10 +08:00
aHR0cDovL2IubXR3LnNvLzVIM1JqYg== 想要这种效果? nginx 配置一下不就好啦
|
51
runlongyao2 2024-08-08 16:40:09 +08:00
其实就是反代
|
![]() |
52
ttlive 2024-08-08 16:45:42 +08:00
不就是反向代理能实现的事情嘛?
|
![]() |
53
xuelu520 2024-08-08 16:48:59 +08:00
iframe 应该是最好的选择
|
54
nevermoreluo 2024-08-08 16:55:32 +08:00
我有点好奇目标域名是什么了,我想自己动手试试,感觉很简单,但是还是想动手试试。
因为都是页面但是差别太大了,静态页面当然随便反代一下就好了,实际上后面的 api 以及跨域怎么搞以及目标网站有没有 waf 之类的怎么搞也是问题吧 |
55
yinmin 2024-08-08 16:57:09 +08:00 via iPhone
@powerman 如果网页用反代,通常是不能变更目录结构的。目标服务器的目录 /info ,你反代的目录也需要/info 不能/ccc/info ,因为很多网页里引用的 js 、css 很多都用绝对路径写的。
|
![]() |
56
EmbraceQWQ 2024-08-08 16:57:23 +08:00
@zsh2517 能给一个隔壁的邀请码吗
|
![]() |
57
powerman OP @zhangjiashu2023 你好已发
|
58
zsh2517 2024-08-08 17:47:35 +08:00
@EmbraceQWQ 隔壁我才一级,发不了。需要二级才能发。
我平常还是 V2EX 刷的多,那边太强调活跃度,不太喜欢这种氛围(比如 “灌水”“前排”)所以看的比较少😂 |
![]() |
59
liuliancao 2024-08-08 17:54:24 +08:00
和楼上差不多 proxy_pass 就好了 但是这样可能会被封掉
|
60
thatlazyman 2024-08-08 18:21:55 +08:00 via Android
类似谷歌镜像站
|
![]() |
61
EmbraceQWQ 2024-08-08 18:24:43 +08:00
@zsh2517 太可惜了,我在隔壁还想水一波
|
62
buffzty 2024-08-08 18:47:45 +08:00
我上面 base64 是个网站 已经把本站给镜像了,配置一下 nginx 和 lua 脚本,几行代码就搞定,可以用子路径反代任意域名 支持绝大多数功能 包括 cookie token.
比如我的网站 a.com, 你访问 a.com/b.com 就是 b 网站,访问 a.com/c.com 就是 c 网站. 此时在 b c 网站点站内链接不会改变 a.com. 如果要子路径不显示都可以 比如 a.com 返回的东西就是 b.com |
![]() |
63
powerman OP 可是我的需求反代的域名和目录都是不固定的,能做吗。
|
65
seeyoy 2024-08-08 19:41:10 +08:00
nginx
proxy_pass 后 sub_filter 了解一下,够用了,可以替换内容 |
66
buffzty 2024-08-08 19:46:05 +08:00
|
![]() |
69
powerman OP @buffzty
正经小工具。 [需求补充如下] 我的网站有点类似镜像站 mirror.com 源站是 example.com 当用户访问 tom.mirror.com ,我用 js 去查询 API:比如 tom.mirror 返回的值是 uid1 ,那对应的源站的二级目录是 example.com/uid1 。 现在需要实现的功能是 用户访问二级域名 tom.mirror.com ,实际指向 example.com/uid1 ,但浏览器地址栏仍然显示 tom.mirror.com 。 tom 和 uid 这些都是会变的,不知道这样讲能理解吗 (特别感谢 V 友 @Jianrry 帮我总结上述需求) |
![]() |
70
powerman OP @buffzty
现在是这样配置的 nginx server { listen 80; server_name *.mirror.com; location / { proxy_pass http://localhost/:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } |
71
buffzty 2024-08-08 20:46:24 +08:00
用户访问 tom.mirror.com 时 应该是后端查询该代理到哪个 url
你这个是一对一的 直接反代都足够了,你反代的时候 tom.mirror.com -> example.com, 再重定向到 tom.mirror.com/uid1 接着修改 反代 resp header 和 body, 遇到 html,js,css 文件修改 example.com url-> tom.mirror.com, 再在 html 文件 顶部注入 js 代码 hook, 比如 hook 网络请求 将所有 example.com->tom.mirror.com.其他的遇到啥 hook 啥 可以 hook 到你跟源站一样 除了域名 |
![]() |
73
dallaslu 2024-08-08 21:40:07 +08:00
@root71370 “申请个域名就可以直接套”,是这样的没错。比如 hostloc.com 就太多套壳站
|
![]() |
74
dallaslu 2024-08-08 21:43:01 +08:00
如果你在用 Cloudflare ,那么可以用 Cloudflare Worker 。跳转规则和页面内容替换逻辑都可以非常简单地用 node 实现。
|
75
mlboy 2024-08-09 07:36:31 +08:00 via iPhone
vx:bG9zdGRhbmNl
|
![]() |
77
ruanimal 2024-08-09 12:03:57 +08:00
别自己瞎定义名词,典型的反向代理,但是你可能需要动态配置
|