Skip to content

Latest commit

 

History

History
24 lines (16 loc) · 1.26 KB

File metadata and controls

24 lines (16 loc) · 1.26 KB

HTTP 操作

HTTP 一般是由一次请求和一次响应构成的协议, 没有完全意义上的双向通信。HTTP 协议是无状态 (stateless) 的: 两次 HTTP 请求之间在 HTTP 层的逻辑上是完全分离的。因此, 你可以对 HTTP 请求和对应的响应做捕获/修改/重放操作。

你可以通过 Firefox devtools 中的网络面板 对 HTTP 的捕获、修改、重放建立一个直观的感受: 选中一个 HTTP 请求后点击鼠标右键, 选择「编辑并重发」。(Chrome 和 Edge 的对应功能不是很稳定, 甚至有时候找不到; 因此推荐使用 Firefox devtools 而非 cr/edge devtools。)

你需要支持:

  • 实时解析流量中的 (明文) HTTP 请求和响应
  • 按照预先写好的规则 (最好是可编程的规则) 实时重写 HTTP 包 (method, headers, body)
  • 记录 HTTP 请求和响应
  • 对记录的 HTTP 请求进行修改
  • 向服务器重新发送记录下来的 HTTP 包

以下功能是加分项:

  • 实现 HTTPS 加密协议的以上功能 (需要先实现 TLS 劫持)

此任务大致分为几个部分:

  • 解析 HTTP 请求和响应
  • 请求、响应的实时修改
  • HTTP 会话的记录
  • 对记录下的 HTTP 请求进行重放