介绍一下内网穿透:
内网穿透(NAT Traversal 或 Hole Punching)是指通过网络地址转换(NAT)设备使内部网络中的设备可以被外部网络访问的一种技术。通常情况下,内网设备是无法直接被外网访问的,因为它们位于防火墙或路由器之后,只能通过局域网(LAN)内部或通过出站连接访问外网资源。
内网穿透的应用场景包括但不限于:
- 远程访问:远程访问家中或公司内网中的计算机、服务器、监控设备等。
- P2P通信:点对点(Peer-to-Peer)应用,如视频会议、文件共享等,允许内网中的设备相互通信。
- 开发测试:开发者在本地调试服务器或应用时,需要外网设备访问本地服务。
常见的内网穿透技术包括:
1. 端口转发(Port Forwarding)
在路由器上配置端口转发规则,将外部请求转发到内部网络中的特定设备和端口。例如,访问 http://your-public-ip:8080
可以被转发到内网机器的 192.168.1.100:80
。
2. UPnP(Universal Plug and Play)
UPnP 是一种协议,允许设备自动配置路由器上的端口转发。应用程序可以通过 UPnP 请求路由器打开特定端口,从而实现内网穿透。
3. STUN(Session Traversal Utilities for NAT)
STUN 服务器帮助设备发现自己的公共 IP 地址和 NAT 映射端口,用于 P2P 通信。应用于 VoIP 和视频会议等实时通信。
4. TURN(Traversal Using Relays around NAT)
TURN 服务器在直接 P2P 连接失败时,作为中继服务器传递数据。通常与 STUN 一起使用。
5. 动态 DNS(Dynamic DNS)
动态 DNS 服务将动态 IP 地址映射到固定域名,允许用户通过固定域名访问动态 IP 地址的内网设备。
6. Ngrok
Ngrok 是一种流行的内网穿透工具,开发者可以通过 Ngrok 暴露本地服务器到外网,无需配置路由器或防火墙。Ngrok 创建一个隧道,将外网请求转发到本地服务器。
看了很多资料大部分都是买各种云服务器+宝塔部署的,而且相对于mac来说能找到的资料很少,大部分都是轻量化服务器+docker+宝塔部署的,所以我写了一个基于macOS系统免费的测试接口方法。此篇仅供学习
安装cpolar cpolar官网:cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站
编写后端
先运行server.js
const express = require("express");
const getMTG = require('./整合最终');
// 创建服务器对象
const app = express();
// 定义端口
const port = 3000;
//监听请求
app.get("/", (req, res) => {
console.log(req.query)
console.log(req.query.region_id)
const region_id = req.query.region_id ;
const region_version = req.query.region_version ;
const data = req.query.data ;
const result = getMTG(region_id, region_version, data);
res.statusCode = 200;
res.end(JSON.stringify(result));
//res.send('hello 阿七');
});
//绑定端口和IP 运行
app.listen(port, () => {
console.log(`服务器在 ${port} 这个端口运行了`);})
执行 ./cpolar http 端口3000 监控后端
127.0.0.1:4040
复制地址web打开
这个就是当时开的接口
访问测试接口
data_str = urllib.parse.urlencode(data)
region_id = params['region_id']
region_version = params['region_version']
mtg = requests.get('https://605f1e79.r6.cpolar.top',
params = {'region_id':region_id,"region_version":region_version,"data":data_str}).text
请求结果:感谢观看