什么?Python一行命令快速搭建HTTP服务器并公网访问?

news2024/12/28 4:56:40

文章目录

  • 1.前言
  • 2.本地http服务器搭建
    • 2.1.Python的安装和设置
    • 2.2.Python服务器设置和测试
  • 3.cpolar的安装和注册
    • 3.1 Cpolar云端设置
    • 3.2 Cpolar本地设置
  • 4.公网访问测试
  • 5.结语

转载自远程内网穿透的文章:【Python】快速简单搭建HTTP服务器并公网访问「cpolar内网穿透」

1.前言

Python作为热度比较高的编程语言,其语法简单且语句清晰,而且python有良好的兼容性,可以轻松的和其他编程语言((比如C/C++))建立的模块连接起来,而且python丰富强大的库,经过封装可以轻松调用,因此深受欢迎。

今天我们就尝试用python,建立一个简单的http服务器,用来展示本地电脑上指定的目录和文件。

2.本地http服务器搭建

一般来说,Python的简单http服务器不依赖Apache、IIS等这些复杂的服务器程序,因为其自带了只需一行命令就能建立http服务。但相对的,这个简单http服务也没法提供复杂功能,只能提供相对简单的目录服务。但对于想要学习和熟悉python,这又是必须进行的一步。

2.1.Python的安装和设置

首先,我们需要在本地安装python程序。Python程序可以在其官网(www.python.org/)找到对应操作系统版本下载。笔者使用的是Windows操作系统,因此选择Windows版本下载。

20230330132801

20230330132802

Python下载完成后,直接点击安装程序.exe即可进行安装。同时需要注意的是,在安装过程中,需要注意勾选Add python.exe to PATH选项。

20230330132803

20230330132804

完成python程序的安装后,我们就可以着手建立python的http服务器了

2.2.Python服务器设置和测试

由于python内建了简单http服务包,因此对于python来说,只需输入一行命令,就能轻松打开http服务。当然,要运行网页,就需要网页有显示内容。因此我们可以先建立一个用于存放网页文件的文件夹。例如笔者在本地电脑的E盘下新建了一个“test”文件夹

20230330132805

接着,以管理员身份运行本地电脑的命令提示符界面,并输入命令转入该文件所存放的硬盘

e:

再转入打算共享的文件夹

cd test

20230330132806

20230330132807

接着输入命令启动http服务

  • 如果Python版本为2.x,输入命令
python -m SimpleHTTPServer 8081
  • 如果Python版本为3.x,输入命令
python -m http.server 8001

其中的8081为打算搭建的服务器的输出端口,只要选择没有被占用的端口即可。如果出现防火墙的提示信息,只要选择允许访问即可。

命令行输入完毕后,python给出反馈Serving HTTP on 0.0.0.0 port 8081 ...,就说明我们python的http服务已经成功开启了,在本地8081端口下。

20230330132808

接着我们在本地电脑上的浏览器地址栏中,输入localhost:8081,就能打开打算分享的文件夹下的文件。

20230330132809

能看到这些内容,就说明本地电脑上python的http服务已经开启,并且已经可以查阅到这个文件夹下的文件。同样的,如果我们在这个文件夹下放入网页文件,也能够显示为网页。

此时在同一局域网下的设备,只要在浏览器中输入本地电脑的ip地址+端口号(具体格式为192.168.XXX.XXX:端口号),就能显示出python的网页。

20230330132810

不过,不能在公共互联网访问的网页总觉得缺少灵魂,因此我们可以借助cpolar内网穿透,创建一条内网穿透数据隧道,让我们可以在公共互联网条件下,访问到python。

3.cpolar的安装和注册

同样的,我们可以在cpolar的官网(https://www.cpolar.com/)找到对应操作系统版本的软件,笔者这里也是选择Windows版本。

20230330132811

20230330132812

Cpolar软件下载完成后,将压缩包解压,并双击其中的.msi文件,即可自动进行安装,我们只要一路点击Next即可。

20230330132813

20230330132814

由于cpolar会为每个用户创建独立的数据隧道,并辅以用户密码和token码保证数据安全,因此我们在使用cpolar之前,需要进行用户注册。注册过程也非常简单,只要在cpolar主页右上角点击用户注册,在注册页面填入必要信息,就能完成注册。

20230330132815

20230330132816

3.1 Cpolar云端设置

完成cpolar的安装和注册后,我们就可以着手使用cpolar,创建一条内网穿透数据隧道,将本地电脑的python网页与公共互联网连接起来。需要注意的是,cpolar免费版的数据隧道每24小时重置一次。笔者并不想每天进行重置数据隧道设置,因此将cpolar升级至vip版,以便能获得能长期稳定存在的内网穿透数据隧道。

要生成长期稳定存在的内网穿透数据隧道,我们要先访问cpolar官网并登录,并在“仪表盘”页面左侧,找到并点击预留按钮,进入“预留”页面。

20230330132817

20230330132818

在“预留”页面中,我们可以看到cpolar提供了多种协议的数据隧道保留项目。而python服务器是http协议,因此我们找到保留二级子域名栏位。当然,如果已经向域名供应商购买了自己的域名的,也可以选择“保留自定义域名”栏位。

在“保留二级子域名”栏位,我们需要对打算保留的二级子域名进行信息设置,而这些设置的信息,也会成为我们在公共互联网访问本地python服务器的隧道入口(公共互联网地址的一部分)。具体需要设置的信息为:

  • 地区:服务器所在区域,就近选择即可
  • 二级域名会最终出现在生成的公共互联网地址中,作为网络地址的标识之一
  • 描述可以看做这条数据隧道的描述,能够与其他隧道区分开即可

输入这几项设置后,就可以点击右侧的保留按钮,将这条数据隧道保留下来。如果我们不想要这条隧道的入口了,也可以点击右侧的“x”,轻松将隧道删除

20230330132819

3.2 Cpolar本地设置

完成cpolar云端设置后,我们回到本地电脑上,打开并登录cpolar客户端(可以在浏览器中输入localhost:9200直接访问,也可以在开始菜单中点击cpolar客户端的快捷方式)。

20230330132820

点击客户端主界面左侧隧道管理——创建隧道按钮,进入本地隧道创建页面(如果要创建每24小时重置地址的临时数据隧道,可直接在此进行设置,不必再cpolar官网设置空白数据隧道)。

在这个页面,同样需要进行几项信息设置,这些信息设置包括:

  1. 隧道名称——可以看做cpolar本地的隧道信息注释,只要方便我们分辨即可;
  2. 协议——tomcat输出的是web网页,因此选择http协议;
  3. 本地地址——本地地址即为本地网站的输出端口号,我们之前设置了8081为输出端口,因此这里也填入8081;
  4. 域名类型——在这个例子中,我们已经在cpolar云端预留了二级子域名的数据隧道,因此勾选“二级子域名”(如果预留的是自定义域名,则勾选自定义域名),并在下一行“Sub Domain”栏中填入预留的二级子域名,这里我们填入“pythonweb”(如果只是创建临时数据隧道,则直接勾选“随机域名”,由cpolar客户端自行生成网络地址);
  5. 地区——与cpolar云端设置时一样,我们依照实际所在地就近填写;

20230330132821

完成这些设置后,就可以点击页面下方的创建按钮,将本地python服务器网页与cpolar云端保留的二级子域名连结起来,生成一条完整的内网穿透数据隧道。

隧道创建完成后,cpolar会自动跳转至隧道管理——隧道列表页面,在这个页面看到数据隧道的状态(是否畅通),或是控制隧道的开启、关闭或删除。如果需要对隧道的信息进行变更,也可以通过这里的“编辑”按钮进行

20230330132822

4.公网访问测试

数据隧道建立完成后,我们可以点击cpolar客户端左侧状态——在线隧道列表。找到能够访问本地python服务器页面的公共互联网地址。

20230330132823

只要将这个地址输入浏览器地址,就能轻松访问到本地电脑上的python服务器页面。

20230330132824

5.结语

至此,我们成功的使用python建立一个简单的服务器页面,并且通过cpolar为其创建了一条能够穿透内网屏障的数据隧道,将这个python网页发布到公共互联网上。其实,只要知道网页(或软件)的输出端口号,我们都可以使用cpolar穿透内网,让我们在公共互联网上访问到本地的网页(或软件)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/455841.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++入门必备知识:内联函数+指针空值nullptr】

【C入门必备知识:内联函数指针空值nullptr】 ①.内联函数Ⅰ.概念Ⅱ.宏与内联Ⅲ.总结 ②.指针空值nullptr(C11)Ⅰ.C98中的指针空值Ⅱ.注意: ①.内联函数 Ⅰ.概念 用inline修饰的函数就叫做内联函数,编译时C编译器会在调用内联函数的地方将函数…

密歇根大学,一个被低估的美国公立常春藤名校

密歇根大学(University of Michigan)创建于1817年,是美国历史最悠久的公立大学之一,被誉为“公立常春藤”和“公立大学的典范”,与加州大学伯克利分校和威斯康星大学麦迪逊分校等大学一起代表了美国公立大学的最高水平…

Unity Camera -- (1)概览

Camera章节笔记所用的资源包在这里: https://connect-prd-cdn.unity.com/20230208/a0898204-bc36-4d6e-a3b2-d4b83ae67c1d/CreativeCore_Camera_2021.3LTS.ziphttps://connect-prd-cdn.unity.com/20230208/a0898204-bc36-4d6e-a3b2-d4b83ae67c1d/CreativeCore_Came…

ERTEC200P-2 PROFINET设备完全开发手册(9-1)

9. PROFIDRIVE AC1/AC4参考代码 PROFIdrive是西门子 Profibus 与 Profinet 两种通讯方式针对驱动的生产与自动化控制应用的一种协议框架,也可以称作“行规”, PROFIdrive使得用户更快捷方便实现对驱动的控制。PROFIdrive的最大特点是互操作性 – 不同厂…

低代码平台名声臭,用起来却真香——60%开发者不敢承认

群体盲从意识会淹没个体的理性,个体一旦将自己归入该群体,其原本独立的理性就会被群体的无知疯狂所淹没。——《乌合之众》 不知道从什么时候开始,“低代码不行”的论调充斥着整个互联网圈子,csdn、掘金、知乎、B站、脉脉……到处…

遗传算法求取函数最值问题

目录 1. 关于遗传算法 2. 遗传算法的步骤 3. 代码实现 3.1 工具函数 3.1.1 目标函数 3.1.2 解码 3.1.3 交叉 3.1.4 变异 3.2 主函数部分 3.3 代码 4. 其他 1. 关于遗传算法 遗传算法是根据生物进化论提出的计算最优解的一种算法,核心思想是物竞天择&…

九龙证券|光模块概念股封单资金超3亿元,传媒板块涨停潮来袭

今天A股三大股指低开低走。沪深两市收盘共37股涨停。剔除4只ST股,合计33股涨停。另外,10股封板未遂,整体封板率为78.72%。 涨停战场: 华工科技封单资金超3亿元 从收盘涨停板封单量来看,同方股份封单量最高&#xff0…

【UE】制作简单的山脉地形

在上一篇博客中(【UE】使用Quixel Bridge下载免费贴图),介绍了如何下载免费贴图,本篇博客介绍如何使用这些贴图制作地形贴图。 1. 创建地形 2. 用雕刻工具绘制地形 3. 新建两个材质函数,分别命名为“GrassAuto”、“R…

UWERANSIM - OAI5GC分立部署教程

环境: Ubantu18.04OAI-5GCv1.5.0UERANSIMv3.2.6 网络: Host1:OAI-5GCens37:192.168.12.3Host2:UERANSIMens40:192.168.12.33 确保两台宿主机之间互通! 网络配置 Host1 网络:OA…

掌握 Web3 游戏数据分析,详述 4 个开发者需追踪的关键指标

引入:需要关注的关键指标包括哪些 区块链游戏在开发运营过程中需要追踪的关键指标包括红馆加密市场数据,DAU、MAU 和用户留存相关的用户数据、社交媒体参与数据,以及游戏内资产等生态系统相关数据。 主要观点: GameFi 项目与传统…

我国集成电路行业发展重心逐步转向芯片设计 高端设备材料领域国产化迫在眉睫

1、集成电路概念及其产业链图解 集成电路(integrated circuit)缩写为IC,是一种微型电子器件或部件,其是采用一定工艺将一块电路所需的晶体管、二极管、电阻、电容和电感等电子元器件制做在一块或几小块晶片或晶片上,然…

Navicat连接oracle数据库时报ORA-28547错的解决方法(亲测有效)

​ 文章目录 一. 问题说明二. 问题解决1. 查询Oracl版本2. 下载Oracle对应oci.dll文件3. 修改oci配置4. 重启Navicat并连接Oracle5. 总结navicat配置oci教程步骤 一. 问题说明 这是因为Navicat自带的oci.dll并不支持oracle11g,需要去官网下载对应支持的版本。 二.…

WIFI6模块AP6275系列选性参考和外围应用电路参考

AP6275系列是采用28纳米工艺的BCM43752方案设计、封装15x13mm/LGA-50,有SDIO接口和PCIe接口可选,同时还有蓝牙和WiFi天线是否共用区分;具体如下: AP6275S通信接口SDIO3.0WiFi/UARTBT5.3;吞吐量TX>450Mbps、RX>55…

Raft 共识算法1-Raft基础

Raft 共识算法1-Raft基础 Raft算法中译版地址:http://www.redisant.cn/etcd/contact 英原论文地址:https://raft.github.io/raft.pdf Etcd Assistant 是一款 etcd 可视化管理软件,便捷高效地操作您的 etcd 集群;支持多种键的视图&…

【Cisco Packet Tracer| 三.单交换机划分VLAN】

文章目录 一.实验原理二.连接实验拓扑图1.给主机和交换机之间连线2.给四台主机设置IP地址 三.未划分VLAN情况下查看4台主机间是否能ping通四.创建并划分VLAN1.创建VLAN2.划分VLAN 五.划分VLAN后查看4台主机间是否能ping通 一.实验原理 原理:单交换机连接4台主机&…

医药之家:国内首个三价轮状病毒疫苗上市!预防轮状病毒导致的婴幼儿腹泻

医药之家获悉,4月17日,国药集团中国生物兰州生物制品研究所自主研发的口服三价轮状病毒减毒活疫苗(Vero细胞)获批上市,这也是国内首个获准上市的三价轮状病毒疫苗。 轮状病毒是一种双链RNA病毒,常见于6个月…

若依系统部署在linux系统 验证码报错:FontConfiguration.getVersion报空指针异常

最近遇到一个问题:若依前后端分离后端服务部署到linnux系统后访问/capthaImage 报空指针异常! 报错如下: 首先看问题sun.awt.FontConfiguration.getVersion(); 这是jdk的问题啊! 首先查看linux系统的jdk信息 openjdk version &q…

数据库基础篇 《6. 多表查询》

目录 1. 一个案例引发的多表连接 1.1 案例说明 1.2 笛卡尔积(或交叉连接)的理解 1.3 案例分析与问题解决 2. 多表查询分类讲解 分类1:等值连接 vs 非等值连接 等值连接 非等值连接 ​编辑 分类2:自连接 vs 非自连接 分类3&…

C语言从入门到精通第7天(scanf、printf、getchar函数的使用)

scanf、printf、getchar函数的使用 printf函数scanf函数getchar函数 printf函数 在C语言中使用printf函数进行格式化的输出,它是一个可变的参数函数,参数的个数不定。在前面我们已经学习了各个类型的打印格式,这里就对最常见的输出格式进行介…

如何在模拟器里面脱360的壳

1.准备环境 1.夜神模拟器 2.pyhton3.8 3.frida的版本 16.0.17 4.frida-dexdump 2.设置adb连接 我们打开夜神模拟器所在的文件夹,里面有自带的adb,我们在这个文件夹里面打开cmd。在里面链接上夜神模拟器。 adb devices 我这边显示链接成功了。 3.…