cpolar:通过脚本自动更新主机名称和端口号进行内网穿透【免费版】
cpolar 的免费版经常会重新分配 HostName 和 Port,总是手动修改太过麻烦,分享一下自动更新配置文件并进行内网穿透的方法。
文章目录
- 配置 ssh config
- 编写脚本
- 获取 csrf_token
- 打开登陆界面
- Safari
- Chrome
- 设置别名
假设你已经配置好了服务器端的 cpolar。
配置 ssh config
该部分原文:SSH 远程登录服务器跑实验(含内网穿透)
现在配置一下主机的 ssh 文件。
vim ~/.ssh/config
config 参数:
- Host: 别名,可以直接用于 ssh 登录
- Hostname: IP 地址
- Port: SSH 端口号(如果做了内网穿透,则需要填写对应的端口号)
- 比如:下图对应的是 10387

- 比如:下图对应的是 10387
- User: 登录的用户名
- PreferredAuthentications: 指定客户端的认证方法为公钥
- IdentityFile: 当前指的是私钥路径
P.S: 具体的参数信息可以通过 man ssh_config 查看
下面是配置文件样例(以 Ubuntu 为例):
Host Ubuntu-Nat-DDNS # 你可以改成你想要的名字HostName 3.tcp.vip.cpolar.cn # 填写公网ipPort 10387 # 公网 ip 对应的 端口号User xx # 远程主机的登录名PreferredAuthentications publickeyIdentityFile ~/.ssh/id_rsa_ubuntu # 改成对应的私钥路径或者将其重命名
现在可以通过 ssh Ubuntu-Nat-DDNS 直接登陆。
但 cpolar 的免费版经常会重新分配 HostName 和 Port,所以需要配置一个自动更新的脚本。
编写脚本
vim ~/scripts/update_ssh_cfg.sh
以下是 Python 脚本代码:
#!/usr/bin/env pythonimport requests
from bs4 import BeautifulSoup
import re# 登录函数
def login(login_url, username, password, csrf_token):session = requests.Session()payload = {'login': username,'password': password,'csrf_token': csrf_token}response = session.post(login_url, data=payload)if response.status_code == 200:return sessionelse:raise Exception('登录失败')# 获取目标字符串函数
def get_target_string(session, url):response = session.get(url)soup = BeautifulSoup(response.text, 'html.parser')target_element = soup.find('a', href="#ZgotmplZ")if target_element:return target_element.textelse:raise Exception('隧道可能未激活')# 提取 HostName 和 Port 函数
def extract_hostname_and_port(target_string):pattern = r'tcp://(.*?):(\d+)'matches = re.match(pattern, target_string)if matches:hostname = matches.group(1)port = matches.group(2)return hostname, portelse:raise Exception('未找到匹配的字符串')# 更新配置文件函数
def update_config_file(filename, hostname, port):with open(filename, "r") as file:content = file.readlines()is_modified = Falsefor i, line in enumerate(content):if line.strip() == "Host Ubuntu-NAT-DDNS": # 如果使用的是其他别名,在这里修改hostname_line = content[i + 1].strip()if hostname_line.startswith("HostName") and hostname_line.split(" ")[-1] != hostname:content[i + 1] = f" HostName {hostname}\n"is_modified = Trueport_line = content[i + 2].strip()if port_line.startswith("Port") and port_line.split(" ")[-1] != port:content[i + 2] = f" Port {port}\n"is_modified = Trueif not is_modified:print("HostName 和 Port 未发生变化,无需更新。")else:with open(filename, "w") as file:file.writelines(content)print("已更新配置。")# 主程序
def main():# 配置项username = ''password = ''csrf_token = ''login_url = 'https://dashboard.cpolar.com/login'content_url = 'https://dashboard.cpolar.com/status'config_filename = "/Users/home/.ssh/config"try:# 登录session = login(login_url, username, password, csrf_token)# 获取目标字符串target_string = get_target_string(session, content_url)print(target_string)# 提取 HostName 和 Porthostname, port = extract_hostname_and_port(target_string)print("HostName:", hostname)print("Port:", port)# 更新配置文件update_config_file(config_filename, hostname, port)except Exception as e:print("发生错误:", str(e))# 运行主程序
if __name__ == "__main__":main()
为脚本添加执行权限:
chmod +x ~/scripts/update_ssh_cfg.sh
如果你不是使用 Ubuntu-NAT-DDNS 作为别名,则修改下方标注出的代码:

另外,你需要填充上面的 username,password 和 csrf_token,其中 csrf_token 可以通过下面的方式获取。
获取 csrf_token
打开登陆界面
访问 https://dashboard.cpolar.com/login

Safari
点击开发->显示网页检查器 或者使用 option + command + L 打开网页检查器

输入账号密码进行登录,点击get-started -> 标头 -> 请求数据

然后你就可以看到三个我们所需要的字段,将其填充回代码部分。

Chrome
使用 F12 打开开发者工具,进入 Network,点击 login -> Payload 查看字段。

通过以上步骤获取 username,password 和 csrf_token 后,填入代码并使用esc + :wq保存脚本。
设置别名
现在,我们可以使用 update_ssh_cfg && ssh Ubuntu-NAT-DDNS 自动完成内网穿透。
为了方便,我们可以为这段代码设置别名。首先,打开 .bashrc 或 .zshrc 文件(取决于你使用的 shell):
vim ~/.bashrc # 或者 vim ~/.zshrc
在文件末尾添加以下别名配置:
alias update_ssh_cfg='~/scripts/update_ssh_cfg.sh'
alias SSH_UBUNTU='update_ssh_cfg && ssh Ubuntu-NAT-DDNS'
保存并关闭文件后,运行以下命令使修改生效:
source ~/.bashrc # 或者 source ~/.zshrc
现在,可以使用 SSH_UBUNTU 自动更新 HostName 和 Port,并完成内网穿透。
相关文章:
cpolar:通过脚本自动更新主机名称和端口号进行内网穿透【免费版】
cpolar 的免费版经常会重新分配 HostName 和 Port,总是手动修改太过麻烦,分享一下自动更新配置文件并进行内网穿透的方法。 文章目录 配置 ssh config编写脚本获取 csrf_token打开登陆界面SafariChrome 设置别名 假设你已经配置好了服务器端的 cpolar。 …...
【Python日志模块全面指南】:记录每一行代码的呼吸,掌握应用程序的脉搏
文章目录 🚀一、了解日志🌈二、日志作用🌈三、了解日志模块⭐四、日志级别💥五、记录日志-基础❤️六、记录日志-处理器handler🎬七、记录日志-格式化记录☔八、记录日志-配置logger👊九、流程梳理 &#x…...
SpringBoot 多种优雅的线程池配置与使用(异步执行函数,反射机制,动态识别参数,有返回值)
想要明白生活你需要先经历它,而不是总在分析它。 —萨莉鲁尼 文章目录 前言一、@Async注解1. 概念2. 使用2.1 使用@EnableAsync启动函数异步支持2.2 不会异步执行的坑2.2.1 为什么内部调用不会异步执行?2.2.2 如何确保@Async方法异步执行?3. 配置线程池3.1 通过代码配置3.1.…...
ansible copy模块--持续创作中
copy模块用于将文件从ansible控制节点(管理主机)或者远程主机复制到远程主机上。其操作类似于scp(secure copy protocol)。 关键参数标红。 参数: src:(source:源) 要复制到远程…...
自学SAP是学习ECC版本还是S4版本?
很多人想学SAP,问我应该学ECC版本还是S4版本,我的建议如果你是自学的话,我个人建议使用ECC版本就行,因为这两个版本前台业务和后台配置的操作差异并不大,主要差异在于数据库的差异,前台业务操作和后台系统配…...
银河麒麟4.0.2安装带有opengl的Qt5.12.9
银河麒麟4.0.2下载地址:银河麒麟-银河麒麟(云桌面系统)-银河麒麟最新版下载v4.0.2-92下载站 VirtualBox:https://www.virtualbox.org/wiki/Downloads qt下载:Index of /archive/qt/5.12/5.12.9 1安装VirtualBox:网上教材比较多 1)安装完后安…...
django学习入门系列之第二点《浏览器能识别的标签3》
文章目录 列表表格往期回顾 列表 无序列表 <!-- <ul </ul> 无序列表 --> <ul><li> 内容1 </li><li> 内容2 </li><li> 内容3 </li><li> 内容4 </li> </ul>有序列表 <!-- <ol> &…...
git常见实用命令,简单上手操作
常用命令: 添加远程账号名称:git config --global user.name ‘’ 添加用户eamil:git config --global user.email ‘’ 初始化厂库:git init 新建文件夹:mkdir 文件夹名 新建文件:touch 文件名 查看…...
2-11 基于matlab的BP-Adaboost的强分类器分类预测
基于matlab的BP-Adaboost的强分类器分类预测,Adaboost是一种迭代分类算法,其在同一训练集采用不同方法训练不同分类器(弱分类器),并根据弱分类器的误差分配不同权重,然后将这些弱分类器组合成一个更强的最终…...
Neo4j图形数据库查询,Cypher语言详解
Cypher语言详解 Cypher是一种专为Neo4j图形数据库设计的声明式查询语言。它类似于SQL,但其设计目标是便于表达图数据库中常见的图形结构和操作。本文将详细介绍Cypher语言的基本语法、常见操作、高级功能以及使用Cypher进行图形数据分析的技巧。 1. Cypher的基本概…...
C# Winform Datagridview控件使用和详解
DataGridView 是一种以表格形式显示数据的控件,由Rows(行),Columns(列),Cells(单元格)构成。本实例将综合利用DataGridView的属性和事件,展示不同的表格风格数据和操作。包含: 添加Datagridview行,列数据设…...
xshell传输文件速率为0
你们好,我是金金金。 场景 此时我通过xshell客户端上传文件,速率一直为0 解决 安装 yum -y install lrzsz 即可 这个工具主要提供 rz 和 sz 命令,用于通过 Zmodem 协议在本地计算机和远程服务器之间传输文件 编写有误还请大佬指正࿰…...
2.spring cloud gateway 源码编译
spring cloud gateway编译 1.编译 命令 mvn clean compile -U2.报错 报错信息 核心信息 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:3.1.2:check (checkstyle-validation) on project spring-cloud-gateway-mvc: Failed during …...
[Linux] UDP协议介绍:UDP协议格式、端口号在网络协议栈那一层工作...
TCP/IP网络模型, 将网络分为了四层: 之前的文章中以HTTP和HTTPS这两个协议为代表, 简单介绍了应用层协议. 实际上, 无论是HTTP还是HTTPS等应用层协议, 都是在传输层协议的基础上实现的 而传输层协议中最具代表性的就是: UDP和TCP协议了. 以HTTP为例, 在使用HTTP协议通信之前, …...
Spring Boot 中如何解决跨域问题、Spring Cloud 5大组件、微服务的优缺点是什么?
Spring Boot 中如何解决跨域问题 ? SpringMVC项目中使用CrossOrigin注解来解决跨域问题 , 本质是CORS RequestMapping("/hello")CrossOrigin(origins "*")//CrossOrigin(value "http://localhost:8081") //指定具体ip允许跨域public String …...
[Vulnhub] Sleepy JDWP+Tomcat+Reverse+Reverse-enginnering
信息收集 Server IP AddressPorts Opening192.168.8.100TCP:21,8009,9001 $ nmap -sV -sC 192.168.8.100 -p- --min-rate 1000 -Pn Starting Nmap 7.92 ( https://nmap.org ) at 2024-06-20 05:06 EDT Nmap scan report for 192.168.8.100 (192.168.8.100) Host is up (0.00…...
基于MATLAB的误码率与信噪比(附完整代码与分析)
目录 一. 写在前面 二. 如何计算误码率 三. 带噪声的误码率分析 3.1 代码思路 3.2 MATLAB源代码及分析 四. 总结 4.1 输入参数 4.2 规定比特长度 4.3 特殊形式比较 一. 写在前面 (1)本文章主要讨论如何仿真误码率随着信噪比变化的图像 &#…...
【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 字符串筛选排序(100分) - 三语言AC题解(Python/Java/Cpp)
🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 字符串筛选排序(100分) 🌍 评测功能需要 订阅专栏 后私信…...
# 开发安全
开发安全 文章目录 开发安全安全开发生命周期安全开发目标安全开发基本准则注入类攻击手段Sql注入命令执行命令执行防御文件遍历防御 植入类安全漏洞防御XSS(前端漏洞)防御 储存型XSS文件上传防御 CSRF防御 会话固定防御 其它类型安全漏洞越权访问防御 口…...
Qt MaintenanceTool.exe使用镜像源更新Qt
环境:Windows11,Qt6.5,新版的MaintenanceTool.exe linux环境类似,mac环境可以看官方文档。 cmd命令窗口:切换到MaintenanceTool.exe所在目录,可以用“D:”切换到D盘,“cd xxxx”切换到xxxx目录…...
【苍穹外卖实战】套餐管理模块:从零到一构建多表CRUD与状态流转
1. 套餐管理模块的业务场景与核心挑战 外卖平台的套餐管理模块看似简单,实则暗藏玄机。想象一下你开了一家餐厅,需要把几道菜品组合成套餐出售。这个过程中,你需要确保套餐里的每道菜都处于可售状态,套餐价格要合理,还…...
文墨共鸣大模型安装包依赖分析与环境冲突解决
文墨共鸣大模型安装包依赖分析与环境冲突解决 你是不是也遇到过这种情况:拿到一个项目,兴冲冲地运行 pip install -r requirements.txt,结果屏幕上开始疯狂报错,各种版本不兼容、找不到模块、编译失败的信息轮番轰炸。折腾了几个…...
AI赋能部署:让快马分析你的硬件,自动生成支持GPU加速的openclaw配置代码
今天在部署openclaw时遇到一个典型场景:需要在带NVIDIA GPU的服务器上启用加速功能,但只做推理不做训练。手动配置环境变量、依赖版本和编译选项实在太费时间,于是尝试用InsCode(快马)平台的AI辅助功能,没想到五分钟就搞定了全流程…...
Windows 11三指拖拽功能完全配置指南:从驱动安装到手势优化
Windows 11三指拖拽功能完全配置指南:从驱动安装到手势优化 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/ThreeFingersD…...
ECharts甘特图实战:5分钟搞定项目进度可视化(附完整代码)
ECharts甘特图实战:5分钟搞定项目进度可视化(附完整代码) 项目管理中,进度可视化是团队协作的核心需求。传统表格难以直观展示任务依赖关系,而专业项目管理软件又过于笨重。ECharts作为国内最流行的数据可视化库&…...
GIL-Free Python并发仅剩最后1%难题:我们用37小时逆向分析PyO3内存模型,找到共享引用计数的终极解法
第一章:GIL-Free Python并发的终极挑战与破局意义Python 的全局解释器锁(GIL)长期被视为多核 CPU 利用率的“天花板”。它确保同一时刻仅有一个线程执行 Python 字节码,虽简化了内存管理与 C 扩展开发,却在 CPU 密集型…...
SDMatte在智能硬件配套:嵌入式设备端Web服务裁剪、ARM64交叉编译与内存精简
SDMatte在智能硬件配套:嵌入式设备端Web服务裁剪、ARM64交叉编译与内存精简 1. 技术背景与挑战 在智能硬件领域,嵌入式设备通常面临资源受限的挑战: 计算能力有限:ARM架构处理器性能远低于服务器级GPU内存资源紧张:…...
BetterGI 0.38.1版本安装失败?3步快速解决原神自动化工具启动问题
BetterGI 0.38.1版本安装失败?3步快速解决原神自动化工具启动问题 【免费下载链接】better-genshin-impact 🍨BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动派遣 | 一键强化 - UI Automation Testin…...
Gradio实战:用gr.Button和gr.Markdown打造高颜值交互界面(附CSS美化技巧)
Gradio界面美学革命:从基础组件到高级定制的全链路设计指南 在AI应用爆炸式增长的今天,一个美观直观的交互界面已经成为产品成功的关键因素。Gradio作为最受欢迎的AI应用快速构建工具,其默认样式往往难以满足专业级产品的视觉需求。本文将带您…...
从SIM卡到基站信令:IMSI号码的5种获取方式全解析(含读卡器/Wireshark对比)
从SIM卡到基站信令:IMSI号码的5种获取方式全解析(含读卡器/Wireshark对比) 在物联网设备管理和移动通信维护领域,IMSI(International Mobile Subscriber Identity)作为SIM卡的核心标识符,其获取…...
