通过 Python 请求模块发出 HTTP 请求无法通过代理工作,而curl却可以工作?为什么?

2023-11-23

使用这个curl命令我能够从Bash获得我正在寻找的响应

curl -v -u z:secret_key --proxy http://proxy.net:80  \
-H "Content-Type: application/json" https://service.com/data.json

我已经看过关于带有请求模块的代理的另一篇文章

它帮助我用 Python 编写代码,但我需要通过代理发出请求。然而,即使提供适当的代理,它也不起作用。也许我只是没有看到一些东西?

>>> requests.request('GET', 'https://service.com/data.json', \
>>> headers={'Content-Type':'application/json'}, \ 
>>> proxies = {'http' : "http://proxy.net:80",'https':'http://proxy.net:80'}, \
>>> auth=('z', 'secret_key'))

此外,在同一个 python 控制台中,我可以使用 urllib 发出请求,使其成功。

>>> import urllib
>>> urllib.urlopen("http://www.httpbin.org").read()
---results---

即使仅尝试对非 https 地址发出请求也无法正常工作。

>>> requests.get('http://www.httpbin.org')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Python/2.6/site-packages/requests/api.py", line 79, in get
   return request('get', url, **kwargs)
File "/Library/Python/2.6/site-packages/requests/api.py", line 66, in request
    prefetch=prefetch
File "/Library/Python/2.6/site-packages/requests/sessions.py", line 191, in request
    r.send(prefetch=prefetch)
File "/Library/Python/2.6/site-packages/requests/models.py", line 454, in send
    raise ConnectionError(e)
requests.exceptions.ConnectionError: Max retries exceeded for url:

Requests 是如此优雅和令人敬畏,但在这种情况下它怎么会失败呢?


问题实际上在于 python 的标准 url 访问库 - urllib/urllib2/httplib。我不记得哪个库是确切的罪魁祸首,但为了简单起见,我们将其称为 urllib。不幸的是,urllib 没有实现通过 http(s) 代理访问 https 站点所需的 HTTP Connect 方法。我使用 urllib 添加功能的努力没有成功(自从我尝试以来已经有一段时间了)。因此,不幸的是,我知道唯一可行的选择是在这种情况下使用 pycurl 。

然而,有一个相对干净的解决方案,它的 API 与 python 请求几乎完全相同,但它使用 pycurl 后端而不是 python 标准库。

该图书馆被称为人类卷曲。我自己已经使用过并且取得了很好的效果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 Python 请求模块发出 HTTP 请求无法通过代理工作,而curl却可以工作?为什么? 的相关文章

  • 行未从树视图复制

    该行未在树视图中复制 我在按行并复制并粘贴到未粘贴的任何地方后制作了弹出复制 The code popup tk Menu tree opportunity tearoff 0 def row copy item tree opportun
  • Tensorflow 可变图像输入大小(自动编码器、放大......)

    Edit WARNING不建议使用不同图像大小的图像 因为张量需要具有相同的大小才能实现并行化 我一直在寻找解决方案 了解如何使用不同大小的图像作为神经网络的输入 Numpy 第一个想法是使用numpy 然而 由于每个图像的大小不同 我无法
  • python - 是否可以扩展 xml-rpc 可以序列化的事物集?

    我看到几个问题询问如何发送numpy ndarray通过 xml rpc 调用 这不能开箱即用 因为正如 xml rpc 中所述docs https docs python org 2 library xmlrpclib html 有一组固
  • 从字符串到类型的词法转换

    最近 我尝试用Python存储和读取文件中的信息 遇到了一个小问题 我想从文本文件中读取类型信息 从 string 到 int 或 float 的类型转换非常有效 但从 string 到 type 的类型转换似乎是另一个问题 当然 我尝试了
  • 在python中将文本文件解析为列表

    我对 Python 完全陌生 我正在尝试读取包含单词和数字组合的 txt 文件 我可以很好地读取 txt 文件 但我正在努力将字符串转换为我可以使用的格式 import matplotlib pyplot as plt import num
  • Python 3 __getattribute__ 与点访问行为

    我读了一些关于 python 的对象属性查找的内容 这里 https blog ionelmc ro 2015 02 09 understanding python metaclasses object attribute lookup h
  • PIL Image.size 返回相反的宽度/高度

    使用PIL确定图像的宽度和高度 在特定图像上 幸运的是只有这一个 但这很麻烦 从 image size 返回的宽度 高度是相反的 图片 http storage googleapis com cookila 533ebf752b9d1f7c
  • Pandas重置索引未生效[重复]

    这个问题在这里已经有答案了 我不确定我在哪里误入歧途 但我似乎无法重置数据帧上的索引 当我跑步时test head 我得到以下输出 正如您所看到的 数据帧是一个切片 因此索引超出范围 我想做的是重置该数据帧的索引 所以我跑test rese
  • 如何限制Django CreateView中ForeignKey字段的选择?

    我有一个沿着这些思路的模型结构 models py class Foo models Model class Bar models Model foo models ForeignKey Foo class Baz models Model
  • Python igraph:从图中删除顶点

    我正在使用安然电子邮件数据集 并尝试删除没有 enron com 的电子邮件地址 即我只想拥有安然电子邮件 当我尝试删除那些没有 enron com 的地址时 一些电子邮件由于某些原因被跳过 下面显示了一个小图 其中顶点是电子邮件地址 这是
  • “char”/“character”类型的类型提示

    char 或 character 没有内置的原始类型 因此显然必须使用长度为 1 的字符串 但是为了暗示这一点并暗示它应该被视为一个字符 如何通过类型提示来实现这一点 grade chr A 一种方法可能是使用内置的 chr 函数来表示这一
  • 无法打开 Python。错误 0xc000007b

    我最近一直在学习 Python 3 我在我的上网本 32 位 Windows 7 上创建简单的小程序没有任何问题 当我将它安装在我的上网本上时 我没有遇到任何问题 但现在我已经开始使用它了 我想将它安装在我的台式机上 并且我有一个 我的桌面
  • 如何通过双击在浏览器中打开 ipynb 文件

    以前 我安装了 Canopy 当时 我只需双击 ipynb 文件并在浏览器中打开它们即可 但是 后来我需要Anaconda 一旦我安装了它 这个功能就没有了 现在我只希望能够简单地双击 ipynb 文件 然后该文件就会在 Firefox 中
  • matplotlib matshow 标签

    我一个月前开始使用 matplotlib 所以我仍在学习 我正在尝试用 matshow 制作热图 我的代码如下 data numpy array a reshape 4 4 cax ax matshow data interpolation
  • 具有多个元素的数组的真值是二义性错误吗? Python

    from numpy import from pylab import from math import def TentMap a x if x gt 0 and x lt 0 5 return 2 a x elif x gt 0 5 a
  • Python 中的 @staticmethod 与 @classmethod

    方法和方法有什么区别装饰的 https peps python org pep 0318 with staticmethod http docs python org library functions html staticmethod和
  • 在 MacO 和 Linux 上安装 win32com [重复]

    这个问题在这里已经有答案了 我的问题很简单 我可以安装吗win32com蟒蛇API pywin32特别是 在非 Windows 操作系统上 我一直在Mac上尝试多个版本pip install pywin32 都失败了 下面是一个例子 如果你
  • Airflow Python 单元测试?

    我想为我们的 DAG 添加一些单元测试 但找不到任何单元测试 有 DAG 单元测试框架吗 有一个端到端的测试框架存在 但我猜它已经死了 https issues apache org jira browse AIRFLOW 79 https
  • 如何通过字符串匹配加速 pandas 行过滤?

    我经常需要过滤 pandas 数据框df by df df col name string value 并且我想加快行选择操作 有没有快速的方法可以做到这一点 例如 In 1 df mul df 3000 2000 3 reset inde
  • 异步和协程与任务队列

    我一直在阅读有关 python 3 中的 asyncio 模块的内容 以及更广泛地了解 python 中的协程的内容 但我不明白是什么让 asyncio 成为如此出色的工具 我的感觉是 你可以用协程做的所有事情 通过使用基于多处理模块 例如

随机推荐

  • Java 打印包含整数的字符串

    我有一个疑问 public static void main String args throws IOException int number 1 System out println M number 1 Output M11 但我想把
  • 从 Rails 外部的 HAML 内部渲染 HAML 部分

    我正在使用 HAML 为网站生成一些静态 html 页面 并且我想将公共组件拆分为可以包含在多个页面中的部分 就像在 Rails 中一样 然而 我不想使用整个 Rails 堆栈来执行此操作 因为这看起来有些过头了 我在互联网上环顾四周 但没
  • java中的equals()和运算符“==”

    我知道equals 将比较对象的值 运算符将检查变量是否指向同一内存 我不明白怎么办equals 比较对象的值 例如 class Test public Test int x float y this x x this y y int x
  • 有时,在乒乓球比赛中球不会从球拍上弹起

    我有一个简单的乒乓球游戏 大部分效果都很好 但有时会出现球不弹起球拍的情况 球沿着桨叶摆动和滑动 桨叶似乎用磁力拉动球 如动画所示 每次当球周围的矩形碰撞桨矩形时 球的方向就会改变 if ball colliderect paddleLef
  • 如何从 Python 中的任何应用程序捕获剪贴板事件(相当于 onChangeClipboard)

    我正在研究剪贴板管理器 我当前的问题是成功捕获任何应用程序对剪贴板的修改 例如 从 ctrl c 右键单击并复制到剪贴板 这个想法是Python脚本在后台运行 就像一个恶魔一样 捕捉剪贴板的每一个变化 万分感谢 附 对于了解 autohot
  • SQL grant 在多个对象上执行

    大家好 我想为用户添加多个对象的执行权限 但我似乎无法在代码中添加通配符 GRANT EXECUTE ON OBJECT dbo CREATESERVERSESSIONS TO domain user 这可行 但我有很多以 XU 开头的存储
  • CosmosDB 按值将结果排序到数组中

    我有一些如下所示的 CosmosDB 文档 ProductId 1 Status true Code 123456 IsRecall false ScanLog Location type Point coordinates 13 5957
  • 无法打开登录请求的数据库。登录失败。用户登录失败

    我从我的一台计算机复制了一个数据库并在这里使用它 在尝试打开需要从数据库获取内容的页面时 在 con open 上我收到此异常 无法打开物理文件 E Program Files Microsoft SQL Server MSSQL10 SQ
  • ImportError:DLL 加载失败:动态链接库 (DLL) 初始化例程失败

    我在 Conda 环境中使用 CUDA Toolkit v9 0 和 cuDNNv7 1 以及 Python 3 6 安装了具有 CPU 支持的 TensorFlow 我按照 TensorFlow 网站中描述的说明进行操作 当我尝试时 im
  • 使用异步 chrome.storage 时如何重构全局变量?

    要在迁移到 MV2 事件页面或 MV3 Service Worker 时删除持久 MV2 后台脚本中使用的全局变量 我找到的所有指南都只给出了一个示例 用几行设置替换单个全局变量 然后开始使用chrome storage 但我仍然不清楚如何
  • 使用fragmentStatePagerAdapter更新viewpager中的片段/视图

    需要一些帮助来解决我在使用 viewpager 时更新页面的问题 我正在使用带有 FragmentStatePagerAdapter 的简单视图分页器 我想要做的就是访问当前片段 视图 以便我可以更新片段 视图中的一些文本视图 我在论坛里搜
  • 将 Interlocked.CompareExchange 与类一起使用

    System Threading Interlocked CompareExchange运算符提供比较和交换操作的原子 因此线程安全 C 实现 例如int i 5 Interlocked CompareExchange ref i 10 5
  • 当期望服务器端一次性响应时,长轮询与 websocket

    我读过很多关于实时推送通知的文章 总结一下 只要您不关心 100 的浏览器兼容性 websocket 通常是首选技术 但是 一篇文章指出 长轮询 可能当您与以下对象交换单个呼叫时 服务器 服务器正在后台做一些工作 这正是我的情况 用户按下一
  • 运算符的递归应用->

    据说箭头运算符是递归应用的 但是当我尝试执行以下代码时 它在应该打印 4 的情况下却打印出乱码 class dummy public int p int operator gt return 4 class screen public du
  • HAML:仅当条件为真时才创建容器/包装元素

    远景 但我想知道是否有什么办法可以做到这样的事情 p ONLY SHOW THIS IF LOCAL VARIABLE show paras IS TRUE name 换句话说 它总是显示内部的内容 但如果 某些条件 为真 它只会在其周围包
  • 如何以表格格式将对象列表打印到文件

    我必须将对象列表打印到表格格式的文本文件中 例如 如果我有 Person 具有 getName getAge 和 getAddress 方法 对象列表 则文本文件应如下所示 Name Age Address Abc 20 some addr
  • 处理器指令周期执行时间

    我的猜测是 no operation 内在 ARM 指令应花费 1 168 MHz 来执行 前提是每个NOP在一个时钟周期内执行 我想通过文档验证这一点 有关处理器指令周期执行时间的信息是否有标准位置 我试图确定 STM32f407IGh6
  • 按轴分数定位文本

    有没有办法通过轴的分数在图中定位文本 我希望所有绘图的文本都位于相同位置 无论 x 和 y 的范围如何不同 此功能位于 ax annotate 中 但我需要放入额外的 xy 参数 这使得我的代码更难阅读 import matplotlib
  • 我可以从 Qt 程序(在嵌入式 Linux 上)使用什么 EXIF 库?

    有人可以推荐一个可以与 Qt 程序一起使用的 tiff img 的不错的 exif 库吗 我想读取和写入 exif 数据 请注意 我需要一个与闭源程序兼容的许可证 因此 使用 LGPL 或 BSD 风格许可证的库会非常好 我的第一个计划是使
  • 通过 Python 请求模块发出 HTTP 请求无法通过代理工作,而curl却可以工作?为什么?

    使用这个curl命令我能够从Bash获得我正在寻找的响应 curl v u z secret key proxy http proxy net 80 H Content Type application json https service