Skip to content

Outbound请求拦截点

hueng edited this page Apr 29, 2020 · 3 revisions

看过 流量录制拦截点选择 可知,golang的录制是在语言标准库层面做的拦截。

同理,流量回放也是在语言标准库层面做的拦截。修改系统调用 syscall.Connect 方法,将原本的socket地址sa替换为Mock Server地址。

func Connect(fd int, sa Sockaddr) (err error) {
	ptr, n, err := sa.sockaddr()
	if err != nil {
		return err
	}
	return connect(fd, ptr, n)
}

实现上面修改的正是 sharingan/replayer 包,基于开源 gomonkey 库mock syscall.Connect 方法,解决了回放的第一个问题。

Clone this wiki locally