gpt4 book ai didi

python - 自动检测代理设置 linux

转载 作者:行者123 更新时间:2023-11-28 19:27:12 25 4
gpt4 key购买 nike

我正在编写一个 python 应用程序,它需要从 Internet 发送和检索一些信息。我想自动检测代理设置(以避免要求用户设置代理配置)。似乎urllib可以在 Windows 和 Mac OsX 上执行此操作,但不能在 Unix/Linux 上执行。

我需要/更喜欢使用 mechanize 模块,而不是 urllib/urllib2。 (处理编码为“multipart/form-data”的数据更容易)。

Mechanize 模块可以自动检测代理设置吗?如果为真,它可以在 Windows、Mac OsX 和 Linux 上运行吗?

以下代码不起作用(我在 Linux 上使用代理),除非我取消注释第四行。

import mechanize

br = mechanize.Browser()
#br.set_proxies({'http': 'myproxy.com:3128'})
br.open('http://www.google.com')
response = br.geturl()
print response

我想这意味着 mechanize 无法自动检测代理设置(或者可能是我做错了什么)

如何在 Linux 上自动检测代理设置(使用 python)?

编辑:9 月 9 日添加

我可以确认 Mechanize 在 Windows 上自动检测代理设置,但在 Linux 上没有。作为mru正确地指出在 Linux 下没有确定代理的标准化方法,所以我想最好的解决方案是检查用户是否使用 Linux,在这种情况下尝试从 http_proxy 环境变量或 gconf(对于 Gnome ) 或来自 kioslaverc (KDE)。如果一切都失败了,我会要求用户提供正确的代理设置(我认为这是一个公平的解决方案,因为一方面我认为大多数 Linux 用户都知道代理是什么,另一方面至少我试图让事情变得更简单对于他们 :-) )

最佳答案

一种方法是检查 HTTP_PROXY 环境变量(这是 wget 检查是否必须使用代理的方式)。例如,代码可能如下所示:

import os
import mechanize

br = mechanize.Browser()

proxy = os.environ.get('HTTP_PROXY')
if proxy is not None:
br.set_proxies({'http': proxy})

br.open('http://www.google.com')
response = br.geturl()
print response

但这在 Windows 上不起作用(我不知道 MacOS,因为它是基于 UNIX 的)。

关于python - 自动检测代理设置 linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7338837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com