Python一行命令搭建HTTP服务器并外网访问+-+内网穿透

news2024/11/26 3:49:05

文章目录

  • 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/702462.html

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

相关文章

PS扣签名

打开Photoshop CS6,依次点击“文件”-“打开”,把签名照导入进来。 在“选择”菜单下点击“色彩范围”。 此时鼠标形状变成了一支笔,点击签名上黑色的地方,适当调整颜色容差,点击“确定”完成选择。 按住CtrlJ组…

基于Java园区停车管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

【SWAT水文模型】率定参数选择及校准技巧

SWAT模型率定参数选择及校准技巧 水量平衡与径流(Water Balance And Stream Flow)1 基本水量平衡和总径流校准(Basic Water Balance & Total Flow Calibration)1.1 校准地表径流:1.2 校准地下径流: 2 流…

如何查看 Facebook 公共主页的广告数量上限?

作为Facebook的资深人员,了解如何查看公共主页的广告数量上限对于有效管理和优化广告策略至关重要。本文将详细介绍如何轻松查看Facebook公共主页的广告数量上限,以帮助您更好地掌握广告投放策略。 一、什么是Facebook公共主页的广告数量上限&#xff1f…

如何使用《水经注地图服务》快速发布MBTiles数据

《水经注地图服务》的快速发布功能是一个能够帮助用户实现快速发布地图服务的功能,并且提供常规情况下大多数用户所需的默认配置,让用户在发布地图时更加便捷。 今天为大家分享如何利用《水经注地图服务》快速发布MBTiles地图数据。 准备工作 离线示例…

C语言小项目之扫雷(进阶版)

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C语言学习分享⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵 带你学习更多C语言知识   🔝🔝 扫雷小项目 1. 前期准备2. 初始化…

phpRedis扩展安装以及session redis存储

1.下载redis扩展(redis扩展各个版本下载地址:https://pecl.php.net/package/redis) wget https://pecl.php.net/get/redis-3.1.6.tgz 2.解压下载的redis扩展 tar zxvf redis-3.1.6.tgz 3.用phpize生成configure配置文件 phpize 4.查找p…

账号安全总结-业务安全测试实操(27)

电子邮件账号泄露事件 电子邮箱业务基于计算机和通信网的信息传递业务,利用电信号传递和存储信息,为用户传送电子信函、文件数字传真、图像和数字化语音等各类型的信息。电子邮件最大的特点是,人们可以在任何地方、任何时间收、发信件,解决了时空的限制,大大提高了工作效…

深度学习编译器汇总

深度学习的发展对个科学领域产生了深远的影响。它不仅在自然语言处理(NLP)和计算机视觉(CV)等人工智能领域显示出显著的价值,而且在电子商务、智慧城市和药物发现等更广泛的应用领域也取得了巨大的成功。随着卷积神经网…

Django学习笔记-VS Code本地运行项目

截止到上一章节:Django 学习笔记-Web 端授权 AcWing 一键登录,我们的项目一直是部署在云服务器上,包括编写代码以及调试运行也是在云服务器上,现在我们尝试将其放回本地运行。 CONTENTS 1. 将项目传到本地2. 虚拟环境配置3. 修改项…

如何录音转文字?这份录音转文字教程你必须知道

在现代快节奏的工作环境中,电脑会议录音转文字成为了一项非常重要的任务。但是很多人不知道电脑会议录音转文字怎么转?如果你也正有这样的疑问,那么你就来对地方了!在本篇文章中,我们将为你介绍几款备受推崇的录音转文…

联想校招雇品年轻化:硬科技「校招+雇品」的创新打法

联想计划3年内增加12,000名研发人才,并明确20%的New Hire将来自校园招聘。 人才梯队的构成预示着企业未来的发展方向与加速度。联想对年轻人才关注与吸引从未放慢脚步,始终相信年轻即代表未来。更多年轻科技人才加入,会为企业注入创新活力&a…

LeetCode 75 —— 62. 不同路径

LeetCode 75 —— 62. 不同路径 一、题目描述: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” &…

Appium之xpath定位详解

目录 一、基础定位 二、contains模糊定位 三、组合定位 四、层级定位 前面也说过appium也是以webdriver为基的,对于元素的定位也基本一致,只是增加一些更适合移动平台的独特方式,下面将着重介绍xpath方法,这应该是UI层元素定位…

前端系列20集-vue3,微信小程序,brew,redis,WebSocket

onShow() {uni.checkSession({success: (data) > {this.getSessionId()},fail: () > {this.getSessionId()}}) }, // 获取用户的手机号 getPhoneNumber(info) {let wxAuth {encryptedData: info.detail.encryptedData,iv: info.detail.iv,sessionId: uni.getStorageSync…

Java反射源码学习之旅 | 京东云技术团队

1 背景 前段时间组内针对“拷贝实例属性是应该用BeanUtils.copyProperties()还是MapStruct”这个问题进行了一次激烈的battle。支持MapStruct的同学给出了他嫌弃BeanUtils的理由:因为用了反射,所以慢。 这个理由一下子拉回了我遥…

青岛农商与中电金信鲸Bot RPA的一次紧密合作

260%、350%、313%、400%、1200%,这些都是青岛农商银行近期通过鲸Bot RPA跑出来的各个业务流程的ROI,原来选择合适的RPA真的这么有用!青岛农商还亲切地给RPA起了一个昵称:小鑫,从此小鑫就是青岛农商第一位正式的数智员工…

群晖安装、卸载、停用套件

安装套件 点击套件中心 点击所有套件,选中需要安装的套件,店家安装套件,或者试用,等待安装完成即可 卸载套件 点击已安装 点击图标或者文字,注意:不要点打开 点击向下的箭头 点击停用,或者卸载…

puppeteer实现文件下载

puppeteer实现文件下载 puppeteer版本: "puppeteer": "^20.7.3",脚本需要的其他依赖 const axios require(axios); const FormData require(form-data); const fs require(fs);本脚本测试数据网站:https://unsplash.com/photo…

基于Java民宿管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…