我正在使用 curl 请求使用以下Location:行重定向到不同 URL 的 URL :
Location:/path/to/resource#name
Run Code Online (Sandbox Code Playgroud)
据我了解,根据 HTTP 规范,重定向响应中的那一行是无效的,因此整个 curl 调用失败是可以理解的(在这种情况下,响应代码为 400)。但是,使用 wget 或 Web 浏览器请求 URL 会成功呈现页面(我假设通过在重定向之前填充绝对路径或删除锚标记的启发式方法)。
有什么我可以做的让 curl 做同样的事情(做成功跟随重定向所必需的事情,即使它是“正式”格式错误的)?
编辑:更多细节。最终的响应代码是 400(不是 404 或其他)。当我做一个HEAD请求(有curl -I -L),我得到一个302 Found(有Location: /Error)重定向到500 Server Error。但是,如果我执行常规请求(没有-I选项但有-L选项),我会得到http_code(在 curl 中--write-out)的400. 因此,在这种情况下,HEAD 请求的功能似乎与标准 GET 不同。
尝试在 OS X Mountain Lion 上通过 brew 安装 imagemagick 时出现以下错误。它似乎是一个 curl 错误 - 因此为什么它在 SF 上而不是在另一个 Stack Exchange 站点上。
brew install imagemagick
==> Installing imagemagick dependency: pkg-config
==> Downloading http://pkgconfig.freedesktop.org/releases/pkg-config-0.27.tar.gz
curl: (7) couldn't connect to host
Error: Download failed: http://pkgconfig.freedesktop.org/releases/pkg-config-0.27.tar.gz
Run Code Online (Sandbox Code Playgroud)
运行brew install imagemagick命令时是否可以选择其他下载位置?
这是一个已知问题吗,我已经搜索过类似的问题,但似乎没有一个是相同的。
我无法使用外部 EC2 ip 地址卷曲我已安装的软件之一,但是如果我使用 localhost:5000(或 127.0.0.1:5000)卷曲,它工作正常。任何见解将不胜感激。
我已经安装了这 3 个项目:
使用外部 IP 地址,我可以卷曲前两项,但不能卷曲 python Flask 应用程序。
这是下面的错误。我用“external_ip”替换了真实的ip地址:
$ curl -v external_ip:5000
* Rebuilt URL to: external_ip:5000/
* Hostname was NOT found in DNS cache
* Trying external_ip...
* connect to external_ip port 5000 failed: Connection refused
* Failed to connect to external_ip port 5000: Connection refused
* Closing connection …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用最新的 curl 和 openssl (1.0.1l) 编译 php 5.4.36,我已将 openssl 编译到一个单独的文件夹中
我的系统是 CentOS。
当我尝试编译 php 时
./configure ...etc... --with-curl=/usr/local/curlfolder --with-openssl=/usr/local/opensslfolder
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
checking whether to enable FTP support... yes
checking OpenSSL dir for FTP... /usr/local/opensslfolder
checking for pkg-config... /usr/bin/pkg-config
configure: error: Cannot find OpenSSL's libraries
Run Code Online (Sandbox Code Playgroud)
curl 和 openssl 都编译没有任何问题
我希望有人可以帮助我解决这个问题。我已经尝试了一段时间了,有各种各样的变化,似乎无法让它发挥作用。
我正在尝试编写一种方法来登录https://login.three.ie/以从 */My_account_balance 检查帐户余额
我已经尝试了各种 wget 命令,但从我读到的内容来看,curl 更有可能完成这项任务。
我一直在尝试我在网上遇到的变体,包括从这里开始的 stackoverflow,但似乎没有任何效果。
这是我尝试的最后一个:
curl -X POST -c cookies.txt -u "Uern@me:P@ssw0rd" https://login.three.ie/
Run Code Online (Sandbox Code Playgroud)
这确实将 cookie 文件保存在此处:
$ cat cookies.txt
Netscape HTTP Cookie File
#http://curl.haxx.se/docs/http-cookies.html
This file was generated by libcurl! Edit at your own risk.
HttpOnly_login.three.ie FALSE / FALSE 1433988274
laravel_session eyJpdiI6IkFZWmxvZ2oyXC9NNGVIbHVpejZwRWp3PT0iLCJ2YWx1ZSI6Imxkd25UKzBoMldiQlhYZVJnVUpuNUVsblZ1cGJYZWcwM2E1bTtIWHRiQ2pwV0VwemJ4NFlYcDlzTndSeFRNanpwdDhMMTIrS2RGZGdGd0RNZU1yREJ3PT0iLCJtYWMiOiI0NWUwYzc1TY4ODI3ZmY3ODY5NjliODkxODMyODIzMjQwNmNkNjljNTE2NzQxNmQ4MzhhNDljNTdjM2QwZGY1In0%3D
Run Code Online (Sandbox Code Playgroud)
但是当我尝试重新使用 cookie 时,它看起来像是重定向或其他东西,因为这就是我得到的:
$ curl -b cookies.txt https://my3account.three.ie/My_account_balance
<html><head><title>302 Moved Temporarily</title></head>
<body bgcolor="#FFFFFF">
<p>This document you requested has moved temporarily.</p>
<p>It's now at <a href="https://sso.three.ie/mylogin//login?auth-
required=seamless&service=https%3A%F%
2Fmy3account.three.ie%2FMy_account_balance">https://sso.three.ie/mylogin//login?auth-required=seamless&service=https%3A%2F%2Fmy3account.three.ie%2FMy_account_balance</a>.</p>
Run Code Online (Sandbox Code Playgroud)
我不明白这里发生了什么。有没有人知道出了什么问题,或者更好,如何解决这个问题?
谢谢
我在Redhat 5 找不到以下包
yum -y install libcurl libcurl-devel
Loaded plugins: security
Setting up Install Process
No package libcurl available.
No package libcurl-devel available.
Nothing to do
Run Code Online (Sandbox Code Playgroud)
奇怪的!我在这里缺少什么?
我在 Debian 6 上运行的生产服务器出现问题(apt-get update;apt-get upgrade 成功完成)。
当我调用 HTTPS (StartSSL) 服务器时,我在 Debian 6 上收到一条错误消息:
#> curl --version
curl 7.21.0 (x86_64-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.15 libssh2/1.2.6
Protocols: dict file ftp ftps http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz
#> curl https://mydomain.com/api/
curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html
Run Code Online (Sandbox Code Playgroud)
但是当我在 Debian 7 …
我想在命令行中打印一些 curl 的输出,比如 http 标头,然后是由 stdin/stdout 程序处理的答案正文。例如:
打印状态码:
curl -s -w "%{http_code} \\n" -o "/dev/null" http://myURL.com
然后用json解析工具处理输出:
curl -s http://myURL.com | python -mjson.tool
我想用一个命令同时执行这两项操作,并且我觉得这可能要归功于 -o 选项,该选项使 curl 的输出与查询的实际答案之间存在差异。问题是 -o 直接写入文件。有人有黑客吗?
我在我的 nginx 服务器 (centOS) 上运行的 php 应用程序上执行 CURL 命令。端点是一个 https 地址,因此传出流量当然是加密的。
我想查看使用tcpDump嗅探传出流量的实际发送到端点的网络数据包。但这样做的结果只是一堆加密数据。
有没有办法在加密之前查看这些数据包?
我正在尝试在我的 RHEL 6.x 机器上构建 curl,因为现有版本不支持 TLSv1.2。但是,无论我选择哪个选项,它总是以以下错误结束:
配置:警告:禁用 SSL,您将无法使用 HTTPS、FTPS、NTLM 等。 配置:警告:使用--with-ssl、--with-gnutls、--with-polarssl、--with-cyassl、--with-nss、--with-axtls ....
我尝试过的选项是
./configure --with-ssl ./configure --with-ssl=/usr/bin/openssl ./configure --with-nss ./configure --with-gnutls
我还尝试下载和构建 nss 和 openssl,但这也无济于事。