`

cURL使用·别人心得

阅读更多

原文地址:http://www.blogkid.net/archives/2668.html

 

cURL

 

cURL是我在Linux上经常用的一个小工具,我理解它是一个“客户端”。今天记录一下我的使用心得。达人请忽略。

cURL是一个利用URL语法在命令行方式下工作的文件传输工具。它支持很多协议:FTP,  FTPS,  HTTP, HTTPS, GOPHER等。[更多...]

 

场景一:测试域名绑定

我常需要在开发环境中,测试某台服务器上的Web Server是否正确绑定了域名。

 

比如,我希望在服务器192.168.1.10上绑定www.blogkid.net。但需要修改hosts才能看到效果,这活儿很累人。

 

所谓“域名绑定”,就是把host映射到对应的目录。

 

如果手头有cURL,可以使用 -H 参数,在请求头信息中多写一个 Host 字段。就可以测试是否配置正确了。

# curl -H "Host: www.blogkid.net" http://192.168.1.10/

 

 

场景二:查看头信息

响应头信息中包含了很多东西。除了HTTP版本和响应代码,还有Server、Content-Type、Content-Length等信息,

如果有写入Cookie的操作,也会体现在头信息中。

 

使用cURL的 -I 参数,就可以看到这些头信息。比如淘宝的:

# curl -I http://www.taobao.com/
HTTP/1.1 200 OK
Date: Sun, 14 Feb 2010 08:57:35 GMT
Server: Apache
Set-Cookie: abt=b; expires=Sun, 28-Feb-2010 08:57:35 GMT; path=/; domain=www.taobao.com
at_catetype: b (咦,这是什么?)
Set-Cookie: _lang=zh_CN:GBK; Domain=.taobao.com; Path=/
Cache-Control: max-age=3600
Expires: Sun, 14 Feb 2010 09:57:35 GMT
Vary: Accept-Encoding
Content-Type: text/html; charset=GB2312
Content-Language: cn

 

我昨天也修改了一下我服务器的server信息,大家感兴趣可以 curl -I http://www.blogkid.net/ 看看。

这里插一句,不建议把使用Web服务器的版本暴露出来

(其实服务器信息也最好隐藏掉,或者把Apache伪装成nginx什么的 )。免得突然爆出漏洞时,措手不及,被人利用。

 

 

场景三:跟踪URL跳转

如果遇到了一个多次跳转的URL,可以先用curl的 -L 参数看看,这个URL最终跳转到了什么地方。

-L 参数最好配合 -I 使用,不然cURL会把最后一次请求获得的数据输出到控制台。

没有合适的URL拿来做例子,意会一下吧

 

Google目前会跳到HK,有个不错实例:

curl -IL http://www.google.com

 

 

 

场景四:发送压缩的请求

cURL提供了一个 –compress 参数,可以用来发送支持压缩的请求。

但使用了–compress之后,虽然传输过程是压缩的,cURL的输出还是解压之后的,难以看到效果。

我一般用 -H 参数,自己写一个 Accept-Encoding 字段在头信息中。

 

curl -H "Accept-Encoding: gzip" http://www.blogkid.net/

 

如果直接运行上面的命令,会得到一堆乱码,因为cURL输出的内容,是压缩后的数据。不妨在后面接一个gunzip试试。

 

curl -H "Accept-Encoding: gzip" http://www.blogkid.net/ | gunzip

 

使用gunzip解压之后,信息又被还原了。前几天我写的压缩话题(12),就用了类似的方法来测试。

 

 

场景五:忽略证书错误

平日上网,遇到证书错误一定要小心。但我在工作中,经常需要用自签的假证书搭建开发环境。

cURL在遇到证书错误时罢--工,使用 -k 参数就可以让它不做证书校验。

 

http://curl.haxx.se/docs/manual.html

分享到:
评论

相关推荐

    curl c++使用

    【标题】:“curl c++使用” 在C++编程中,`curl`库是一个非常重要的工具,它允许开发者通过命令行接口或API实现HTTP、HTTPS和其他网络协议的客户端功能。本篇将详细介绍如何在C++项目中集成和使用`curl`库进行网络...

    Qt工程中使用curl进行网络请求,最小程序

    在C++项目中,我们可以使用curl库进行各种网络通信任务。 **Qt框架介绍** Qt是一个跨平台的应用程序开发框架,广泛用于创建GUI应用。它提供了一整套工具、库和IDE,使得开发者能够轻松地构建高效、美观的桌面和移动...

    curl使用方法及命令的介绍

    - `CURL使用指南.doc`、`CURL详解.doc`、`curl 也玩多线程.doc`、`curl应用总结.doc`、`cURL使用心得.doc`:这些文档提供了更详细的`curl`使用教程和实践经验。 - `curl.pdf`:可能是官方或第三方编写的`curl`用户...

    Curl.zip_C++ curl_DEMO_c++ curl_curl_curl c++

    Curl.zip 文件包含了一个在Windows环境下使用C++开发的CURL库示例程序。CURL是一个流行的开源库,用于在各种编程语言中处理URL传输,包括文件上传、下载、HTTP、HTTPS、FTP等网络协议。这个C++ DEMO将帮助我们理解...

    curl下载curl包下载

    如果你更喜欢图形界面,还可以选择使用带有`curl`功能的下载管理器。 在命令行中,`curl`的基本语法是`curl [选项] URL`。例如,要从一个网页抓取HTML内容,可以输入`curl http://example.com`。通过添加各种选项,...

    qt5使用curl实现文件下载的示例程序

    例如,可以使用`curl_easy_init()`初始化cURL会话,然后使用`curl_easy_setopt()`设置不同的选项。 3. **文件下载过程**: - 设置URL:`curl_easy_setopt(curl, CURLOPT_URL, ...

    使用curl-config配置选项

    curl-config 配置选项的使用 curl-config 是一个命令行工具,用于显示关于 curl 和 libcurl 安装的信息。下面是对 curl-config 的详细介绍: curl-config 的使用 curl-config 可以使用多种选项来显示不同的信息。...

    vs使用curl模板(包含静态动态库)

    在Visual Studio(VS)中使用curl模板涉及到网络编程和C++库的集成。curl是一个流行的开源库,用于处理URL相关的任务,如HTTP、HTTPS和其他协议的传输。它提供了丰富的功能,包括文件上传下载、POST请求、自定义头...

    curl使用手册

    使用`curl_init()`函数创建一个新的cURL会话。例如: ```php $ch = curl_init(); ``` ### 3. 设置cURL选项 cURL提供了大量选项来定制请求行为,例如URL、请求类型、超时时间等。使用`curl_setopt()`函数设置这些...

    curl在Android中使用的Demo

    这篇博客文章《curl在Android中使用的Demo》将向我们展示如何在Android应用中集成和使用`curl`命令。 首先,我们需要理解`curl`的基本用法。在命令行中,`curl`通过指定URL和各种选项来发起网络请求。例如,发送一...

    PHP_Curl使用详解.doc

    **PHP_Curl 使用详解** PHP_Curl 是 PHP 中的一个扩展,用于执行 HTTP、FTP、SMTP 等多种协议的网络请求。它通过 cURL 库实现了丰富的功能,包括支持 SSL 证书、POST 数据、PUT 操作、FTP 上传、代理设置、HTTP ...

    linux sftp、ftp上传(使用curl)

    本文将深入探讨如何使用curl命令来实现在Linux环境下进行SFTP和FTP上传操作。 首先,让我们了解一下SFTP。SFTP是一种基于SSH(Secure Shell)的安全文件传输协议,它提供了安全的数据传输,保护了用户的登录凭证和...

    android使用NDK编译curl库源码

    在这个场景中,我们将探讨如何在Android环境下使用NDK(Native Development Kit)编译Curl库源码。 首先,NDK是Google提供的一个工具集,允许开发者在Android应用中集成原生代码。通过NDK,我们可以编写C和C++代码...

    curl-7.53.1_spendrhy_curl_aix7.1安装curl_

    `curl`遵循某种开源许可证,如MIT、GPL或LGPL,这将决定用户在商业项目中使用`curl`的权限。 3. **README.md** 和 **README**: 这些文件通常包含了快速入门指南、安装步骤和常见问题解答。在AIX 7.1上安装`curl`时...

    freeswitch xml_curl模块使用

    在本文中,我们将深入探讨Freeswitch中的XML_CURL模块及其使用方法,特别是在与PHP集成时如何生成XML文件,以及如何用它来替代传统的directory、ivr(交互式语音响应)和dialplan配置。 Freeswitch是一个开源的软...

    windows 下可以使用curl命令

    标题 "windows 下可以使用curl命令" 暗示了我们讨论的是如何在Windows操作系统环境下使用curl工具。curl是一个强大的命令行工具,用于传输数据到或从服务器,支持多种协议如HTTP、HTTPS、FTP等。在Windows系统中,它...

    curl命令详解 curl命令详解 curl命令详解 curl命令详解curl命令详解 curl命令详解 curl命令详解

    * `-1, --tlsv1`:强制 curl 使用 TLS 1.x 版本。 * `-2, --sslv2`:强制 curl 使用 TLS 2 版本。 * `-3, --sslv3`:强制 curl 使用 TLS 3 版本。 * `-4, --ipv4`:将地址解析为 IPv4 地址。 * `-6, --ipv6`:将地址...

    java--curl工具,用于生成curl链接,直接在服务器上使用

    在实际应用中,`CurlAspect`和`Curl`注解的组合使用可以帮助开发团队提高工作效率,快速定位问题。当遇到服务间通信问题时,开发者不再需要手动构造curl命令,只需查看生成的curl命令,就能在任何支持curl的环境(如...

    curl手册 用curl的

    《PHP cURL 使用详解》 PHP cURL 是一个强大的库,用于在 PHP 中发送网络请求,包括抓取网页内容、模拟...熟练掌握 cURL 的使用,能够极大地提升你的Web开发能力,特别是在进行数据抓取、API交互以及自动化任务时。

    ES-CURL命令使用 - 副本.docx

    Elasticsearch-CURL是Elasticsearch日常管理、调试和开发的重要工具,熟练掌握其使用能极大地提高工作效率。需要注意的是,当操作涉及真实数据时,应确保有适当的数据备份和恢复策略,以防止意外的数据丢失或损坏。...

Global site tag (gtag.js) - Google Analytics