通过公网v6挂载网盘
前言:
在Windows中,你可以挂载网络硬盘,但是在缺失公网IPv4的情况下,仍可以使用公网IPv6进行替代,一下是一个简单的 Python 脚本,用于自动转换地址使其可以被Windows所使用。
适用环境:
拥有公网IPv6地址,同时开放了对应外网端口
路由器,光猫或网关防火墙设置已允许IPv6流量出入站
拥有自己的域名,同时已绑定对应机器的IPv6地址(推荐DDns-Go)
电脑网卡IPv6地址且已打开对应选项(即可以获取到IPv6地址)
示例代码:
IPv4:
import socket def get_ip_address(domain): return socket.gethostbyname(domain) def replace_colon_with_dash(input_string): return input_string.replace(":", "-") # 获取用户输入的域名 domain = input("请输入你想要查询的域名:") ip_address = get_ip_address(domain) address = ip_address # 将IP地址存储在变量address中 address_R = replace_colon_with_dash(address) # 将变量address中的:替换为-,并存储在变量address_R中 print(address_R) # 输出:变量address_R,即替换后的IP地址
IPv6:
import socket def get_ipv6_address(domain): try: # 获取IPv6地址 ipv6_address = socket.getaddrinfo(domain, None, socket.AF_INET6)[0][4][0] return ipv6_address except (socket.gaierror, IndexError) as e: print(f"Error: {e}") return None def replace_colon_with_dash(ipv6_address): return ipv6_address.replace(':', '-') if __name__ == '__main__': # 获取用户输入的域名 domain = input("请输入你想要查询的域名:") ipv6_address = get_ipv6_address(domain) if ipv6_address: modified_ipv6 = replace_colon_with_dash(ipv6_address) print(f"域名 {domain} 的IPv6地址为: {ipv6_address}") print(f"替换冒号为破折号后的IPv6地址为: {modified_ipv6}") else: print("无法获取IPv6地址")
综合脚本(带GUI):
import socket import tkinter as tk from tkinter import ttk def get_ip_address(domain_1): try: ip_address = socket.gethostbyname(domain_1) return ip_address except (socket.gaierror, IndexError) as e: print(f"Error: {e}") return None def get_ipv6_address(domain): try: # 获取IPv6地址 ipv6_address = socket.getaddrinfo(domain, None, socket.AF_INET6)[0][4][0] return ipv6_address except (socket.gaierror, IndexError) as e: print(f"Error: {e}") return None def replace_colon_with_dash(ipv6_address): return ipv6_address.replace(':', '-') def show_result(): global copy_button # 声明全局变量 global modified_ipv6 global domain global ipv6_address domain = entry.get() domain_1 = entry.get() ipv6_address = get_ipv6_address(domain) ip_address = get_ip_address(domain_1) if ipv6_address and ip_address: modified_ipv6 = replace_colon_with_dash(ipv6_address) result_label.config(text=f"您查询的域名是 ‘ {domain} ’ \n\n查询到的的IPv4地址为: {ip_address}\n\nIPv6地址为:{ipv6_address}\n\n转换格式为: \\\{modified_ipv6}.ipv6-literal.net") #创建复制按钮 copy_button = tk.Button(window, text="复制转换后的地址", command=copy_result) copy_button.pack(pady=5) else: if ip_address: result_label.config(text=f"您查询的域名是 ‘ {domain} ’ \n\n查询到的的IPv4地址为: {ip_address}\n\n未找到IPv6地址") elif ipv6_address: modified_ipv6 = replace_colon_with_dash(ipv6_address) result_label.config(text=f"您查询的域名是 ‘ {domain} ’ \n\n查询到的的IPv6地址为: {ipv6_address}\n\n转换格式为: \\\{modified_ipv6}.ipv6-literal.net") #创建复制按钮 copy_button = tk.Button(window, text="复制转换后的地址", command=copy_result) copy_button.pack(pady=5) else: result_label.config(text="无法获取IP地址") def copy_result(): if ipv6_address: result_label.config(text=f"\\\{modified_ipv6}.ipv6-literal.net") window.clipboard_clear() window.clipboard_append(result_label.cget("text")) window.update() result_label.config(text=f"请在文件管理器中输入下列地址:\n\n\\\{modified_ipv6}.ipv6-literal.net\n\n已为您复制到系统剪贴板~") #删除复制按钮 copy_button.destroy() # 创建主窗口 window = tk.Tk() window.title("IPv6 地址查询工具") # 设置窗口大小 window.geometry("700x500") # 设置窗口背景颜色 window.configure(bg="#FFDAB9") # 创建样式 style = ttk.Style() style.configure("TButton", background="#808080", # 灰色背景 foreground="black", # 黑色文字 padding=(10, 5), # 按钮内边距 font=('Helvetica', 12), # 字体和大小 borderwidth=2, # 边框宽度 relief="flat", # 去除按钮凸起效果 ) # 创建标签和输入框 label = tk.Label(window, text="请输入你想要查询的域名:", bg="#FFDAB9", font=('Helvetica', 14)) label.pack(pady=30) entry = tk.Entry(window, font=('Helvetica', 14)) entry.pack(pady=0) # 创建按钮 button = ttk.Button(window, text="查询", command=show_result, style="TButton") button.pack(pady=30) # 创建结果标签 result_label = tk.Label(window, text="", bg="#FFDAB9", font=('Helvetica', 14)) result_label.pack(pady=10) # 启动主循环 window.mainloop()
注意:
IPv4地址可直接输入使用,仅IPv6地址需要转换格式后才能使用
受不同环境影响,不保证代码可用性,请根据实际情况调整
结尾:
一般情况下,只要网络连接正常,代码功能能轻松实现
注意区分不同网络ip类型,选择合适代码使用
源代码下载:
IPv6版本:Panel-ip6get.py,ip6get-mini.py
通用脚本:Panel-IPget-all.py
自行选择下载版本,可打包后作为程序直接运行
本文链接:
/archives/1702225153589
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
linine的茶歇室!
喜欢就支持一下吧