使用 cURL 进行网络抓取

使用 cURL 轻松进行网络抓取

2025 年,命令行仍然是开发人员不可或缺的工具,尤其是在使用 cURL 进行网络搜索时。cURL 是一款免费的命令行工具。它能帮助我与网络服务器 "对话",轻松获取数据。它可以做很多事情,比如为用户登录、搜索有变化的网站,所有这些都可以在使用代理服务器时完成。它适用于所有主要协议,如 HTTP 和 HTTPS。我将向你展示如何使用 cURL,从简单的步骤到更复杂的步骤。

什么是网络抓取中的 cURL?

cURL客户端 URL "是一种用于在网络服务器之间移动数据的工具。它通过不同的协议工作,如 HTTP、HTTPS 和 FTP.cURL.它可以帮助我使用命令与网络服务器对话。通过 cURL,我可以使用 HTTP 和 HTTPS 等不同协议从网站发送和获取数据。无论是从 API 获取数据,还是远程管理文件,cURL 都非常可靠和简单。它是我最喜欢的工具之一,因为它能顺利处理各种任务。

cURL 最酷的地方在于其简单的命令。我喜欢它的易用性,也喜欢它可以用于多种不同的使用情况。人们喜欢它是因为它并不复杂,而且可以根据我们的需要进行更改。在我的数据提取工具包中,它是一个值得信赖的工具,可以帮助我完成各种涉及网络数据的任务。

先决条件

在开始使用 cURL 进行网页抓取之前,请先确认你的计算机已安装 cURL。以下是根据你的操作系统进行安装的方法:

A) Linux: 打开终端并键入命令:

apt-get 安装 curl

B) Mac: 它很可能已经安装,但如果你想要最新版本,请使用自制软件:

brew install curl

C)适用于 Windows: 如果您使用的是 Windows 10 或更新版本,cURL 应该已经存在。但对于旧版本,请访问官方网站,下载最新版本并安装到电脑上。

安装好 cURL 后,打开终端输入 "curl "进行测试。如果设置正确,你会看到如下信息

curl: try 'curl - help' 或 'curl - 手册' for more information

就是这样!你可以开始使用 cURL 抓取网页了。

如何使用 cURL 进行网络抓取

要使用 cURL 发送请求,请在终端输入 "curl "和目标 URL。这就是你开始所需的一切!

终端

curl https://httpbin.org/anything

您将立即在屏幕上看到网页的 HTML 内容。

要提出更高级的请求,可以在 URL 前添加额外的参数:

{
"args": {},
"data": "",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Host": "httpbin.org",
"User-Agent": "curl/7.86.0",
"X-Amzn-Trace-Id": "Root=1–6409f056–52aa4d931d31997450c48daf"
},
"json": null,
"method": "GET",
"origin": "83.XX.YY.ZZ",
"url": "https://httpbin.org/anything"
}

通过在目标 URL 前添加额外选项,cURL 可以让你做更多事情。你可以使用 HTTP、HTTPS 和 FTP 等协议进行数据传输。只需输入 "curl",然后输入选项和网站地址即可。

curl [options] [URL]

如果要提交表单,则需要使用 POST 方法,由"-d "属性表示。例如,如果您想输入用户名 "David "和密码 "abcd",您可以键入

curl -d "user=David&pass=abcd" https://httpbin.org/post

我们开始吧:

{
"args": {},
"data":
11 11
"
"files": {}, "form": {
"pass": "abcd",
"user": "David"
},
"headers": {
"Accept": "*/*".
},
"Content-Length": "20",
"Content-Type":
"application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "curl/7.86.0",
"X-Amzn-Trace-Id": "Root-1–6409f198–2ddef75220b12fb80be07a3b"
},

不被阻止的网络抓取

使用 cURL 进行网络抓取时,避免被拦截可能很棘手。为此,你将学习两种方法:使用旋转代理和自定义标题。

轮流代理

从同一个 IP 地址快速向一个网站发送大量请求会让你看起来像一个机器人,这可能会让你被屏蔽。 代理服务器 可以提供帮助。它就像一个中间人,通过给你一个不同的 IP 地址来隐藏你的真实 IP 地址。

例如,您可以在网上免费查找代理列表,然后选择一个 IP 地址用于下一次请求。但请注意,免费代理在大多数情况下都有风险。下面是使用 cURL 的方法:

curl - proxy: <url

更换 <proxy-ip> 用代理的 IP 地址和 <代理端口 加上端口号。例如

curl - proxy 198.199.86.11:8080 -k https://httpbin.org/anything

不幸的是,有时使用免费代理服务器会导致错误。我们可能会遇到类似 "CONNECT 后收到来自代理的 HTTP 代码 500 "这样的问题。要解决这个问题,可以在文本文件中存储代理列表,然后使用 Bash 脚本自动测试每个代理。这样,你就可以轮流使用不同的代理服务器,避免被拦截。

curl - proxy 8.209.198.247:80 https://httpbin.org/anything\

您可以将大量代理地址保存在文本文件中。然后,你可以编写一个 Bash 脚本,自动测试每个代理。具体操作如下:脚本会逐行检查 proxies.txt 文件中的每一行。对于每一行,它都会将该行设置为 cURL 请求的代理。

#!/bin/bash
# Read the list of proxies from a text file
while read -r proxy; do
echo 测试代理: $proxy"
# Make a request through the proxy using cURL
if curl - proxy "$proxy" -k https://httpbin.org/anything
>/dev/null 2>&1; then
curl - proxy "$proxy" -k https://httpbin.org/anything
echo "成功!代理 $proxy works."
else
echo "无法连接到 $proxy"
fi
# Wait a bit before testing the next proxy
sleep 1
done < proxies.txt

如果请求成功,我们可以通过代理访问网站,脚本就会显示网站内容并停止。但如果不成功,我们就会尝试列表中的下一个代理,直到找到可以正常工作的代理为止。

网站内容

免费代理池可能不可靠。更好的选择是购买一个有住宅 IP 的高级代理。或者,找一个更简单的解决方案,为您处理代理管理。

添加自定义标题

浏览网页时、 HTTP 标头 就像数字签名一样,在每个页面上都能识别你的身份。因此,即使你隐藏了自己的 IP 地址,网站还是能识别出你是一个机器人,除非你更改了标题。

对于网络搜索来说,最重要的标头是 User-Agent 字符串。它能告诉网站您使用的浏览器和设备。下面是一个例子:

Mozilla/5.0 (Macintosh; Intel Mac OS X 13_2_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Safari/605.1.15

要更改 cURL 抓取器的 `User-Agent`,请使用 `-A` 选项,并在其后写入你想要的字符串。例如:

curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36" https://httpbin.org/headers

请注意: 随机更改 User-Agent 可能会阻止你,因为并非所有数据都匹配。为了避免这种情况,你可以找到一个 流行的用户代理 用于使用 cURL 进行网络搜索。

结论

cURL 在从网站收集信息方面超级方便,无论任务是简单还是复杂。不过,我注意到一些网站正在加大仅使用 cURL 搜刮数据的难度。这就是为什么我开始将它与另一个工具搭配使用,帮助我绕过那些更严密的防御。这样,即使网站试图阻止我,我也能继续获取所需的数据。这就是寻找新方法,保持领先并收集有价值的信息!

类似文章