Charles HTTP抓包原理

本文介绍了Charles作为Web代理服务器的工作原理,通过WireShark和macOS环境进行辅助说明。在不设置代理的情况下,HTTP请求仅包含路径。而使用代理时,请求头需包含全URL以指示目标服务器。通过设置过滤条件和代理,可以观察到HTTP请求的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言: Web代理服务器

来自参考链接2

对客户端/浏览器来说Web代理服务器是服务器
对服务器来说Web代理服务器是客户端

环境

WireShark
Charles
macOS 10.13.6

解释

根据参考链接1中的这段话

Web proxy servers
Web proxies forward HTTP requests. The request from the client is the same as a regular HTTP request except the full URL is passed, instead of just the path.[17]

GET http://en.wikipedia.org/wiki/Proxy_server HTTP/1.1
Proxy-Authorization: Basic encoded-credentials
Accept: text/html

Web代理服务器在转发HTTP请求时与正常的HTTP是一样的,除了请求头某个字段要传递全路径(full URL)而不是简单的路径(path)。继续追踪,通过rfc7230,就能知道这个这个字段就是absolute-form

为什么会有这个变化呢? 原来只要传路径是因为,服务器知道自己的host是什么,但是代理服务器是充当了客户端的服务器后,我们必须要告诉代理服务器,接下去要访问谁,光提供路径是不够的。

证明

准备

iTerm ping Blog的域名,获得ip

% sudo ping www.iosugar.com
PING ishepherdminer.github.io (185.199.111.153): 56 data bytes
64 bytes from 185.199.111.153: icmp_seq=0 ttl=52 time=141.981 ms
...

打开 WireShark 监听 en0 网卡,当前状态下就是无线网卡

设置过滤条件http and ip.addr == 185.199.111.153

未设置代理

Chrome直接访问www.iosugar.com

设置代理

手机设置代理,用Safari访问

过滤条件设置为 http and ip.addr == 185.199.110.153 or ip.dst == 192.168.31.191

其中192.168.31.191是计算机的地址

参考

  1. Web_proxy_servers
  2. Thick Client Proxying - Part 6: How HTTP(s) Proxies Work
  3. rfc7230
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值