首页 > 解决方案 > 对内部网站的 curl 请求

问题描述

我正在尝试使用 cURL(和 python-requests)从内部网站检索信息。我努力了

curl -v -u "username:password" https://internalwebsite.com/

但我不断收到以下错误(python-requests 也有类似错误)

curl: (56) Received HTTP code 502 from proxy after CONNECT.

这是整个错误打印输出的图像。图片链接

我可以使用浏览器访问该链接,如果我查看浏览器开发人员选项的网络选项卡下的请求并将请求复制为 cURL。我明白了

curl "https://internalwebsite.com/" -H "Host: myhosthere" -H "User-Agent: some user agent here" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" -H "Accept-Language: en-US,en;q=0.5" --compressed -H "Connection: keep-alive" -H "Upgrade-Insecure-Requests: 1" -H "Authorization: Basic somebase64stringhere"

但这也会导致与以前相同的错误。现在我知道可能很难找到确切的解决方案,我只想在向 IT 团队询问他们可能不支持的工具之前收集更多信息。

基本上我想知道,curl 请求与服务器端的浏览器有何不同?尽管使用了与我的浏览器相同的用户代理,但链接(Rest API)通过浏览器工作得非常好,但不能通过 curl。

我需要一个“传出”代理来访问互联网。为了通过 curl 请求访问内部网站,是否还需要连接“传入代理”之类的东西?内部网站只能从公司网络内访问,我所有的 cURL 请求都是从公司网络内发出的。似乎我的浏览器在网络上通过了身份验证,但不是 cURL?

更新:

有关确切的解决方案,请参阅已接受答案下方的评论。

标签: curlnetwork-programmingpython-requests

解决方案


curl 找到一个告诉它使用代理的环境变量,因此它连接到该代理并在CONNECT那里发出一个,然后返回 502...

如果要禁用此命令行的代理,请执行以下操作之一:

  • 利用-x ""
  • 用于--noproxy指定不应使用代理的域
  • 删除环境变量(*_proxy东西)
  • 将此域添加到NO_PROXY环境变量

推荐阅读