在Web开发调试过程中,查看浏览器与服务器之间的网络请求交互是定位问题的关键手段。作为前端开发者,我经常遇到这样的场景:页面显示异常时,需要确认是前端传参错误还是后端返回数据有问题;性能优化时,要分析哪些接口响应缓慢;对接第三方API时,需验证请求格式是否符合文档要求。
浏览器开发者工具(按F12唤出)中的Network面板记录了所有网络活动,但默认只显示当前页面的请求。当页面刷新或跳转后,这些记录就会消失。这就引出了核心需求:如何持久化保存或查看之前的接口请求记录?
打开Chrome开发者工具(Windows/Linux按F12或Ctrl+Shift+I,Mac按Command+Option+I),切换到Network面板。这里有几个关键配置项:
重要提示:勾选Preserve log会持续占用内存,长时间调试后可能导致浏览器卡顿。建议按需使用,调试完成后取消勾选。
面对大量请求时,这些过滤方式很实用:
domain:api.example.com我常用的高级过滤语法:
code复制method:POST status-code:200
这可以快速找到所有成功的POST请求。
对于需要长期保存的请求,可以右键点击请求 → Copy → Copy as cURL,然后粘贴到笔记工具中。更高效的方式是使用控制台命令自动保存:
javascript复制// 在Console面板执行
const requests = [];
const observer = new PerformanceObserver(list => {
list.getEntries().forEach(entry => {
if(entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch') {
requests.push({
url: entry.name,
type: entry.initiatorType,
duration: entry.duration
});
}
});
});
observer.observe({entryTypes: ['resource']});
// 查看保存的请求
console.table(requests);
当需要跨页面会话分析时,推荐这些专业工具:
Charles/Fiddler:
Postman的Interceptor:
浏览器插件:
cURL命令重放:
代码重放:
javascript复制// 在Console面板直接重发请求
await fetch('https://api.example.com/data', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({key: 'value'})
});
浏览器重放:
通过对比历史请求,我发现某个商品详情接口平均耗时1.2秒。经过以下优化步骤:
Cache-Control: max-age=300关键指标对比表:
| 指标 | 优化前 | 优化后 |
|---|---|---|
| 响应时间 | 1200ms | 400ms |
| 响应体大小 | 45KB | 18KB |
| 缓存命中率 | 0% | 72% |
当发现预期请求未出现时:
performance.getEntries()验证请求是否真实发生对于加密的HTTPS请求,有两种解密方案:
浏览器自带的SSL解密:
中间人代理方案:
bash复制# 使用mitmproxy
mitmproxy --mode transparent --showhost
安全警告:解密HTTPS流量涉及敏感操作,仅限开发环境使用。生产环境必须遵守安全规范。
对于需要长期监控的API,可以编写脚本自动记录:
python复制# 使用Selenium+BrowserMob Proxy示例
from selenium import webdriver
from browsermobproxy import Server
server = Server("path/to/browsermob-proxy")
server.start()
proxy = server.create_proxy()
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument(f"--proxy-server={proxy.proxy}")
driver = webdriver.Chrome(options=chrome_options)
proxy.new_har("api-monitor")
driver.get("https://example.com")
# 保存请求记录
with open("requests.json", "w") as f:
f.write(json.dumps(proxy.har))
这个方案特别适合:
我在实际项目中发现,结合PageSpeed Insights的API,可以构建完整的性能监控体系。比如当关键API响应时间超过阈值时,自动触发告警。