Windows网络「SSL错误问题」及解决方案

文章目录

问题

当我们使用了神秘力量加持网络后,可能会和国内的镜像源网站的之间发生冲突,典型的有 Python 从网络中安装包,如执行 pip install pingouin 时,受网络影响导致无法完成安装的情况:

方案

将需要访问的网络地址或域名加入到网络代理的白名单中即可解决。可以从神秘力量入手,也可以从 Windows 系统设置入手,神秘力量修改其代理规则即可(有时可能无效),Windows 系统设置手动修改编辑代理服务器即可(重启可能重置)。Windows 系统设置为例以如下图所示:

由于手动设置比较麻烦,这里提供一个 powershell 脚本「代理管理.ps1」自动处理以上步骤,如下所示:

powershell 复制代码
# 关键的传入参数
param (
    [string]$action = "off",
    [string]$additionalBypassItems = "pypi.tuna.tsinghua.edu.cn",
    [switch]$help
)

# 示例帮助
function Display-Help {
    Write-Host "Usage of 代理管理.ps1:"
    Write-Host "    To enable proxy: 盘符:\具体路径\代理管理.ps1 -action 'on' -additionalBypassItems 'domain.com;172.100.*'"
    Write-Host "    To disable proxy: 盘符:\具体路径\代理管理.ps1 -action 'off'"
}

if ($help) {
    Display-Help
    return
}

# 注册表路径
$registryPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
Write-Host "default registryPath: $registryPath"

# 清楚代理
function Clear-Proxy {
    Set-ItemProperty -Path $registryPath -Name ProxyEnable -Value 0
    Remove-ItemProperty -Path $registryPath -Name ProxyServer -ErrorAction SilentlyContinue
    Remove-ItemProperty -Path $registryPath -Name ProxyOverride -ErrorAction SilentlyContinue
    Write-Host "Proxy disabled. ProxyEnable set 0, ProxyServer and ProxyOverride is remove."
}

if ($action -eq "off") {
    Clear-Proxy
    return
} elseif ($action -eq "on") {

} else {
    Write-Host "Invalid action. Use 'on' to enable or 'off' to disable the proxy."
}

# 代理服务器地址
$proxyServer = "127.0.0.1:7890"
Write-Host "default proxyServer: $proxyServer"

# 基本代理排除白名单(本地和内部网络的流量,用分号分隔各个条目)
$baseProxyBypassList = "localhost;127.*;10.*;172.16.*;172.17.*;172.18.*;172.19.*;172.20.*;172.21.*;172.22.*;172.23.*;172.24.*;172.25.*;172.26.*;172.27.*;172.28.*;172.29.*;172.30.*;172.31.*;192.168.*;127.0.0.1"
Write-Host "default baseProxyBypassList: $baseProxyBypassList"

# 宽泛的ip正确性校验
function IsValid-IPAddress($ip) {
    return $ip -match "^\d{1,3}(\.\d{1,3}|\.\*){0,3}(\.\*)?$"
}

# 宽泛的domain正确性校验
function IsValid-Domain($domain) {
    return $domain -match "^((?!-)[A-Za-z0-9-]{1,63}(?<!-)\.)+[A-Za-z]{2,6}$"
}

# 合并基本白名单和额外的白名单条目
$proxyBypassList = $baseProxyBypassList
if ($additionalBypassItems -ne "") {
    $items = $additionalBypassItems.Split(';')
    foreach ($item in $items) {
	$isIPValid = IsValid-IPAddress $item
    	$isDomainValid = IsValid-Domain $item
        if ($isIPValid -or $isDomainValid) {
            $proxyBypassList += ";" + $item
	    Write-Host "new additionalBypassItem: $item"
        } else {
            Write-Host "Invalid item: $item"
        }
    }
}

# 设置代理
function Set-Proxy {
    Set-ItemProperty -Path $registryPath -Name ProxyEnable -Value 1
    Set-ItemProperty -Path $registryPath -Name ProxyServer -Value $proxyServer
    Set-ItemProperty -Path $registryPath -Name ProxyOverride -Value $proxyBypassList
    Write-Host "Proxy enabled. ProxyEnable set 1, ProxyServer and ProxyOverride is set."
}

# 代理管理
if ($action -eq "on") {
    Set-Proxy
    return
} elseif ($action -eq "off") {

} else {
    Write-Host "Invalid action. Use 'on' to enable or 'off' to disable the proxy."
}
相关推荐
白帽黑客沐瑶2 天前
【网络安全就业】信息安全专业的就业前景(非常详细)零基础入门到精通,收藏这篇就够了
网络·安全·web安全·计算机·程序员·编程·网络安全就业
树码小子2 天前
Java网络编程:(socket API编程:TCP协议的 socket API -- 回显程序的服务器端程序的编写)
java·网络·tcp/ip
绿箭柠檬茶2 天前
Ubuntu 服务器配置转发网络访问
服务器·网络·ubuntu
real 12 天前
传输层协议UDP
网络·网络协议·udp
路由侠内网穿透2 天前
本地部署 GPS 跟踪系统 Traccar 并实现外部访问
运维·服务器·网络·windows·tcp/ip
喵手3 天前
玩转Java网络编程:基于Socket的服务器和客户端开发!
java·服务器·网络
徐子元竟然被占了!!3 天前
实验-基本ACL
网络
ftpeak3 天前
从零开始使用 axum-server 构建 HTTP/HTTPS 服务
网络·http·https·rust·web·web app
LabVIEW开发3 天前
LabVIEW气体污染无线监测
网络·labview·labview知识·labview功能·labview程序
error:(3 天前
【从零到公网】本地电脑部署服务并实现公网访问(IPv4/IPv6/DDNS 全攻略)
网络·智能路由器