cpolar:通过脚本自动更新主机名称和端口号进行内网穿透【免费版】

本文主要是介绍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
      image
  • 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 作为别名,则修改下方标注出的代码:

修改别名

另外,你需要填充上面的 usernamepasswordcsrf_token,其中 csrf_token 可以通过下面的方式获取。

获取 csrf_token

打开登陆界面

访问 https://dashboard.cpolar.com/login

login

Safari

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

网页检查器

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

请求数据

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

Chrome

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

通过以上步骤获取 usernamepasswordcsrf_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:通过脚本自动更新主机名称和端口号进行内网穿透【免费版】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1079923

相关文章

UE3脚本UnrealScript UC语法点滴

持续更新 目录 类定义修饰符  1.dependson(CLASSNAME) 2.config(ININAME) 3.native 4.notplaceable 5.inherits(CLASSNAME1[,CLASSNAME2,...]) 类对象实例创建 类默认属性设置 变量 1.声明 var local 2.修饰符 config  3.array 类型变量 以及

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引发了我们的广泛关注。从训练和操作的角度来看,LLMs 可以被认为是一种巨大的、非真实的记忆库,相当于为我们所有人提供了一个外部的系统 1(见图 1)。然而,它们表面上的多功能性让许多研究者好奇,这些模型是否也能在通常需要系

Python应用开发——30天学习Streamlit Python包进行APP的构建(9)

st.area_chart 显示区域图。 这是围绕 st.altair_chart 的语法糖。主要区别在于该命令使用数据自身的列和指数来计算图表的 Altair 规格。因此,在许多 "只需绘制此图 "的情况下,该命令更易于使用,但可定制性较差。 如果 st.area_chart 无法正确猜测数据规格,请尝试使用 st.altair_chart 指定所需的图表。 Function signa

利用Frp实现内网穿透(docker实现)

文章目录 1、WSL子系统配置2、腾讯云服务器安装frps2.1、创建配置文件2.2 、创建frps容器 3、WSL2子系统Centos服务器安装frpc服务3.1、安装docker3.2、创建配置文件3.3 、创建frpc容器 4、WSL2子系统Centos服务器安装nginx服务 环境配置:一台公网服务器(腾讯云)、一台笔记本电脑、WSL子系统涉及知识:docker、Frp

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述。以下是从不同角度对气象站的种类和应用范围的介绍: 一、气象站的种类 根据用途和安装环境分类: 农业气象站:专为农业生产服务,监测土壤温度、湿度等参数,为农业生产提供科学依据。交通气象站:用于公路、铁路、机场等交通场所的气象监测,提供实时气象数据以支持交通运营和调度。林业气象站:监测林区风速、湿度、温度等气象要素,为林区保护和

企业如何进行员工的网络安全意识培训?

企业网络安全意识培训的重要性         企业网络安全意识培训是提升员工网络安全素质的关键环节。随着网络技术的快速发展,企业面临的网络安全威胁日益增多,员工的网络安全意识和技能水平直接关系到企业的信息安全和业务连续性。因此,企业需要通过系统的网络安全意识培训,提高员工对网络安全的认识和防范能力,从而降低企业在面对潜在安全风险时的损失和影响。 企业网络安全意识培训的方法         企

【杂记-浅谈DHCP动态主机配置协议】

DHCP动态主机配置协议 一、DHCP概述1、定义2、作用3、报文类型 二、DHCP的工作原理三、DHCP服务器的配置和管理 一、DHCP概述 1、定义 DHCP,Dynamic Host Configuration Protocol,动态主机配置协议,是一种网络协议,主要用于在IP网络中自动分配和管理IP地址以及其他网络配置参数。 2、作用 DHCP允许计算机和其他设备通

【青龙面板辅助】JD商品自动给好评获取京豆脚本

1.打开链接 开下面的链接进入待评价商品页面 https://club.jd.com/myJdcomments/myJdcomments.action?sort=0 2.登陆后执行脚本 登陆后,按F12键,选择console,复制粘贴以下代码,先运行脚本1,再运行脚本2 脚本1代码 可以自行修改评价内容。 var content = '材质很好,质量也不错,到货也很快物流满分,包装快递满

Redis-在springboot环境下执行lua脚本

文章目录 1、什么lua2、创建SpringBoot工程3、引入相关依赖4、创建LUA脚本5、创建配置类6、创建启动类7、创建测试类 1、什么lua “Lua”的英文全称是“Lightweight Userdata Abstraction Layer”,意思是“轻量级用户数据抽象层”。 2、创建SpringBoot工程 3、引入相关依赖 <?xml version

使用JWT进行安全通信

在现代Web应用中,安全通信是至关重要的。JSON Web Token(JWT)是一种流行的安全通信方式,它允许用户和服务器之间安全地传输信息。JWT是一种紧凑的、URL安全的表示方法,用于在两方之间传输信息。本文将详细介绍JWT的工作原理,并提供代码示例帮助新人理解和实现JWT。 什么是JWT? JWT是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间以JSO