我正在尝试向运行带有自签名 SSL 证书的开发站点的本地开发服务器之一发出 curl 请求。我正在从命令行使用 curl。
我看到一些博客文章提到您可以添加到证书列表或指定一个特定的(自签名)证书为有效,但是是否有一种“不验证”ssl 证书的通用方式 - 就像--no-check-certificate那个wget有吗?
我渴望知道的区别curl和wget。两者都用于获取文件和文档,但它们之间的主要区别是什么。
为什么有两个不同的程序?
到目前为止,我真的找不到任何东西,但是真的curl没有真正超时吗?
user@host:~# curl http://localhost/testdir/image.jpg
Run Code Online (Sandbox Code Playgroud)
我之所以这么问是因为我testdir将对图像的任何请求重定向到一个单独的 Apache 模块,该模块会动态生成这些图片。图片可能需要长达 15 分钟才能真正准备好并交付给提出请求的客户。
会curl一直等待(或者它取决于配置)还是有任何超时?
我正在发出一个 curl 请求,它在控制台中显示一个 html 输出,如下所示
<b>Warning</b>: Cannot modify header information - headers already sent by (output started at /home/domain/public_html/wp-content/themes/explicit/functions/ajax.php:87) in <b>/home/domain/public_html/wp-content/themes/explicit/functions/ajax.php</b> on line <b>149</b><br />......
Run Code Online (Sandbox Code Playgroud)
等等
我需要在运行 CURL 请求时隐藏这些输出,尝试像这样运行 CURL
curl -s 'http://example.com'
Run Code Online (Sandbox Code Playgroud)
但它仍然显示输出,如何隐藏输出?
谢谢
我有一些 url,它的查询参数中有空格。我想在 curl 中使用它,例如
curl -G "http://localhost:30001/data?zip=47401&utc_begin=2013-8-1 00:00:00&utc_end=2013-8-2 00:00:00&country_code=USA"
Run Code Online (Sandbox Code Playgroud)
这给出了
Malformed Request-Line
Run Code Online (Sandbox Code Playgroud)
根据我的理解,o/p 是由于查询参数中存在空间。
在将 url 提供给 curl 命令之前,是否可以自动对 url 进行编码?
是否可以节流(限制)wget或的下载速度curl?
下载时是否可以更改节流值?
我需要检索 SSL 证书的到期日期。该curl应用程序确实提供了以下信息:
$ curl -v https://google.com/
* Hostname was NOT found in DNS cache
* Trying 212.179.180.121...
* Connected to google.com (212.179.180.121) port 443 (#0)
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server key exchange (12):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key …Run Code Online (Sandbox Code Playgroud) 我在使用代理的网络中。我的机器在这里和那里使用大量脚本通过 HTTP 相互访问。
我的代理是 10.1.1.1:81,所以我做了相应的设置:
export http_proxy=http://10.1.1.1:81/
Run Code Online (Sandbox Code Playgroud)我想排除要使用代理访问的我自己的范围。我尝试了任何可用的组合。
export no_proxy='10.*'
export no_proxy='10.*.*.*'
export no_proxy='10.0.0.0/8'
Run Code Online (Sandbox Code Playgroud)以上均无效!
我正在测试,wget它总是尝试查询代理,无论我想连接到什么 IP 地址。
--no-proxy选项实际上不是一个选项。我想在系统范围内设置它。我尝试使用wget和下载文件,curl但因 403 错误(禁止)而被拒绝。
我可以在同一台机器上使用网络浏览器查看文件。
我再次尝试使用通过http://www.whatsmyuseragent.com获得的浏览器的用户代理。我这样做:
wget -U 'Mozilla/5.0 (X11; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0' http://...
Run Code Online (Sandbox Code Playgroud)
和
curl -A 'Mozilla/5.0 (X11; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0' http://...
Run Code Online (Sandbox Code Playgroud)
但它仍然被禁止。403 可能还有什么其他原因,我可以通过什么方式更改wget和curl命令来克服它们?
(这不是关于能够获取文件 - 我知道我可以从浏览器中保存它;这是关于理解为什么命令行工具的工作方式不同)
更新
感谢所有对这个问题的出色回答。我遇到的具体问题是服务器正在检查引用者。通过将其添加到命令行,我可以使用curl和获取文件wget。
检查引用者的服务器通过 302 跳转到另一个根本不执行检查的位置,因此该站点的curl或wget工作正常。
如果有人感兴趣,这是因为我正在阅读此页面以了解嵌入式 CSS,并试图以该站点的 css 为例。我遇到麻烦的实际 URL 是这个,curl我最终得到的是
curl -L -H 'Referer: http://css-tricks.com/forums/topic/font-face-in-base64-is-cross-browser-compatible/' http://cloud.typography.com/610186/691184/css/fonts.css
Run Code Online (Sandbox Code Playgroud)
和 wget 是
wget --referer='http://css-tricks.com/forums/topic/font-face-in-base64-is-cross-browser-compatible/' http://cloud.typography.com/610186/691184/css/fonts.css
Run Code Online (Sandbox Code Playgroud)
很有意思。
前段时间我注意到curl作为命令行参数提供的用户名和密码没有出现在ps输出中(尽管它们当然可能出现在您的 bash 历史记录中)。
它们同样不会出现在/proc/PID/cmdline.
(不过,可以推导出组合的用户名/密码参数的长度。)
演示如下:
[root@localhost ~]# nc -l 80 &
[1] 3342
[root@localhost ~]# curl -u iamsam:samiam localhost &
[2] 3343
[root@localhost ~]# GET / HTTP/1.1
Authorization: Basic aWFtc2FtOnNhbWlhbQ==
User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
Host: localhost
Accept: */*
[1]+ Stopped nc -l 80
[root@localhost ~]# jobs
[1]+ Stopped nc -l 80
[2]- Running curl -u iamsam:samiam localhost &
[root@localhost ~]# ps -ef | grep curl
root 3343 3258 0 …Run Code Online (Sandbox Code Playgroud) curl ×10
wget ×5
bash ×2
download ×2
arguments ×1
command-line ×1
http-proxy ×1
networking ×1
password ×1
ps ×1
security ×1
timeout ×1
url ×1
utilities ×1