curl
是一个功能强大的命令行工具,用于与网络资源进行数据交互。它支持多种协议,包括 HTTP、HTTPS、FTP、SFTP 等,并且在许多操作系统上都可用。
以下是 curl
的一些主要特点和用途:
发送请求:curl
可以发送各种类型的 HTTP 请求,如 GET、POST、PUT、DELETE 等。它还支持其他协议,如 FTP 和 SFTP。
获取响应:curl
可以获取服务器返回的响应数据,并将其显示在终端上。这对于调试和测试 Web 服务非常有用。
自定义请求头:通过使用 -H
选项,你可以添加自定义的请求头到请求中。这对于模拟特定的客户端或设置特定的请求头非常有用。
上传和下载文件:curl
可以方便地上传文件到服务器或从服务器下载文件。它支持多种协议和文件传输方式。
跟随重定向:curl
默认情况下会自动跟随 HTTP 重定向。这对于处理需要重定向的请求非常有用。
支持代理:curl
可以通过设置代理服务器来发送请求,以便在网络中进行中间人代理和调试。
身份验证:curl
支持各种身份验证方法,包括基本身份验证、摘要身份验证和 OAuth。
支持断点续传:如果文件传输中断,curl
可以通过使用 -C
选项来支持断点续传,从上次中断的位置继续传输文件。
支持代理协议:curl
支持 SOCKS4、SOCKS4a 和 SOCKS5 代理协议。
可定制性:curl
提供了许多选项和参数,可以根据需要自定义请求,并获取详细的响应信息。
总的来说,curl
是一个功能强大且灵活的工具,适用于与各种网络资源进行交互。无论是用于调试、测试、自动化任务还是进行文件传输,curl
都是一个非常有用的工具。
发送 GET 请求并获取响应:
curl https://example.com
```
这将发送一个简单的 GET 请求到 `https://example.com`,并在终端中显示响应内容。
保存响应到文件:
curl -o output.txt https://example.com/file.txt
```
``-o` 选项指定输出文件的名称,该命令将从 `https://example.com/file.txt` 下载文件,并将其保存为 `output.txt`。
发送 POST 请求:
curl -X POST -d "param1=value1¶m2=value2" https://example.com/api
```
``-X` 选项用于指定请求方法,`-d` 选项用于指定 POST 数据。这个示例中,我们发送一个简单的 POST 请求到 `https://example.com/api`,并使用 `-d` 选项指定请求参数。
发送带有请求头的请求:
curl -H "Content-Type: application/json" https://example.com/api
```
``-H` 选项用于指定请求头。在这个示例中,我们发送一个带有自定义 Content-Type 头的请求。
跟随重定向:
curl -L https://example.com
```
``-L` 选项用于跟随重定向。当请求返回重定向响应时,`curl` 会自动跳转到重定向的 URL。
发送带有认证信息的请求:
curl -u username:password https://example.com/api
```
``-u` 选项用于指定用户名和密码,以进行基本身份验证。
发送带有文件上传的请求:
curl -F "file=@/path/to/file" https://example.com/upload
```
``-F` 选项用于指定文件上传。在这个示例中,我们将文件 `/path/to/file` 上传到 `https://example.com/upload`。
这些只是 curl
的一些常见用法示例。curl
支持的选项和功能非常丰富,你可以通过运行 man curl
或查阅 curl
的官方文档来获取更多详细信息和用法示例。
一个比python更简单暴力的爬虫:
#!/bin/bash
while true; do
# 生成随机的等待时间(以秒为单位)
interval=$(( ( RANDOM % 1200 ) + 600 ))
# 设置自定义的 User-Agent 请求头
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
# 发送 GET 请求获取百度网站,并获取状态码
response_code=$(curl -s -o /dev/null -w "%{http_code}" -H "User-Agent: $user_agent" https://www.baidu.com)
echo "Response Code: $response_code"
curl -s https://www.baidu.com # 发送 GET 请求获取百度网站内容
# 等待随机的时间
sleep $interval
done
bash check_baidu_status.sh #执行!
欢迎评论,关注,点赞,收藏!谢谢