【问题标题】:Curl: Bypass proxy for localhostCurl:绕过本地主机的代理
【发布时间】:2012-11-13 14:33:51
【问题描述】:

我在代理下,如果我尝试curl http://localhost/mysitecurl http://127.0.0.1/mysite curl 尝试使用代理解决它。所以我尝试了--noproxy 选项,但不起作用。代理为curl http://mysite.com 的外部服务器工作正常。

我的配置:

  • Windows 8 下带有 curl 扩展的 Cygwin (bash)。
  • 代理:proxy.domain.xx:1080 没有身份验证
  • http_proxy=http://proxy.domain.xx:1080
  • 本地服务器:XAMP 版本 1.8.0
  • Apache 端口:80,443
  • 浏览器:带代理的 Chrome,但配置为访问 localhost*.dev

来自 curl --help

--noproxy : 逗号分隔的不使用代理的主机列表

我尝试了什么:

  • 我已停用防火墙,但什么也没有
  • $ curl -v http://localhost/mysite -> 调试:

    回应

    Connected to proxy.domain.xx (200.55.xxx.xx) port 1080 (#0)
    GET http://localhost/mysite HTTP/1.1
    User-Agent: curl/7.21.1 (i686-pc-mingw32) libcurl/7.21.1 OpenSSL/0.9.8r zlib/1.2.3
    Host: localhost
    Accept: */*
    Proxy-Connection: Keep-Alive
    The system returned: <PRE><I>(111) Connection refused</I></PRE>
    
  • curl -v --noproxy localhost, http://localhost/muestra

    回应

    About to connect() to localhost port 80 (#0)
    * Trying 127.0.0.1... 
    * Connected to localhost (127.0.0.1) port 80 (#0)
    > GET /mysite HTTP/1.1
    > User-Agent: curl/7.21.1 (i686-pc-mingw32) libcurl/7.21.1 OpenSSL/0.9.8r zlib/1.2.3
    > Host: localhost
    > Accept: */*
    >
    < HTTP/1.1 301 Moved Permanently
    < Server: Apache/2.4.2 (Win32) OpenSSL/1.0.1c PHP/5.4.4
    < Location: http://localhost/mysite
    < Content-Length: 331
    < Content-Type: text/html; charset=iso-8859-1
    

知道如何解决这个问题吗?

【问题讨论】:

  • 你试过export no_proxy=localhost吗?
  • 同样的事情...301 Moved Permanently(--noproxy) 或(111) Connection refused(默认使用)
  • 我会说--noproxy 根据您的调试信息工作。 301 Moved Permanently 表示别的意思:en.wikipedia.org/wiki/HTTP_301

标签: bash curl proxy


【解决方案1】:

之后

curl -v --noproxy localhost, http://localhost/muestra

curl 回应了

About to connect() to localhost port 80 (#0)
* Trying 127.0.0.1... 
* Connected to localhost (127.0.0.1) port 80 (#0)

所以它清楚地表明它连接到本地主机。

【讨论】:

  • 三年后,非常有帮助!
  • @BlakeNeal 对不起,伙计,2021 年在这里。仍然有帮助:)
【解决方案2】:

在下面尝试,绕过本地 ips 的代理服务

export no_proxy=localhost,127.0.0.1

【讨论】:

  • @JJJ,它将绕过本地地址的代理服务。
  • 这不仅适用于 curl,而且适用于 CLI 上运行的所有命令。
【解决方案3】:

使用

curl -v --noproxy '*' http://abc.com

完全禁用代理。

或者如果您只想为 abc.com 目标禁用代理

curl -v --noproxy "abc.com" http://abc.com

abc.com 是你想去的网址

【讨论】:

    【解决方案4】:

    正如其他人所说,--noproxy 选项正是您所寻找的。 https://curl.haxx.se/docs/manpage.html#--noproxy

    显然,您尝试的第二个请求是接收 HTTP 301 响应,因此您可能还想使用 -L 选项来跟踪重定向: https://curl.haxx.se/docs/manpage.html#-L

    您可以为 curl 设置别名以始终忽略 localhost 请求的代理。

    alias curl='curl --noproxy localhost,127.0.0.1'

    为方便起见,将其添加到您的 .bashrc 文件中:

    echo "alias curl='curl --noproxy localhost,127.0.0.1'" &gt;&gt; ~/.bashrc

    【讨论】:

      【解决方案5】:

      在 Windows 中,以下选项适用于我连接到 localhost。

      curl --proxy "" --location http://127.0.0.1:8983

      【讨论】:

      • 我的工作也没有--location 选项。有什么原因吗?
      【解决方案6】:

      Curl 期望使用代理指定端口,此解决方案对我有用

      导出 http_proxy="http://myproxy:80"

      【讨论】:

        【解决方案7】:

        作为一种解决方法,您可以在运行 curl 之前取消设置变量 http_proxy,而不使用 --noproxy 选项。

        【讨论】:

          猜你喜欢
          • 2023-02-14
          • 2010-10-31
          • 2020-03-17
          • 2011-11-20
          • 1970-01-01
          • 1970-01-01
          • 2013-02-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多