【问题标题】:ERROR: Proxy URL had no scheme. However, URL & Proxies are properly setup错误:代理 URL 没有方案。但是,正确设置了 URL 和代理
【发布时间】:2021-07-04 16:59:33
【问题描述】:

我收到了错误:

urllib3.exceptions.ProxySchemeUnknown:代理 URL 没有方案,应该以 http:// 或 https:// 开头

但是代理很好,URL 也很好。

            URL = f"https://google.com/search?q={query2}&num=100"
            mysite = self.listbox.get(0)
            headers = {"user-agent": USER_AGENT}

            while True:
                proxy = next(proxy_cycle)
                print(proxy)
                proxies = {"http": proxy, "https": proxy}
                print(proxies)
                resp = requests.get(URL, proxies=proxies, headers=headers)
                if resp.status_code == 200:
                    break

打印结果:

41.139.253.91:8080

{'http': '41.139.253.91:8080', 'https': '41.139.253.91:8080'}

【问题讨论】:

  • 错误再清楚不过了,不是吗?您的代理必须是 http://41.139.253.91:8080
  • 看起来与github.com/psf/requests/issues/5297 相关。似乎 OP 的方法在过去有效,但不适用于当前版本的 Python。那里的解决方案似乎与@TimRoberts 所说的完全一样。
  • 是的,它以前是这样工作的,没有意识到我现在必须手动添加 HTTP:// 和 https://

标签: python python-3.x python-requests


【解决方案1】:

我遇到了同样的问题,我的终端 https_proxy 变量中的设置确实帮助了我。可以这样设置:

set HTTPS_PROXY=http://username:password@proxy.example.com:8080 
set https_proxy=http://username:password@proxy.example.com:8080

proxy.example.com 是代理地址(在我的例子中是“localhost”),8080 是我的端口。

您可以通过在命令行中键入 echo %username% 来确定您的用户名。至于代理服务器,在 Windows 上,您需要转到“Internet 选项”->“连接”-> LAN 设置并勾选“为您的 LAN 使用代理服务器”。在那里,您可以找到您的代理地址和端口。

这里有一个重要说明。如果您使用的是 PyCharm,请先尝试从终端运行您的脚本。我这样说是因为如果你只是通过“按下”按钮来运行文件,你可能会遇到同样的错误。但是使用终端可能会帮助您摆脱这个错误。

P.S. 另外,您可以尝试将您的点子降级到 20.2.3,因为它也可能对您有所帮助。

【讨论】:

    【解决方案2】:

    在 Linux 上,使用项目当前位置的终端取消设置 http_proxy 和 https_proxy

    unset http_proxy
    
    unset https_proxy
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多