各位 Web 开发者,抓紧键盘!如果您的工具包不包含 cURL,您可能会错过游戏中最强大的工具之一。cURL 不仅仅是基于 CLI 的 HTTP 客户端,它还是命令行 HTTP 客户端!
加入我们,探索 cURL 的核心,揭开它的神秘面纱,探索它的功能,并让你掌握像专业人士一样使用它的知识。准备好释放 cURL 的真正力量了吗?让我们开始吧!
cURL是“URL 客户端”的缩写,是一个包含命令行工具和libcurl 库的软件项目。这两个工具专门用于跨各种网络协议使用 URL 语法进行数据传输。libcurl 还拥有 SSL 支持、代理隧道、标头配置和 Cookie 管理等功能。
深入研究 libcurl 支持的协议的完整列表就像浏览数字字母汤一样。其中包括 HTTP、HTTPS、FTP、SFTP、IMAP、POP3、SMTP、MQTT 和许多其他协议。这个列表太长了,你可能从未听说过其中一些——请放心,如果是这样的话,你并不孤单!😜
为什么 cURL 在开发者中如此受欢迎?这全归功于它的跨平台能力!由于 libcurl 绑定可用于许多编程语言(例如 PHP、Python 和 Java),cURL 可以无缝集成到各种技术堆栈中。cURL 之所以受欢迎,是因为它无处不在。cURL 预装在 Linux、macOS 和 Windows 上,使其成为开箱即用的任何机器上终端 Web 请求的首选工具。
无论是检索 Web 内容、测试 API 还是上传文件,cURL 都是任何 Web 开发人员工具包中必不可少的工具。没有什么能比得上其无与伦比的灵活性和效率。🚀
现在,你的工具包中已经有了 cURL,但如何使用它呢?很简单!按照以下语法在终端中启动命令:
curl [options] [URL]
URL
是目的地 - 您要定位的在线服务器或资源,一些常见的 cURL 选项包括:
-X
或--request
:设置要使用的 HTTP 方法。
-d
或--data
:在请求正文中添加数据。
-b
或--cookie
:管理您的请求的 cookie。
-H
或--header
:向您的请求添加自定义标头。对于多个标头,请多次重复选项。默认为GET
。
-v
或--verbose
:打印用于调试的详细信息。
要了解所有可用选项,请查看文档🔎
⚠️注意 1 :请注意,命令行curl
选项敏感。因此, -x
和-X
有两个不同的含义。
⚠️注 2 :在 PowerShell 中, curl
是Invoke-Request
的别名。要在 Windows 上使用 cURL,请写入curl.exe
而不是curl
。
现在,准备好在按HTTP 方法分类的实际示例中查看 cURL 语法!
以下是如何使用 cURL 获取目标网页的源 HTML:
curl "https://example.com/"
在底层,cURL 将发出 GET 请求,获取与https://example.com/
网页相关的 HTML 文档,并将其打印在终端中。
您只需使用一个命令即可检索信息。令人印象深刻,不是吗?🔥
下面的 cURL POST 示例使用创建新用户所需的 JSON 数据调用https://api.example.com/users
端点:
curl -X POST -H "Content-Type: application/json" -d '{"name": "John", "age": 30}' "https://api.example.com/users"
注意-X
选项用于指定所需的 HTTP 方法。还要注意-H
选项的使用,该选项设置Content-Type
标头,以及-d
选项,该选项在字符串中指定原始 JSON 数据。查看专用的cURL POST 请求指南!
cURL PUT 调用遵循以下语法:
curl -X PUT -d "name=Amazon%20Scraping&description=Automated%20data%20extraction%20for%20retrieving%20price%20data&status=completed" "https://api.example.com/projects/12"
HTTP 请求将使用提供的数据更新 ID 为 12 的项目。在此示例中,请求正文中的数据采用application/x-www-form-urlencoded
格式,而上面的 cURL POST 调用中使用的则是 JSON 正文。数据格式的灵活性展示了 cURL 对不同用例的适应性。
想要在 cURL 中执行 PUT 请求来更新在线资源的单个字段?您可以按照以下步骤操作:
curl -X PATCH -d "status=failed" "https://api.example.com/projects/12"
cURL 允许您发出 DELETE 请求并删除现有实体的存在,如下所示:
curl -X DELETE https://api.example.com/user/431
本次API调用之后,ID为431的用户将不复存在!
cURL 提供了多种选项,每种选项都为复杂的用例提供了独特的功能。当您浏览这个宇宙时,某些高级选项会脱颖而出。以下是 10 个最有用的高级 cURL 选项:
-o
或--output
:将输出写入指定的本地文件而不是<stdoud> 。-O
或--remote-name
:将输出保存到远程文件。-i
或--include
:在输出中包含响应 HTTP 标头。-u
或--user
:使用用户user:password
格式的用户名和密码进行身份验证。-L
或--location
:当服务器以3XX
响应代码响应时遵循重定向。-e
或--referer
:将“Referrer Page”信息发送到 HTTP 服务器。-x
或--proxy
:指定要通过其发出请求的代理服务器的 URL。有关更多信息,请阅读有关如何使用 cURL 和代理的教程或观看以下视频。--rate
:指定您希望 cURL 遵守的最大传输频率,以避免触发速率限制措施。--data-binary
:按照指定的方式将数据准确发送到服务器,无需进行任何额外处理。--compressed
:请求压缩响应并自动解压响应内容。
掌握这些选项可让您在不断发展的网络交互领域以无与伦比的技巧运用 cURL。🌐
cURL 是处理 Web 请求的强大工具,但其默认设置使其容易受到反机器人措施的攻击。例如,请考虑其默认的User-Agent
标头:
curl/XYZ
了解如何更改 cURL 用户代理值。
现在,将其与最新的 Chrome 用户代理进行比较:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
这是一个完全不同的字符串!
使用 cURL 而不覆盖该标头就像是向目标服务器大喊:“看我!我是一个自动化的、非浏览器的机器人请求!”
难怪,这可能会触发防御机制😅。另外,别忘了 cURL 只是一个 HTTP 客户端。因此,它无法处理依赖 JavaScript 进行渲染或数据检索的页面。
👎如果你想使用cURL 进行网页抓取,那就太糟糕了!👎
那么,你应该停止使用 cURL 吗?完全不是!你只需要为它配备合适的工具!要释放 cURL 的全部潜力并解决其局限性,请将其与以下工具集成:
无论您做出什么决定,Bright Data 都能满足您的需求!Bight Data 拥有市场上最大、最可靠的代理网络之一,在世界各地拥有数百万台代理服务器。此外,其Web Unlocker解决方案可让您通过 cURL 访问任何公共网站,无论其机器人保护级别如何。
cURL 是 HTTP 客户端中的佼佼者,是开发人员在终端中发出 Web 请求的首选工具。现在,您已经掌握了它与常见 HTTP 方法的用法,并探索了它的各种选项。这是一个强大的工具,但让我们面对现实吧——大多数网站都能够检测到您正在通过 cURL 联系他们。
不要害怕!解决方法很简单:寻求网络代理的帮助,或者为了获得最佳效果,采用Bright Data的 Web Unlocker 解决方案。加入我们的使命,让互联网民主化,让每个人都能随时随地访问互联网——即使通过强大的 cURL!
直到下一次,请继续自由地探索网络!