惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
B
Blog RSS Feed
云风的 BLOG
云风的 BLOG
G
Google Developers Blog
Recent Announcements
Recent Announcements
A
About on SuperTechFans
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Google Online Security Blog
Google Online Security Blog
Google DeepMind News
Google DeepMind News
S
Schneier on Security
S
Secure Thoughts
T
The Exploit Database - CXSecurity.com
Martin Fowler
Martin Fowler
P
Proofpoint News Feed
Security Latest
Security Latest
Jina AI
Jina AI
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Recorded Future
Recorded Future
T
Tor Project blog
有赞技术团队
有赞技术团队
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
News | PayPal Newsroom
博客园 - 三生石上(FineUI控件)
MyScale Blog
MyScale Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
Forbes - Security
Forbes - Security
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
NISL@THU
NISL@THU
C
Cisco Blogs
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Google DeepMind News
Google DeepMind News
Project Zero
Project Zero
IT之家
IT之家
T
Threatpost
Cyberwarzone
Cyberwarzone
O
OpenAI News
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
J
Java Code Geeks
P
Proofpoint News Feed
The Last Watchdog
The Last Watchdog
月光博客
月光博客
Latest news
Latest news
MongoDB | Blog
MongoDB | Blog
Apple Machine Learning Research
Apple Machine Learning Research

回忆中的明天

自己写一个Web 端的MiMo TTS Chat,方便实现文本转语音,API限免中 · 回忆中的明天 NVIDIA NIM 开发平台,提供超多免费大模型 · 回忆中的明天 iTranslation 简单快捷的翻译软件,支持数十种语言互译 · 回忆中的明天 国内外免费大模型平台,支持 API 调用的超多免费大模型 · 回忆中的明天 SiliconFlow 硅基流动一站式大模型云服务平台,提供超多免费大模型 · 回忆中的明天 Xiaomi MiMo 小米大模型团队开发的大语言模型,开源限免中…… · 回忆中的明天 BigModel 智谱大模型开放平台,提供超多自研免费大模型 · 回忆中的明天 OpenRouter 模型聚合平台,提供超多免费模型使用 · 回忆中的明天 iReader 英语点读学习系统,译林小学英语在线点读 · 回忆中的明天 ZenMux 企业级大模型聚合平台,提供免费试用模型 Gemini 3 Pro · 回忆中的明天 英语学习,新概念英语在线点读、全文朗读学习系统 · 回忆中的明天 iGSTT(Gemini STT) 开源免费的语音转文本(STT)的命令行工具 · 回忆中的明天 Python 项目打包,并上传到 PyPI,分享项目 · 回忆中的明天 iGTTS(Gemini TTS) 开源免费的文本转语音(TTS)的命令行工具 · 回忆中的明天 iChat(AI Chat) 智能聊天工具,支持 MiMo、DeepSeek、Gemini、Grok、OpenAI和自定义AI · 回忆中的明天 NanoPi R2S 安装 Debian 固件系统,旁路由网络代理内网转发,决解直连网络卡顿 nftables · 回忆中的明天 NanoPi R2S Armbian Linux 旁路由网络代理内网转发,决解直连网络卡顿 iptables · 回忆中的明天 sing-box rule-set · 回忆中的明天 Xcode 最全最实用的快捷键列表 · 回忆中的明天 SwiftUI 中的@State、@Bindable和@Binding · 回忆中的明天 免费的图床服务器-GitHub Pages · 回忆中的明天 A Free Native Image Uploading Tool for macOS · 回忆中的明天 免费的图床服务器-Cloudflare-R2 · 回忆中的明天 图传 (iUploader) - macOS 免费原生图床上传利器 · 回忆中的明天 本地无法加载托管到Cloudflare中的图片等资源,权限错误403 · 回忆中的明天 国内、外免费公共的DNS,支持的DoH,防止污染、篡改的问题 · 回忆中的明天 macOS 系统下载和安装 · 回忆中的明天 WARP Beta for macOS 支持新协议 MASQUE · 回忆中的明天 2024年自用国外靠谱的 VPS 服务器推荐 · 回忆中的明天 使用 OpenCore,让你的旧 Mac 用上最新的 macOS 系统 · 回忆中的明天 给 Terminal 终端添加不一样的色彩,安装插件实现自动补全、高亮显示 · 回忆中的明天 玩转 Mac 截图,分享原生截图工具技巧,自定义截图名称和类型 · 回忆中的明天 美国 VPS 服务器,最低月费只要12元,优惠推荐 · 回忆中的明天 更新 idea 后不能打开文件夹文件,一直加载卡住假死状态 · 回忆中的明天 使用 certbot 申请 Let's Encrypt 免费证书,部署到 nginx 中,开启 https · 回忆中的明天 菲律宾 VPS 服务器,月均只要16.5元/月,优惠推荐 · 回忆中的明天 Mac launchctl 自定义服务启动 · 回忆中的明天 Mac 终端设置代理,设置一键开启和取消 · 回忆中的明天 Nginx 配置(Config)中遇到的错误(Error) · 回忆中的明天 香港 CN2 优化线路带宽低延迟 VPS 服务器推荐 · 回忆中的明天 菲律宾、马来西亚、泰国等多图 VPS 服务器便宜推荐 · 回忆中的明天 抗白之路-肺部感染发烧住院两个多月 · 回忆中的明天 12 个对新手最重要的 Linux 命令 · 回忆中的明天 第一次通过 SSH key 免密连接 GitHub 的完整过程 · 回忆中的明天 5 款适用于 Linux 的笔记应用 · 回忆中的明天 国内外免费公共 DNS 服务推荐 · 回忆中的明天 微软为 VS Code 推出 Markdown 语言服务器 · 回忆中的明天 抗白之路-每天在马桶上渡过,急性肠排…… · 回忆中的明天 抗白之路-舱内日常 · 回忆中的明天 抗白之路-移植用药 · 回忆中的明天 抗白之路-入舱 · 回忆中的明天 强!腾讯推出开源免费老照片修复工具! · 回忆中的明天 抗白之路-确诊 · 回忆中的明天 RIME 鼠须管输入法使用,免费开源还可以自定义词库 · 回忆中的明天 VIM 入门,学会必备的操作命令,模式选择、文本编辑 · 回忆中的明天 Spring Security 快速创建登录权限,安全管理资源权限 · 回忆中的明天 Spring 表单验证 Validating Form Input · 回忆中的明天 Spring 为 RESTful Web 服务启用跨域请求 · 回忆中的明天 快捷支付停车费,免去扫码操作,快捷指令快速支付 · 回忆中的明天 居家全屋无线 Wi-Fi 网络改造 · 回忆中的明天 Spring 调用 RESTful Web 服务 Hello World · 回忆中的明天 Spring 构建 RESTful Web 服务 Hello World · 回忆中的明天 使用 GitHub Actions 自动上传搜索记录到 Algolia · 回忆中的明天 Spring 文件上传,Uploading Files · 回忆中的明天 Spring 表单提交,Form Submission · 回忆中的明天 Spring 开篇,创建第一个 Web 项目 Hello World · 回忆中的明天 使用 Algolia 云引擎,实现个人博客 Hugo 本地智能搜索 · 回忆中的明天 Elasticsearch, Kibana, Logstash, Filebeat 实现日志的自动采集、搜索和分析 · 回忆中的明天 Java 递归实例操作-查询层级菜单 · 回忆中的明天 Java JSON数据实战操作 · 回忆中的明天 MacOS 或 Linux 软件包管理器 Homebrew · 回忆中的明天 Java 正则表达式实例操作 · 回忆中的明天 简述 Cookie、Token、JWT、Session · 回忆中的明天 Java 方法代理实例操作,静态代理、JDK动态代理、CGLIB动态代理 · 回忆中的明天 Java 反射实例操作 · 回忆中的明天 Vercel 上自动部署你的个人博客 Hugo · 回忆中的明天 Java 中的重写(Override)与重载(Overload) · 回忆中的明天 免费申请 JetBrains 开源开发许可证,包含 IDEA · 回忆中的明天 重疾保险理赔的亲身经历,分享下流程和套路 · 回忆中的明天 Java 开发环境的搭建,开启你的编程之旅 · 回忆中的明天 HUGO 目录详解,创建自己的网站系统 · 回忆中的明天 了解 JS 的加载顺序和方式,实现 Ready 方法 · 回忆中的明天 免费创建属于自己的博客,Hugo+Github Pages · 回忆中的明天 Elastic Stack 实现日志的自动采集、搜索和分析 · 回忆中的明天 个人站长的加速器 - 百度云加速 · 回忆中的明天 Office 批量激活的命令工具 slmgr · 回忆中的明天 Office 批量激活的命令工具 ospp · 回忆中的明天 KMS 激活 Office 批量许可证密钥 KEY · 回忆中的明天 移植物抗宿主病详解 · 回忆中的明天 慢性髓系白血病(CML)的临床分期 · 回忆中的明天 急性髓系白血病(AML)的治疗 · 回忆中的明天 骨髓增生异常综合征(MDS)的病程与预后 · 回忆中的明天 急性白血病的临床表现 · 回忆中的明天 慢性粒单核细胞白血病(CMML) · 回忆中的明天 白血病的分类:髓系肿瘤和淋系肿瘤 · 回忆中的明天 mysql 使用 source/mysqldump 命令导入/导出文件信息 · 回忆中的明天 Docker 中运行 ElasticSearch 和 Kibana · 回忆中的明天 初识 Docker · 回忆中的明天 Mac 无密码 SSH 登录服务器 · 回忆中的明天 Spring Cloud Alibaba Nacos Discovery 实战 · 回忆中的明天
使用 CURL 命令调试和诊断网络问题,网站请求测速 · 回忆中的明天
2024-10-01 · via 回忆中的明天

原文:https://ichochy.com/posts/shell/20241001.html


curl 是一个命令行工具,用于在网络上发送和接收数据。它支持多种协议,包括 HTTP、HTTPS、FTP、SFTP 等,广泛应用于 Web 开发、API 测试和网络调试。

使用场景

  • API 测试:可以用于测试 RESTful API 的请求和响应。
  • 文件传输:适合进行文件的下载和上传操作。
  • 网络调试:用于调试和诊断网络问题,查看请求和响应的详细信息。
  • 自动化脚本:可以在脚本中使用,以自动化与服务器的交互。

执行过程:

  • 创建请求: 使用 curl 命令行工具,指定请求类型(如 GET、POST),URL 和其他必要参数。
  • DNS 解析: curl 会将 URL 中的域名解析为 IP 地址。
  • 建立连接: 使用 TCP/IP 协议与服务器建立连接。对于 HTTPS 请求,还会进行 SSL/TLS 握手以确保安全。
  • 发送请求: 将构造的请求头和请求体发送到服务器。
  • 等待响应: 服务器处理请求,并返回响应数据。
  • 接收响应: curl 接收响应,包括状态码、响应头和响应体。
  • 显示结果: 默认情况下,curl 会在终端显示响应内容。
    • 可以使用选项将其保存到文件或进行其他处理。

常用选项

  • -X:指定请求方法(GET、POST、PUT、DELETE 等)。
  • -H:添加自定义请求头。
  • -d:发送数据(通常用于 POST 请求)。
  • -F:以表单格式发送数据(用于文件上传)。
  • -o:将响应输出到指定文件。
  • -s:静默模式,不显示进度或错误信息。
  • -v:详细模式,显示请求和响应的详细信息。
  • -u:提供基本身份验证的用户名和密码。
  • –data-urlencode:对数据进行 URL 编码。
  • -L:跟随重定向。
  • –max-time:设置最大请求时间。
  • -x:设置代理服务器。
  • -k:允许不安全的 SSL 连接(跳过证书验证)。

curl -w

支持多种变量,可以用来获取详细的请求信息。
以下是一些常用的变量:

  • 时间相关:

    • %{time_namelookup}:DNS 查询时间
    • %{time_connect}:建立 TCP 连接的时间
    • %{time_appconnect}:SSL/TLS 握手时间
    • %{time_pretransfer}:准备传输的时间
    • %{time_starttransfer}:从请求开始到接收到第一个字节的时间
    • %{time_total}:总时间
  • 传输相关:

    • %{size_download}:下载的字节数
    • %{size_upload}:上传的字节数
    • %{speed_download}:下载速度(字节/秒)
    • %{speed_upload}:上传速度(字节/秒)
  • 状态和信息:

    • %{http_code}:HTTP 状态码
    • %{url_effective}:实际请求的 URL
    • %{redirect_count}:重定向次数
    • %{num_connects}:连接次数
  • 连接信息:

    • %{remote_ip}:远程服务器的 IP 地址
    • %{local_ip}:本地 IP 地址
  • 其他:

    • %{content_type}:响应内容类型
    • %{header_size}:响应头大小

示例

curl -o /dev/null -s -w "HTTP Status: %{http_code}\nTotal Time: %{time_total} seconds\n"  https://ichochy.com

参数说明

  • -o /dev/null:将响应体输出到 /dev/null,即不显示内容。
  • -s:静默模式,不显示进度或错误信息。
  • -w:格式化输出,包括 HTTP 状态码和请求的总时间。

网站请求测速

测速脚本

完整脚本:speedtest.sh

#! /bin/bash

# 网络访问测试
# 通过CURL命令测试网络访问时间
# author: 	iChochy
# site:		https://ichochy.com

read -p "测速URL(可为空):" url

if [ -z $url ]
then
	url="https://ichochy.com"
fi

echo "测速URL:$url"

echo "开始测速…………"

curl -o /dev/null -s -w time_namelookup:"\t"%{time_namelookup}"\n"time_connect:"\t\t"%{time_connect}"\n"time_appconnect:"\t"%{time_appconnect}"\n"time_pretransfer:"\t"%{time_pretransfer}"\n"time_starttransfer:"\t"%{time_starttransfer}"\n"time_total:"\t\t"%{time_total}"\n"time_redirect:"\t\t"%{time_redirect}"\n"  $url

echo "循环测速…………"
i=1
while  (($i<=5))
do
printf "第"$i"次:"

curl -o /dev/null -s -w time_connect:"\t"%{time_connect}"\t"time_total:"\t"%{time_total}"\n" $url 
let i++

done

echo "####################################"
echo "字段说明:"
echo "time_namelookup \t# 从开始计算,域名解析完成的耗时"
echo "time_connect \t\t# 从开始计算,TCP建立完成的耗时"
echo "time_appconnect \t# 从开始计算,应用层握手完成的耗时"
echo "time_pretransfer \t# 从开始计算,准备传输数据的耗时"
echo "time_starttransfer \t# 从开始计算,开始接收数据的耗时"
echo "time_total \t\t# 从开始记算,完成接收数据的耗时"
echo "time_redirect \t\t# 重定向的耗时,没有重定向时间为0"

脚本使用

  • 保存脚本为speedtest.sh
  • 在终端中运行脚本 sh ./speediest.sh
  • 查看运行结果
mleo@Mac[mleo]: sh ./speediest.sh
测速URL(可为空):
测速URL:https://ichochy.com
开始测速…………
time_namelookup:	0.000695
time_connect:		0.001227
time_appconnect:	0.614623
time_pretransfer:	0.614876
time_starttransfer:	0.968854
time_total:		0.970281
time_redirect:		0.000000
循环测速…………
第1次:time_connect:	0.000799	time_total:	1.136176
第2次:time_connect:	0.001501	time_total:	0.806167
第3次:time_connect:	0.001580	time_total:	0.710288
第4次:time_connect:	0.001136	time_total:	0.612873
第5次:time_connect:	0.000909	time_total:	0.768882
####################################
字段说明:
time_namelookup 	# 从开始计算,域名解析完成的耗时
time_connect 		# 从开始计算,TCP建立完成的耗时
time_appconnect 	# 从开始计算,应用层握手完成的耗时
time_pretransfer 	# 从开始计算,准备传输数据的耗时
time_starttransfer 	# 从开始计算,开始接收数据的耗时
time_total 		# 从开始记算,完成接收数据的耗时
time_redirect 		# 重定向的耗时,没有重定向时间为0

总结

curl 是一个强大的命令行工具,用于在网络上发送和接收数据,支持多种协议如 HTTP、HTTPS、FTP 等。
它允许用户灵活地执行各种请求,包括 GET、POST 等,并能够自定义请求头和数据。
curl 适合进行 API 测试、文件传输和网络调试,支持身份验证和 SSL/TLS 加密,适用于多种操作系统。
通过简单的命令,用户可以轻松与服务器进行交互并获取详细的请求和响应信息。