在这篇文章中,欧博我们将介绍: 。 什么是 cURL?cURL 是 “客户端 URL” 的缩写,是一种通过 URL 在互联网发送和接收数据的工具。作为一个软件项目,cURL 提供库 (libcurl) 和命令行工具 (curl)。这里,我们将重点介绍 curl,一款通过 URL 语法传输数据的命令行工具。 该项目支持多种协议,包括 HTTP、HTTPS、FTP、FTPS、SFTP、POP3、POP3S、IMAP、IMAPS、LDAP、LDAPS、SCP 等等。这使得 curl 成为世界上最受欢迎、使用最广泛的命令行 HTTP 客户端。 cURL 用途广泛,是执行各种任务的常见解决方案,例如发出 HTTP 请求、下载文件、上传数据以及与 API 交互。它具备多种功能,包括请求自定义和代理支持。 安装 curl现在我们来学习一下如何在计算机上安装 curl。 macOS 你不需要在 macOS 上安装 curl。macOS 操作系统已包含此工具,可以在 Terminal 应用程序中本地使用。 Windows 从 Windows 10 开始,Windows 系统自带 curl 的副本。同时,皇冠 curl 命令是 PowerShell Invoke-WebRequest 命令的别名。这意味着 Windows 终端中的 curl 命令将在后台调用 Invoke-Request。为了避免这种情况并实际使用 cURL 中的 curl ,请将 “curl” 替换为 “curl.exe”。这样,PowerShell 将运行 curl 而不是 Invoke-Request。 例如,你可以使用以下命令在终端中验证安装在 Windows 计算机上的 curl 的当前版本: curl.exe --version这样会显示类似于以下的内容: curl 8.0.1 (Windows) libcurl/8.0.1 Schannel WinIDN Release-Date: 2023-03-20 Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp Features: AsynchDNS HSTS HTTPS-proxy IDN IPv6 Kerberos Largefile NTLM SPNEGO SSL SSPI threadsafe Unicode UnixSockets如果你是 Windows 用户,请将文章命令中的所有 “curl” 实例替换为 “curl.exe” 字符串。否则,请设置适用于 Linux 的 Windows 子系统 (WSL) 并按照以下说明进行操作。 Linux 在 Linux 上安装 curl 的过程会根据你使用的特定发行版而有所不同。默认情况下系统自带热门的 Linux 发行版,例如 Ubuntu 和 Fedora。因此,你可以直接在终端中使用 curl。 其他发行版可能不包含 curl。这种情况下,你可以使用发行版软件包管理器来添加 curl。在基于 Debian 的操作系统上,你可以使用以下命令安装 curl: sudo apt-get install curl 在 curl 中使用代理需要什么代理在客户端和目标服务器之间充当媒介,拦截来自客户端的请求,DG游戏将其转发到服务器,接收来自服务器的响应,然后将其发送回客户端。这种媒介方式更有助于保持匿名,避免网络限制。这是因为目标服务器会认为请求来自所选代理服务器的 IP 和位置以及来自你。 想要开始通过代理服务使用 curl,你首先需要访问代理。具体而言,代理 URL 的语法如下所示: [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]这包括: <协议>:用于连接代理服务器的协议。如果未指定协议,curl 将默认为 。 <主机>:代理服务器的主机名所需 IP 地址或 URL。 <端口>:代理服务器正在监听的端口号。如果未指定端口,curl 将默认使用 1080。 <用户名>:需要身份验证时指定的可选用户名。 <密码>:需要身份验证时指定的可选密码。 至于代理协议,最受欢迎的是 HTTP 和 HTTPS,其次是 SOCKS。 这时候要检索有效的 HTTP 代理! 你可以从免费代理列表中免费获取一个,如下所示: IP Address: 71.19.249.97; Port: 8443这意味着代理 URL 是: :8443出于学习目的可以选择这样的解决方案,欧博注册但在实际情况下不能采用。免费代理服务不可靠、容易出错、速度慢、时效短而且会收集大量数据。请勿使用这些服务! 有何解决方案?使用市面上最好的代理服务提供商 Bright Data 的高级代理 。订阅并免费试用我们的可靠代理。 请记住,高级解决方案具备身份验证保护机制。假设协议是 HTTP,主机是 71.103.203.109,端口是 9321,证书对是 admin-32458 和 rTuJ3tEwf。这种情况下,curl 代理 URL 将为: :@rTuJ3tEwf71.103.203.109:9321 如何在 curl 中指定 HTTP/HTTPS 代理开始之前,在终端中启动以下命令: curl "https://httpbin.org/ip"如你所见,curl 的基本语法是: curl [optional_commands] <URL>一项 curl 最佳实践建议在 URL 前后使用双引号,以避免出现特殊字符的问题。 运行后就会得到: { "origin": "194.33.243.7" }HTTPBin 项目帮助你获取 HTTP 请求的相关信息。详细而言,/ip 端点返回请求的源 IP,即执行请求的计算机的 IP 地址。换句话说,欧博代理它会返回你的 IP。 在 curl 中设置代理后,你将能看到代理服务器的 IP 地址,而非自己的 IP 地址。 在 curl 中设置代理有若干方法。现在让我们来看看在 curl 中指定 HTTP/HTTPS 代理的最常用方法。 使用命令行参数 curl 提供两个命令行参数来设置代理 URL: -x --proxy 两者可以互换使用,因为它们的作用完全相同。后者只是前者的别名。 因此,通过代理服务使用 curl 的语法变为: curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] <URL>或: curl --proxy [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] <URL>注意:在 curl 中,命令行选项区分大小写。例如, -x 和 -X 有两种不同的含义。 如果你现在启动: curl -x "http://71.19.249.97:8443" "https://httpbin.org/ip"或等效的:\ curl --proxy "http://71.19.249.97:8443" "https://httpbin.org/ip"你将得到: { "origin": "71.19.249.97" }源与代理服务器 IP 相匹配。这意味着目标站点会如预期一样,认为请求来自代理。大功告成! 不要忘记免费代理的时效短,因此当你阅读本文时,上述服务器不太可能还有效。如果出现错误,请将其替换为新的代理。 使用环境变量 在 curl 中使用代理的另一种方法是设置以下两个环境变量: http_proxy:用于访问涉及 HTTP 协议的 URL 的代理服务器 URL。 https_proxy:用于访问涉及 HTTP 协议的 URL 的代理服务器的 URL。 在 macOS 和 Linux 上,你可以使用以下语法设置这两个环境: export http_proxy="[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]" export https_proxy="[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"因此,这两个命令将变成: export http_proxy="http://71.19.249.97:8443" export https_proxy="http://71.19.249.97:8443"在 Windows 上,你需要使用以下 PowerShell 语法: $env:http_proxy = "[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]" $env:https_proxy = "[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"然后,在我们的示例中: $env:http_proxy = "http://71.19.249.97:8443" $env:https_proxy = "http://71.19.249.97:8443"从现在起,每个 curl 命令都将经过指定的代理,不必使用 -x 选项: 同样,这将返回: curl https://httpbin.org/ip { "origin": "71.19.249.97" }如需关闭 curl 代理,请使用以下命令取消环境变量的设置: unset http_proxy unset https_proxy或者在 Windows 上: $env:http_proxy = "" $env:https_proxy = ""curl 将恢复其标准行为, https://httpbin.org/ip 现在将返回你的 IP。 使用配置文件 您可以通过创建 .curlrc 配置文件为 curl 全局指定代理。 在 Linux 和 macOS 上打开终端并导航到你的主目录: cd ~然后,使用 nano 访问 .curlrc: nano .curlrc如果文件已存在,则文件将被打开。否则将首先创建文件然后再打开。 将以下行添加到 .curlrc 文件: proxy="http://71.19.249.97:8443"此指令的语法是: proxy="[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"保存文件,关闭终端并重启。 在 Windows 上,你需要在 %APPDATA% 目录内创建内容相同的 _curlrc 文件。将 %APPDATA% 粘贴到文件资源管理器地址栏中,然后按回车键访问该目录。 这样你会来到 C:\Users\<YOUR_USER>\AppData\Roaming。 现在,curl 将自动使用配置文件中指定的代理: curl "http://httpbin.org/ip"你会得到: { "origin": "71.19.249.97" }太棒了!你刚刚学会了如何用三种不同的方式在代理服务器上使用 curl! 如何在 curl 中设置 SOCKS 代理如果你想使用 SOCKS 代理,命令结构保持不变: curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] <URL>主要区别在于 <协议> 将是 socks4、socks4a、socks5 或 socks5h,而非 http 和 https。 curl SOCKS 代理正在运行的完整示例是: curl -x "socks5://94.14.109.54:2478" "http://httpbin.org/ip"如你所料,结果将是: { "origin": "94.14.109.54" }另一种方法涉及 --socks4、--socks4a、--socks5 命令行选项而不是 -x。这种情况下,必须在选项后设置不带用户名和密码的代理 URL,然后在 --proxy-user 后设置证书: curl --socks4|--socks4a|--socks5 <HOST>[:<PORT>] <URL> --proxy-user <USERNAME>:<PASSWORD>例如: curl --socks4 "93.16.238.41:8721" "http://httpbin.org/ip" --proxy-user admin334:kv4NsDgc3这将通过 93.16.238. 41:8721 socks4 代理连接到 HTTPBin,同时使用 admin334 作为身份验证的用户名、kv4NsDgc3 作为密码。 你应该了解的窍门和技巧在本节中,您将看到专业使用 curl 代理的有趣技巧和宝贵诀窍。 快速开启和关闭代理 这里的方法是定义别名,通过带有自定义命令的环境变量,以编程方式设置和取消设置代理。 在 macOS 和 Linux 上,你可以通过创建 .bashrc 文件来完成这项操作。这是用户每次登录时都会执行的脚本文件。 移至你的主文件夹: cd ~然后,创建或打开一个 .bashrc 文件: nano .bashrc将以下格式的内容添加到文件: alias proxyon="export http_proxy='[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]';export https_proxy='[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]'" alias proxyoff="unset http_proxy;unset https_proxy"因此,在我们的示例中它将是: alias proxyon="export http_proxy='http://71.19.249.97:8443';export https_proxy='http://71.19.249.97:8443'" alias proxyoff="unset http_proxy;unset https_proxy"保存文件并重启计算机。 现在,你可以使用以下命令激活和停用 curl 代理: proxyon curl "http://httpbin.org/ip" # other HTTP requests... proxyoff注意自定义的 proxyon 和 proxyoff 命令。这些命令执行 .bashrc 文件中的别名指定的操作。 在 Windows 上,你可以使用 PowerShell 别名实现类似的效果。 忽略单个请求的代理 如果你想阻止 curl 为特定请求使用已配置的代理,你可以使用 --noproxy “*” 参数,如下所示: curl --noproxy "*" <URL>这会指示 curl 不要对所有 URL 使用代理。 设置代理并运行: curl --noproxy "*" "https://httpbin.org/ip"生成的源将包含你的 IP,而非代理服务器的 IP。 避免 SSL 证书错误 在 curl中使用代理时,你的请求可能会由于 SSL 证书错误而失败。为避免这种情况,请按以下语法使用 -k 选项: curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] -k <URL>-k 允许通过 SSL 进行不安全的服务器连接,从而帮助你避免证书错误。 例如,你可以通过以下方式避开 SSL 问题联系 HTTPBin: curl -x "http://71.19.249.97:8443" -k "https://httpbin.org/ip"获取请求相关的更多信息 当 curl 中的请求失败时,想要了解发生了什么并不容易。如需诊断错误并查看 curl 执行的所有操作,请设置 -v 选项: curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] -v <URL>这将输出已建立的连接和该工具所使用的标头相关的详细信息: $curl -x "http://71.19.249.97:8443" -v "https://httpbin.org/ip" * Trying 71.19.249.97:8443... * Connected to 71.19.249.97 (71.19.249.97) port 8443 (#0) * allocate connect buffer * Establish HTTP proxy tunnel to httpbin.org:443 > CONNECT httpbin.org:443 HTTP/1.1 > Host: httpbin.org:443 > User-Agent: curl/8.0.1 > Proxy-Connection: Keep-Alive > < HTTP/1.0 200 OK < * CONNECT phase completed * CONNECT tunnel established, response 200 * schannel: disabled automatic use of client certificate * ALPN: offers http/1.1 * ALPN: server accepted http/1.1 * using HTTP/1.1 > GET /ip HTTP/1.1 > Host: httpbin.org > User-Agent: curl/8.0.1 > Accept: */* > < HTTP/1.1 200 OK < Date: Sat, 26 Aug 2023 10:39:13 GMT < Content-Type: application/json < Content-Length: 31 < Connection: keep-alive < Server: gunicorn/19.9.0 < Access-Control-Allow-Origin: * < Access-Control-Allow-Credentials: true < { "origin": "71.19.249.97" } * Connection #0 to host 71.19.249.97 left intact 哪些代理最适合 curl?这个问题的答案取决于你的用例和你提出的 curl 请求的性质。想要找到适合你需求的解决方案,请查看可用的不同类型的代理: 数据中心代理:速度很快,但由于其 IP 范围可识别,可能很容易被站点检测和屏蔽。 住宅代理:保证了高度的匿名性,因为它们提供来自特定位置真实设备的 IP 地址。住宅代理非常适合访问采用地理限制屏蔽或反机器人措施的站点,也是执行 curl 网页抓取的理想选择。 ISP 代理:提供的 IP 来自登记至 ISP 的设备,因此快速、安全且高度可靠。ISP 代理是 SEO 监控、网页浏览和市场调研的完美解决方案。 移动代理:提供来自真实移动设备的 IP 以实现高度匿名性。它们对于访问特定于移动设备的应用程序、站点或内容很有用。 这只是一个简短的回顾,但你可以在我们的代理 IP 类型指南中了解更多信息。 结语在本 curl 代理指南中,你了解了 cURL 是什么、它能提供什么,以及如何设置 HTTP/HTTPS/SOCKS 代理。事实证明,你不能信任由免费提供商提供代理服务的 curl。因此,需要做出的主要技术决定是采用哪个代理提供商。节省时间和精力,选择市面上最好的服务 — Bright Data。 Bright Data 掌控着全球最好的代理服务器,为财富 500 强企业和 20,000 多家客户提供服务。其全球代理网络包括: 总体而言,这是市面上最大而且最可靠的抓取型代理网络之一。加入最大的代理网络并免费试用。 (责任编辑:) |