首页 > 其他分享 >使用内网云+GitHub Pages免费部署动态网站

使用内网云+GitHub Pages免费部署动态网站

时间:2024-07-15 12:09:08浏览次数:13  
标签:网云 GitHub IP 域名 IPv6 Pages

目录

一、失败的经历

1.花生壳

2. nat123

3. 网云穿

4. cpolar

5. ngrok

6.金万维快解析

7.神卓互联

8.内网云(neiwangyun.net)

9.localhost.run

10.GitHub Pages(pages.github.com)

11.IPv6

12.IPv6+GitHub Pages

13.FRP

14.nps

二、终极方案:内网云+GitHub Pages

一、失败的经历
相信很多人都想搭建网站吧。但是,搭建网站不光得自己访问,还能让别人也能访问。

但是我们家里的设备一般深处内网,无法实现外网访问。

于是,很多人会在网上找各种各样的“内网穿透”软件,并尝试,但是没有一个能如愿。

我也是一样的,接下来,我给大家分享一下我失败的尝试。

1.花生壳
网上很多人推荐。结果安装了一下,发现几乎所有功能都要收费。直接放弃。

2. nat123
说免费,但是速度贼慢。关键是有一次我配置错了,想改,它告诉我需要什么N币,我搜怎么获取,答:花钱!我才意识到,这个软件说免费,其实是骗人的!果断放弃。

3. 网云穿
我的天啊,账号都注册不了,报错Unknown error (-1),在登录页面无限刷新。放弃。

4. cpolar
说很稳定,想尝试一下。结果它告诉我域名每24小时变一次!这样的网站有什么用!

5. ngrok
跟cpolar一样。

6.金万维快解析
用了一个月,不错!能自定义二级子域名!(喜)结果有一天突然无法访问(详情见这篇问答),然后就放弃了。太不稳定了!

7.神卓互联
跟花生壳一样。

8.内网云(neiwangyun.net)
非常简单,直接SSH就行了。但也是不支持自定义二级子域名。

9.localhost.run
同内网云。

(关于内网云和localhost.run,我发布了一篇问答,感谢大家回答。)

10.GitHub Pages(pages.github.com)
只能部署静态网站。

 

放弃放弃。

11.IPv6
据说移动给咱们都分配了IPv6的公网IP,我高兴得不得了!

可惜,移动分配的IP是动态的。

 

等等!前面不是讲了GitHub Pages吗!!!

12.IPv6+GitHub Pages
我写了个程序,不断把IPv6公网IP给Push到GitHub仓库里,然后对GitHub仓库开通GitHub Pages服务,然后你只要访问了GitHub Pages,就会自动查询IP,然后跳转到这个IP。(具体源码请参阅https://github.com/bjsdfz17ban/webddns)

我检查了一下,我的IPv6 IP是2409开头的,网上告诉我是公网IP。我访问了一下,没问题。

(大喜)

……

直到有一天,我做了一个游戏,给同学们玩。

同学A:你这个网站怎么访问不了啊?

我:?是不是你的问题?

同学B:我也访问不了

我:???你换个浏览器试试

同学A:换浏览器也不行

我:

一脸懵逼

二脸懵逼

五脸懵逼

十脸懵逼

百脸懵逼

万脸懵逼

亿脸懵逼

公网IP居然还访问不了!!!服了!!!

13.FRP
不少人推荐,结果它说要一台公网IP的服务器!!!我服了,我都有公网IP了,还用锤子的内穿透!!!

 

(图片出处:https://zhuanlan.zhihu.com/p/437319496)

14.nps
同FRP。

二、终极方案:内网云+GitHub Pages
我开始仔细回忆失败过的方案……

突然,我想起了那些域名随机变化的内网穿透软件。这不是跟IPv6的动态IP是一样的吗?既然IPv6动态IP能用GitHub Pages解决,那么动态域名也能这么解决啊!!!!

于是,我很快确定了一个大体思路:找到那些很稳定且没有什么限制,但是域名随机变化的内网穿透软件(cpolar、内网云……),然后写程序破解它们的客户端,获取到那个域名,存到文件里,最后把文件push到GitHub上,再部署GitHub Pages。接着,照常用GitHub Pages部署静态网页,表面上看是静态页面,但是一个网页如果要访问后台,只需要查询一下那个文件,就可以获取到后台的域名了。再向后台发送ajax请求,就可以与后台交互了。(看不懂没关系,接下来有更具体的讲解)

最终,我选择了“内网云”作为最终的内网穿透软件。因为“内网云”使用SSH作为客户端,比较容易破解到那个随机变化的域名。

具体的部署过程如下:

1.在GitHub上创建一个仓库。
2.对仓库部署GitHub Pages。
3.启动SSH,连接内网云的服务器,并且将输出结果重定向到文件A(SSH的输出结果包含了那个随机域名)。
4.通过C语言,在文件A里找到随机域名(实现细节略),并输出到另一个文件B。
5.将文件B push到GitHub仓库中。
6.在后台服务器上重复步骤3~5。
7.写一个静态网页(HTML)。
8.这个网页每当需要与后台交互时,就去读取文件B的内容(通过ajax)。
9.获取到后台的域名后,就可以与后台交互了(还是用ajax)。
10.将网页Push到GitHub仓库中。
这样,就可以一分钱不花,免费部署一个动态网站,并实现外网访问。

如果有没理解的内容,欢迎评论区交流!

三、代码实现
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
char cmd0[4096],cmd1[4096],cmd2[4096];
char tmp0[4096];
int main(int argc,char **argv){
if (argc != 6){
printf("Usage: openlpl <http|https|ipport> <port> <file> <remote> <git-branch>\n");
printf("Example: openlpl https 80 80.txt origin master\n");
return 0;
}
char *mode = argv[1];
char *port = argv[2];
char *dir = ".";
char *file = argv[3];
char *rem = argv[4];
char *br = argv[5];
sprintf(tmp0,"cd %s",dir);
system(tmp0);
sprintf(cmd0,"ssh -R 80:localhost:%s [email protected] > .%s.tmp 2> /dev/null",port,file);
sprintf(cmd1,"cat .%s.tmp | grep %s | grep -v tunnel | awk '{print $3}' > %s",file,mode,file);
sprintf(cmd2,"git add . && git commit -m \"changed domain\" && git push %s %s",rem,br);
while (1){
if (fork() == 0){
system(cmd0);
return 0;
}
sleep(5);
system(cmd1);
system(cmd2);
wait(NULL);
}
return 0;
}
将这个文件存储为openlpl.c(OpenLPL: Open Local Port Locating,开源的本地端口定位服务)

然后编译:

gcc openlpl.c -o openlpl
运行:

./openlpl <协议类型 http|https|ipport> <端口> <存放域名的文件> <仓库地址> <仓库分支>
例如:

./openlpl https 80 80.txt [email protected]:name/repo.git master
这段代码会将80端口穿透到外网,并不断地把生成的随机地址Push到[email protected]:name/repo.git的master分支。
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/nnKevi/article/details/128822955

标签:网云,GitHub,IP,域名,IPv6,Pages
From: https://www.cnblogs.com/xiongwei/p/18302910

相关文章

  • GitHub每日最火火火项目(7.13)
    项目名称:public-apis/public-apis项目介绍:这是一个集体列出的免费APIs项目。它可能为开发者提供了一个便捷的资源,汇集了各种免费的API,有助于开发者在开发过程中快速找到所需的接口,节省时间和精力。通过使用这些免费的API,开发者可以丰富自己的应用功能,提升用户体......
  • GitHub每日最火火火项目(7.12)
    项目名称:public-apis/public-apis项目介绍:这是一个集体列表,包含了各种免费的API。该项目可能致力于收集和整理不同领域的免费API,为开发者提供便利,使其能够更轻松地获取所需的数据和功能。通过使用这些免费的API,开发者可以节省开发成本,提高开发效率,并且能够快速构......
  • 解决HBuilder X运行微信小程序模拟器Error: pages.json解析失败
    前言如果已经排查很久了,那这就不是你的问题了,大概率是由于你曾经创建了一个路径,在指定PagePath的时候又指向了这个路径,这个操作本身没有问题。但是,如果你曾经对这个路径修改过了,那编译器就会有问题,来品鉴一下这个错误。16:15:36.772请注意运行模式下,因日志输出、sourcem......
  • 9、IDEA集成Github
    9.1、登录Github账号9.1.1、打开IDEA的Settings界面如上图所示,打开IDEA的Settings(设置)界面。9.1.2、使用账号密码登录(方式一)如上图所示,在“VersionControl”->“Github”中,点击“+”按钮,在登录弹窗中,输入GitHub的账号密码直接登录。注意:该方式可能由于境外网络问题,登录G......
  • git设置代理, git clone无法连接github怎么办?MAC SSH如何连接github
    1.临时设置打开GitBash,使用命令临时设定socks代理:gitconfig--globalhttp.proxy'socks5://127.0.0.1:10808' gitconfig--globalhttps.proxy'socks5://127.0.0.1:10809'或者http代理:gitconfig--globalhttp.proxy'http://127.0.0.1:10809'#最......
  • 云游戏平台陷入苦战,继青椒云,云更新,顺网云后,ToDesk正在布局云电竞市场
    在日新月异的科技浪潮中,云游戏正在逐步成为游戏产业的重要分支。根据中国信通院《2023年全球云游戏产业深度观察及趋势研判研究报告》,2022年中国云游戏市场收入达到63.5亿元,同比增长56.4%;月活人数达到8410万人,同比增长35.21%。各大平台纷纷展露头角,其中不乏佼佼者如青椒云、云更......
  • 关于cartographer在github中的文件分配
    Cartographer是一个开源的库,用于2D和3D的SLAM。在Cartographer项目中,地图构建的数据传入和处理通常分布在几个不同的组件和文件夹中。以下是一些可能包含相关代码的文件夹和组件:1.**传感器驱动**(`cartographer/sensor`):这个目录包含用于处理不同类型传感器输入的代码,例如......
  • GitHub每日最火火火项目(7.11)
    项目名称:public-apis项目介绍:public-apis是一个集体列表,收集了各种免费的API。它为开发者提供了一个便捷的资源,使得他们可以更容易地找到和使用适合自己项目的API。通过这个项目,开发者可以节省时间和精力,无需自己去寻找和筛选各种API。该项目的存在有助于促进开发......
  • AI革新来袭:GitHub上的3大爆款项目,让你的创意与效率翻倍
    AI革新来袭:揭秘GitHub上的3大爆款项目,让你的创意与效率翻倍!2024年,AI技术在各行各业中掀起了一场革命,而GitHub作为开发者的乐园,孕育出了许多令人瞩目的AI开源项目。今天,就让我们一探究竟,看看这些项目如何让我们的生活和工作变得更加高效和有趣。  1.AI主播助你成为销售......