【Python】快速简单搭建HTTP服务器并公网访问「cpolar内网穿透」

news2024/9/21 1:45:40

转载自远程内网穿透的文章:【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的官网(cpolar - 安全的内网穿透工具)找到对应操作系统版本的软件,笔者这里也是选择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/440954.html

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

相关文章

Qt/QML编程学习之心得:ALSA音频开发(六)

Linux内核中对音频播放和捕获的最初支持是由开放声音系统(OSS)提供的。OSS API是为音频而设计的带有16位双通道回放和捕获的卡,以及随后的API通过open()、close()、read()和write()系统调用的标准POSIX。OSS的主要问题是,虽然基于文件的API实际上易于应用程序开发人…

电磁阀“位”与“通”的详细解说(示意图)

电磁阀是用电磁控制的工业设备,是用来控制流体的自动化基础元件,属于执行器。 而气动电磁阀是其中的一种,是通过控制阀体的移动来档住或漏出不同的排油的孔,而进油孔是常开的,液压油就会进入不同的排油管,…

物联网定位技术|实验报告|实验一 Wi-Fi指纹定位

目录 实验1 Wi-Fi指纹定位 1. 实验目标 2. 实验背景 3. 实验原理 3.1 WIFI基础知识 3.2室内定位方法建模 3.3指纹定位算法 ①离线/训练阶段 ②在线/定位阶段 4. 关键代码 5. 实验结果 6. 室内定位误差分析 6.1 非视距传播 6.2 多径传播 6.3 阴影效应 7. 实验总结 物联网定位技…

ESP32学习三-环境搭建(ESP-IDF V5.0,Ubuntu20.4)

一、准备事项 Ubuntu 20.04。具体安装可以参考如下链接。使用VMware安装Ubuntu虚拟机和VMware Tools_t_guest的博客-CSDN博客 二、安装ESP-IDF 1)、确认python3版本 输入python3 --version来确认python3的版本。因为要安装ESP-IDF 5.0版本,python3的版本…

Docker Compose与Docker Swarm的简介和区别

Docker Compose与Docker Swarm的简介和区别 背景Compose 简介Swarm 简介Compose 和 Swarm区别 背景 之前公司很多都是单体的spring boot服务,使用Docker的时候,只需要定义Dockerfile 文件,然后打成镜像把容器启动起来就ok了。但是现在的微服…

低成本,全流程!基于PaddleDepth和Paddle3D的三维视觉技术应用方案

现实生活中的很多应用场景都需要涉及到三维信息。针对三维视觉技术应用场景复杂多样、三维感知任务众多、流程复杂等问题,飞桨为开发者提供了低成本的深度信息搜集方案 PaddleDepth 以及面向自动驾驶三维感知的全流程开发套件 Paddle3D 。 三维视觉技术应用场景 3D …

01——计算机系统基础

计算机系统基础知识 计算机系统基础一、计算机系统的基本组成1 计算机硬件系统 二、计算机的类型三、计算机的组成和工作原理1 计算机的组成2 总线的基本概念2.1 总线的定义与分类 3 系统总线3.1 系统总线的概念3.2 常见的系统总线 4 外总线5 中央处理单元(CPU&…

【刷题】搜索——BFS:八数码【A*模板】

A*简介 某点u的距离f(u)定义如下: f ( u ) g ( u ) h ( u ) f(u) g(u) h(u) f(u)g(u)h(u) g(u):起点到u走的距离 h(u):u到终点估计的距离,保证 0 ≤ h ( u ) ≤ h ′ ( u ) 0 \leq h(u) \leq h(u) 0≤h(u)≤h′(u)。其中h’…

健康体检信息系统源码,个人体检、团队体检、体检报告、统计分析

健康体检管理系统源码 PEIS源码 数据对接 体检人员管理系统,系统有演示,文档齐全。 一套专业的体检管理系统源码,该系统涵盖个人体检、团队体检、关爱体检等多种体检类型,提供体检登记管理、体检结果管理、体检报告打印及发放…

阿里云服务器搭建网站流程by宝塔Linux面板

阿里云服务器安装宝塔面板教程,云服务器吧以阿里云Linux系统云服务器安装宝塔Linux面板为例,先配置云服务器安全组开放宝塔所需端口8888、888、80、443、20和21端口,然后执行安装宝塔面板命令脚本,最后登录宝塔后台安装LNMP&#…

尝试图像锐化

#图像锐化 拉普拉斯: 导数f(x,y)f(x1,y)f(x−1,y)f(x,y1)f(x,y−1)−4f(x,y) 可以扩展到8邻域: ​ Mat Sharpen(Mat input, int percent, int type) { Mat result; Mat s input.clone(); Mat kernel; switch (type) { case 0: kernel (Mat_(3, 3)…

4个令人惊艳的ChatGPT项目,开源了

自从 ChatGPT、Stable Diffusion 发布以来,各种相关开源项目百花齐放,着实让人应接不暇。今天,将着重挑选几个优质的开源项目,对我们的日常工作、学习生活,都会有很大的帮助。 一、Visual ChatGPT 这个是微软开源的项…

代码随想录_二叉树_leetcode700、98

leetcode700.二叉搜索树中的搜索 700. 二叉搜索树中的搜索 给定二叉搜索树(BST)的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。 示例 1: 输入&…

乘客出租出行需求短时预测

CLAB模型是一种空间-时间环境下基于深度学习的乘客流量预测模型,可有效挖掘出租车乘客出行的时空相关性,考虑历史数据流入量对出行需求的影响,从而提高预测准确性。 数据挖掘维度: 1.时间维度:预测的是短时预测&#x…

关于ONgDB我问了ChatGPT这些问题!

关于ONgDB我问了ChatGPT这些问题! 关于ONgDB我问了ChatGPT这些问题!提问 ChatGPTONgDB和Neo4j的区别是什么?ONgDB可以适配哪些版本的Neo4j软件包?ONgDB可以适配哪个版本的Neo4j Python驱动软件包?ONgDB 1.x版本的特点是…

Oracle系列之八:SQL查询

SQL查询 1. 基本查询2. 连接查询3. SQL语句解析4. Oracle Hint Oracle它提供了一个强大的SQL引擎,使得用户可以通过SQL语言来管理和操作数据库。 1. 基本查询 以CAP(顾客-代理-产品)数据库为例,表结构如下: CUSTOME…

第四章 单例模式

文章目录 前言一、单例模式的介绍二、单例模式的 8 种实现方式(懒汉式要注意线程安全问题)1、饿汉式(静态常量)优缺点:可能会造成内存的浪费,但也只能浪费内存 2、饿汉式(静态代码块&#xff09…

( “树” 之 BST) 538. 把二叉搜索树转换为累加树 ——【Leetcode每日一题】

二叉查找树(BST):根节点大于等于左子树所有节点,小于等于右子树所有节点。 二叉查找树中序遍历有序。 538. 把二叉搜索树转换为累加树 给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加…

( “树” 之 DFS) 337. 打家劫舍 III ——【Leetcode每日一题】

337. 打家劫舍 III 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root。 除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。…

IDEA社区版搭建Tomcat服务器并创建web项目

IDEA社区版搭建Tomcat服务器并创建web项目 目标 创建Web项目的目录结构可以启动Tomcat服务器编写Servlet并访问成功 问题 IDEA社区版没有创建Web工程的选项IDEA社区版没有Tomcat插件 实现步骤 针对以上两个问题,分步解决 问题一:IDEA社区版没有创建…