Cpolar实现本地网站外网访问

Cealivanus Kwan Lv3

部署本地网站

首先,要有一个可以本地访问的网站,这里举一个例子,本地搭建了一个Django框架的Web网站,执行启动服务器后,给出本地地址为:(例)

1
(http://)127.0.0.1:8000/ #同 (http://)localhost:8000/

此时只能本地访问,其他PC端口无法通过这个地址访问。

为了让其他PC端访问我们的网页,这里引入工具 Cpolar

Cpolar 工具

Cpolar 是一款内网穿透工具,主要用于将本地服务暴露到公网,使得外部网络可以访问你本地的应用程序或服务。它类似于 NgrokFRP 等工具,但 Cpolar 更加简单易用,特别适合开发者和测试人员快速搭建临时的公网访问环境。


Cpolar 的主要功能

  1. 内网穿透
    • 将本地运行的 Web 服务、数据库、API 等暴露到公网,生成一个公网可访问的域名。
    • 例如,你可以在本地运行一个 Django 开发服务器,然后通过 Cpolar 生成一个公网域名,其他人可以通过这个域名访问你的本地服务。
  2. 动态域名
    • Cpolar 会为你的本地服务分配一个临时的公网域名(例如 xxxx.r3.cpolar.top)。
    • 这个域名是动态生成的,每次启动 Cpolar 时可能会变化(除非你购买了固定域名)。
  3. 支持多种协议
    • 支持 HTTP、HTTPS、TCP、UDP 等多种协议。
    • 可以用于 Web 服务、远程桌面、数据库连接等场景。
  4. 简单易用
    • 提供图形化界面和命令行工具,适合不同技术水平的用户。
    • 配置简单,只需几步即可完成内网穿透。

Cpolar 的使用场景

  1. 开发和测试
    • 在开发过程中,你可以将本地的 Web 服务暴露到公网,方便团队成员或客户远程测试。
    • 例如,开发一个微信小程序时,微信要求后端服务必须通过公网访问,Cpolar 可以快速满足这一需求。
  2. 演示和展示
    • 你可以通过 Cpolar 将本地的演示环境暴露到公网,方便向客户展示产品功能。
  3. 远程访问
    • 通过 Cpolar 暴露本地的远程桌面、数据库等服务,方便远程办公或调试。
  4. 临时公网服务
    • 如果你需要临时搭建一个公网可访问的服务(例如文件共享、临时 API 服务),Cpolar 是一个快速解决方案。

具体操作

Cpolar官网cpolar - secure introspectable tunnels to localhost

访问官网,注册登录

image-20250310111839678

下载相应版本Cpolar

打开左栏验证,复制 Authtoken

cmd打开你的Cpolar目录,(小技巧:直接在相应文件目录上栏输入cmd回车即可,如下图所示)

image-20250310112321179

按要求输入

1
cpolar authtoken MjVjYTMxM2YtNWIwOC00M2Y5LTgzYWMtOGJjMDkyYjZkOThh

回车验证Authtoken,第一次使用时绑定一次即可。

公开本地网站:

同样方法输入cmd命令

1
cpolar.exe http 8000 

注意这是一个示范,8000应替代为你的本地端口

image-20250310112951571

等待进行指向配置

image-20250310113208583

配置成功!

通过Forwarding部分给出的地址即可实现外网访问,同时响应的结果也会返回到终端。

Django异常处理

如果是Django框架可能出现无法访问的问题

这个错误是由于 Django 的安全机制引起的。Django 默认会检查请求的 HTTP_HOST 头,以确保它在一个允许的主机列表中(即 ALLOWED_HOSTS)。如果请求的主机不在 ALLOWED_HOSTS 列表中,Django 会抛出 DisallowedHost 异常。

在你的情况下,请求的主机是 fece785.r3.cpolar.top,但这个主机名没有在 ALLOWED_HOSTS 中配置,因此 Django 拒绝了该请求。

解决方法

你需要将 fece785.r3.cpolar.top 添加到 Django 项目的 ALLOWED_HOSTS 设置中。具体步骤如下:

  1. 打开 Django 项目的 settings.py 文件

  2. 找到 ALLOWED_HOSTS 设置。它通常看起来像这样:

    1
    ALLOWED_HOSTS = []
  3. fece785.r3.cpolar.top 添加到 ALLOWED_HOSTS 列表中。你可以这样做:

    1
    ALLOWED_HOSTS = ['fece785.r3.cpolar.top']

    如果你希望允许所有主机访问(不推荐在生产环境中使用),可以这样做:

    1
    ALLOWED_HOSTS = ['*']
  4. 保存 settings.py 文件

  5. 重启 Django 开发服务器,使更改生效。

示例

假设你的 settings.py 文件中有以下内容:

1
ALLOWED_HOSTS = ['localhost', '127.0.0.1']

你可以将其修改为:

1
ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'fece785.r3.cpolar.top']

或者,如果你希望允许所有主机访问:

1
ALLOWED_HOSTS = ['*']

注意事项

  • 在生产环境中,不建议使用 ALLOWED_HOSTS = ['*'],因为这可能会带来安全风险。你应该明确列出所有允许的主机名。
  • 如果你使用的是动态域名(例如 cpolar 提供的域名),你可能需要定期更新 ALLOWED_HOSTS 以匹配新的域名。

完成这些步骤后,你的 Django 应用应该能够正常处理来自 fece785.r3.cpolar.top 的请求了。

可以将 Django 的 ALLOWED_HOSTS 中设置为 ['*'],如此,Django 将接受任何主机名的请求,包括 cpolar 提供的动态域名。这意味着你不需要定期更新 ALLOWED_HOSTS,即使 cpolar 提供的域名发生了变化。

注意,该操作有安全风险,不建议在生产过程中使用!

解决后即可正常访问!

image-20250310114159252

参考视频:无需公网 IP!用 Cpolar 实现本地 Web 网站外网访问教程-海不纳百氚-稍后再看-哔哩哔哩视频

  • 标题: Cpolar实现本地网站外网访问
  • 作者: Cealivanus Kwan
  • 创建于 : 2025-03-10 10:48:22
  • 更新于 : 2025-03-10 11:42:29
  • 链接: https://redefine.ohevan.com/2025/03/10/Cpolar实现本地网站外网访问/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。