
1. 用 curl / 浏览器调接口
1)浏览器在做什么
你在浏览器地址栏输入一个 URL,本质上是在发一个 HTTP/HTTPS 请求。
例如访问:
https://example.com/api/user?id=1
浏览器会自动帮你做很多事:
-
解析 URL
-
建立连接
-
发送请求头
-
处理 Cookie
-
渲染返回内容
所以浏览器更像一个"自动化客户端"。
2)curl 在做什么
curl 是命令行里的"手动客户端"。
它适合:
-
调接口
-
看返回头
-
测试服务是否可用
-
验证代理是否生效
-
调试 API
例如:
curl https://example.com
表示:
向这个网址发一个 GET 请求
如果是接口请求,常见会写成:
curl -X POST https://example.com/api/login \
-H "Content-Type: application/json" \
-d '{"user":"abc","password":"123"}'
这表示:
-
-X POST:请求方法是 POST -
-H:加请求头 -
-d:发送请求体
3)HTTP 请求
一个 HTTP 请求至少要会看这几类信息:
请求部分
-
URL
-
方法:GET / POST / PUT / DELETE
-
请求头:Host、Authorization、Content-Type
-
请求体:JSON、表单等
响应部分
-
状态码:200、404、500
-
响应头
-
响应体
2. 理解"访问一个网站发生了什么"
这是应用层和下面几层连接起来的关键问题。
你访问一个网站,比如:
https://www.example.com
背后通常发生了下面这些事。
1)解析域名
浏览器先要知道:
www.example.com 对应哪个 IP
这一步通常通过 DNS 完成。
也就是:
域名 → IP 地址
2)建立连接
如果是 HTTP 明文网站,通常建立 TCP 连接。
如果是 HTTPS,还会在 TCP 之上建立 TLS 安全连接。
所以你可以粗理解为:
HTTP = TCP + HTTP协议
HTTPS = TCP + TLS + HTTP协议
3)发送 HTTP 请求
浏览器会发类似这样的请求:
GET / HTTP/1.1
Host: www.example.com
User-Agent: ...
Cookie: ...
也就是说:
告诉服务器:我要首页内容,站点名是这个,我是谁,我带了哪些状态信息
4)服务器处理请求
服务器收到请求后,可能会:
-
返回静态 HTML
-
查数据库
-
调后端接口
-
做鉴权
-
生成页面内容
5)返回响应
服务器返回:
-
状态码
-
响应头
-
页面内容 / JSON / 图片 / CSS / JS
比如:
200 OK
Content-Type: text/html
6)浏览器继续加载资源
一个网页通常不止一个文件。
HTML 里还可能引用:
-
CSS
-
JavaScript
-
图片
-
字体
-
视频
-
更多接口请求
于是浏览器会继续发更多请求。
7)整体理解
你要把"访问网站"理解成:
域名解析
→ 建立连接
→ 发 HTTP 请求
→ 服务器处理
→ 返回响应
→ 浏览器继续加载和渲染
而不是简单地"点一下网页就出来了"。
3. 配置 SSH、代理、隧道
1)SSH
SSH 本质上是:
安全的远程登录和远程通信协议
你常见的命令:
ssh user@server
意思是:
连接远程服务器,并以 user 身份登录
如果改端口:
ssh -p 60000 user@server
就是连远程的 60000 端口。
2)代理
代理的本质是:
我不直接访问目标,
而是先把请求交给中间人,由中间人替我访问
常见有:
-
HTTP 代理
-
SOCKS5 代理
例如:
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
表示很多程序访问 HTTP/HTTPS 时,会先走本地代理。
如果是 SOCKS5:
export all_proxy=socks5h://127.0.0.1:7891
3)隧道
隧道的本质是:
把一种连接"包"进另一种连接里传过去
最常见的就是 SSH 隧道。
本地转发
例如:
ssh -L 8080:目标地址:80 user@server
意思是:
你本地访问 8080
→ 通过 SSH
→ 转到远端再访问 目标地址:80
远程转发
例如:
ssh -R 7890:127.0.0.1:7890 user@server
意思是:
把服务器上的 7890 端口
转发到你本地的 7890
这就是你前面问的"把主机 VPN 能力转给服务器"时最常用的方法。
4. 公钥 / 私钥认证
这部分是 SSH 认证里最关键的安全机制。
1)最核心的一句话
公钥可以公开,私钥必须自己保管
你可以把它类比成:
公钥 = 锁
私钥 = 钥匙
服务器上放"锁",你手里拿"钥匙"。
2)SSH 里怎么用
本地
你会有一对密钥,比如:
~/.ssh/id_rsa 私钥
~/.ssh/id_rsa.pub 公钥
服务器
服务器上会保存你的公钥,一般在:
~/.ssh/authorized_keys
3)登录时发生了什么
当你用 SSH 登录时:
-
服务器说:证明你是合法用户
-
服务器发一个随机挑战
-
你用私钥对这个挑战做签名
-
服务器用公钥验证签名是否正确
-
正确就说明你确实持有对应私钥,于是允许登录
所以:
服务器不需要知道你的私钥
只需要保存你的公钥
4)为什么比密码安全
密码登录的问题是:
-
容易被爆破
-
可能泄露
-
经常需要手输
公钥认证的好处是:
✔ 不需要把密码发给服务器
✔ 私钥不离开本机
✔ 更难暴力破解
✔ 适合自动化和免密登录