113 lines
3.7 KiB
Python
113 lines
3.7 KiB
Python
import sys
|
|
import winreg
|
|
|
|
def get_current_proxy():
|
|
"""获取当前系统代理设置"""
|
|
try:
|
|
internet_settings = winreg.OpenKey(
|
|
winreg.HKEY_CURRENT_USER,
|
|
r'Software\Microsoft\Windows\CurrentVersion\Internet Settings',
|
|
0,
|
|
winreg.KEY_READ
|
|
)
|
|
proxy_server, _ = winreg.QueryValueEx(internet_settings, 'ProxyServer')
|
|
proxy_enable, _ = winreg.QueryValueEx(internet_settings, 'ProxyEnable')
|
|
winreg.CloseKey(internet_settings)
|
|
return {
|
|
'enabled': bool(proxy_enable),
|
|
'server': proxy_server
|
|
}
|
|
except FileNotFoundError:
|
|
return {'enabled': False, 'server': ''}
|
|
except Exception as e:
|
|
print(f"获取代理设置失败: {e}")
|
|
return {'enabled': False, 'server': ''}
|
|
|
|
def set_proxy(proxy_host, proxy_port):
|
|
"""设置系统代理"""
|
|
try:
|
|
internet_settings = winreg.OpenKey(
|
|
winreg.HKEY_CURRENT_USER,
|
|
r'Software\Microsoft\Windows\CurrentVersion\Internet Settings',
|
|
0,
|
|
winreg.KEY_ALL_ACCESS
|
|
)
|
|
|
|
proxy_server = f'{proxy_host}:{proxy_port}'
|
|
winreg.SetValueEx(internet_settings, 'ProxyServer', 0, winreg.REG_SZ, proxy_server)
|
|
winreg.SetValueEx(internet_settings, 'ProxyEnable', 0, winreg.REG_DWORD, 1)
|
|
winreg.CloseKey(internet_settings)
|
|
|
|
print(f"✅ 系统代理已设置为: {proxy_server}")
|
|
return True
|
|
except Exception as e:
|
|
print(f"❌ 设置代理失败: {e}")
|
|
return False
|
|
|
|
def unset_proxy():
|
|
"""取消系统代理"""
|
|
try:
|
|
internet_settings = winreg.OpenKey(
|
|
winreg.HKEY_CURRENT_USER,
|
|
r'Software\Microsoft\Windows\CurrentVersion\Internet Settings',
|
|
0,
|
|
winreg.KEY_ALL_ACCESS
|
|
)
|
|
|
|
winreg.SetValueEx(internet_settings, 'ProxyEnable', 0, winreg.REG_DWORD, 0)
|
|
winreg.CloseKey(internet_settings)
|
|
|
|
print("✅ 系统代理已取消")
|
|
return True
|
|
except Exception as e:
|
|
print(f"❌ 取消代理失败: {e}")
|
|
return False
|
|
|
|
def show_status():
|
|
"""显示当前代理状态"""
|
|
proxy = get_current_proxy()
|
|
print("\n当前代理状态:")
|
|
print(f" 代理已启用: {'是' if proxy['enabled'] else '否'}")
|
|
if proxy['enabled']:
|
|
print(f" 代理服务器: {proxy['server']}")
|
|
print()
|
|
|
|
def main():
|
|
if len(sys.argv) < 2:
|
|
print("=" * 50)
|
|
print(" Windows系统代理管理脚本")
|
|
print("=" * 50)
|
|
print("用法:")
|
|
print(f" {sys.argv[0]} status - 查看当前代理状态")
|
|
print(f" {sys.argv[0]} set <host> <port> - 设置代理服务器")
|
|
print(f" {sys.argv[0]} unset - 取消代理设置")
|
|
print(f" {sys.argv[0]} localhost - 快速设置为 localhost:8080")
|
|
print("\n示例:")
|
|
print(f" {sys.argv[0]} set 192.168.1.50 8080")
|
|
print(f" {sys.argv[0]} localhost")
|
|
print(f" {sys.argv[0]} unset")
|
|
print("=" * 50)
|
|
return
|
|
|
|
command = sys.argv[1].lower()
|
|
|
|
if command == 'status':
|
|
show_status()
|
|
elif command == 'set':
|
|
if len(sys.argv) < 4:
|
|
print("❌ 参数不足,请提供代理服务器地址和端口")
|
|
print(f" 示例: {sys.argv[0]} set 192.168.1.50 8080")
|
|
return
|
|
proxy_host = sys.argv[2]
|
|
proxy_port = sys.argv[3]
|
|
set_proxy(proxy_host, proxy_port)
|
|
elif command == 'unset':
|
|
unset_proxy()
|
|
elif command == 'localhost':
|
|
set_proxy('localhost', '8080')
|
|
else:
|
|
print(f"❌ 未知命令: {command}")
|
|
|
|
if __name__ == '__main__':
|
|
main()
|