首页 > 编程语言 >记录 python request ProxyError报错

记录 python request ProxyError报错

时间:2023-07-05 18:33:26浏览次数:58  
标签:http python urllib3 代理服务器 ProxyError 报错 proxy https pip

【出自】:https://zhuanlan.zhihu.com/p/350015032   侵删

 

解决办法:在原报错环境中使用下面命令重装低版本 urllib3

pip install urllib3==1.25.11

 

问题根源

先查了一下 urllib3 的更新日志,应该是 1.26.0 的修改导致的:

 

 

按照这个更新日志,明明应该是增加了 HTTPS 的支持,怎么反而让它失效了呢?

我一时搞不明白这个问题,但是想起了我最近遭遇到了另一个问题,然后意外地找到了真相:

同样遭遇代理错误的 pip

同样是在这个环境中,其实在一开始我就遭遇了 pip install 安装包失败的问题,报错信息是:

​ 'ProxyError('Cannot connect to proxy.', FileNotFoundError(2, 'No such file or directory'))'

同样是取消系统代理就能正常安装,就没太在意了。

但是在降级 urllib3 解决了 requests 的 ProxyError 之后,我开始怀疑 pip 安装是不是也是这个问题呢?

直接在降级了 urllib3 的环境中测试了一下,错误仍然存在,但是版本整体较低的环境中,是没有问题的!

于是继续对比版本包,结果在 pip 包的路径下发现有一个 _vendor\urllib3 目录,原来 pip 是直接把 urllib3 集成到了自己的包里面,不受系统安装包的影响。检查其中的 _version.py 里的版本信息,果然也是 1.26.x

出错的 pip 的版本是 20.3,把 pip 也降级到 20.2 以下,就没有问题了。

显然,鉴于 pip 的高频使用,这种致命的问题不可能没人报,所以在 pip 项目的 issue 列表里很快就找到了相关讨论:

https://github.com/pypa/pip/issues/9216​github.com/pypa/pip/issues/9216

urllib3 更新了啥

根据 https://github.com/pypa/pip/issues/9216#issuecomment-741836058 所说,更改代理配置可以解决问题:

 

 

绕了好大一圈大概明白是怎么回事了:

以前 urllib3 其实并不支持 https 代理,也就是说代理服务器的地址虽然大家配置的是 https,但是一直都是悄无声息地就按照 http 连接的,刚好代理服务器确实也只支持 http,所以皆大欢喜。

现在 urllib3 要支持 https 代理了,那么既然配置代理是 https 就尝试用 https 的方式去连接,但是由于代理服务器其实只支持 http,所以没法处理请求,ssl 握手阶段就出错了。

注意,这里的 https 是指代理服务器自己的,和我们要访问的目标网站无关。

因为目标网站的协议和代理服务器的协议并不要求一样,所以只需要更改代理配置 ,将访问 https 网站的代理服务器地址改为 http 即可,也就是这样:

HTTPS_PROXY=http://proxy_ip:proxy_port

前面的 HTTPS_ 表示,如果访问的站点是 https 的,需要走这里配置的代理服务器;后面的 http:// 则表示这个代理服务器自己只支持 http

而我们一直以来看到的配置建议,这两者前后通常都是保持一致的:

HTTP_PROXY=http://proxy_ip:proxy_port
HTTPS_PROXY=https://proxy_ip:proxy_port

这个是错误的!

标签:http,python,urllib3,代理服务器,ProxyError,报错,proxy,https,pip
From: https://www.cnblogs.com/jueshilaozhongyi/p/17529519.html

相关文章

  • Element-plus按需导入后,组件的正确使用和使用组件时TS报错找不到名称“xxxx”
    1.按需导入后使用组件Element-plus组件库的示例代码中,都import导入了组件,如:<template><el-buttontype="primary"@click="openFullScreen2">Asaservice</el-button></template><scriptlang="ts"setup>import{ElLoad......
  • Nacivate 连接远程mysql时 报错 Lost connection to MySQL server at ‘reading initi
    出现这种报错首先要检查第一:查看mysql的配置文件 /etc/my.cnf,根据服务器的不同以及安装的mysql版本有的是配置文件/etc/mysql/conf.d/50.server.confstep1:注释bind-address=127.0.0.1这句step2:找到[mysqld]部分的参数,在配置后面建立一个新行,添加skip-name-resolve......
  • python基础day38 并发编程
    进程概念进程、线程都是操作系统中的基本概念,也就是说进程和线程都是操作系统层面的东西,专业术语表达就是进程和线程都是由操作系统来调度的,而不是由我们程序员自己来操控的。在操作系统这门课里面,进程和线程是操作系统的概念,协程不是操作系统中的概念,而是我们程序员层面的协程......
  • python之x-mind中的测试用例内容转excel
    注意:导包xlwt生成的excel的文件后缀只能是xls,用xlsx打开文件会报错一、文件格式1.x-mind用例格式,若觉得字段太多可在代码中缩减 2.转后的excel格式 二、脚本(原贴:caituotuo.top/c2d10f21.html)修改最下面文件路径即可用importxlwtfromxmindparserimportxmind_to_dic......
  • python批量自动化工作
    将下述内容批量转换成指定的格式复仇之魂,众神之王,魅惑魔女,变体精灵,水晶室女,流浪剑客,娜伽海妖,撼地神牛,隐形刺客,秀豆魔导师,熊德,剑圣月之骑士,矮人火枪手,巨魔战将,暗影萨满,钢背兽,熊猫酒仙,半人马酋长,赏金猎人,龙骑士,敌法师,黑暗游侠,全能骑士,沉默术士,树精卫士,谜团,光之守卫,熊战士,食......
  • echarts 在使用dataZoom时报错,Cannot read properties of undefined (reading 'type')
    今天我再vue中使用柱状图拖动时,一直报错Cannotreadpropertiesofundefined(reading'type')。原因如下,我使用了myChart来接收数据,当myChart使用的是vue的ref或者reactive来命名的变量,如果这样子命名就会报上述错误。myChart=echarts.init(statistical......
  • python基础 进程、操作系统调度算法、同步异步、开启进程、process类的参数、进程锁、
    进程概念进程、线程都是操作系统中的基本概念,也就是说进程和线程都是操作系统层的东西,专业术语表达就是进程和线程的使用都是由操作系统来调度的‘,而不是由我们来操控的。在操作系统这门课里,进程和线程是操作系统的概念,协程不是操作系统中的概念,而是我们程序层面的......
  • python条件判断语句
    if条件判断语句if条件:(缩进)语句块一语句块二python的条件判断语句是没有括号的,对于所匹配的代码块的精准定位是通过缩进实现的,这是python的一大特色。、if条件:   语句块一else:   语句块二如果还有更多条件的话可以引入elifif条件:   语句块一e......
  • 1 opencv-python图像读写模块
    这个分类记录自己学习opencv的随笔文档,方便以后查询和复习。python-opencv环境配置网上教程很多,此处就不做赘述了,该文档记录opencv最基础的图像读写和显示,工具是jupyternotebook。1opencv中,图像读取函数是imread(filename,flags=None)参数说明:filename:读取图像的路径,通常支......
  • 修复idea lombok报错
    错误信息:Youaren'tusingacompilersupportedbylombok,solombokwillnotworkandhasbeendisabled.Yourprocessoris:com.sun.proxy.$Proxy8Lomboksupports:sun/applejavac1.6,ECJ 解决:编译器-共享构建过程VM选项:-Djps.track.ap.dependencies=false......