gpt4 book ai didi

c++ - 是否可以在浏览器呈现之前拦截 http 请求并修改数据(例如使用正则表达式替换内容)?如果是这样,如何?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:24:28 25 4
gpt4 key购买 nike

今天我偶然发现了 Wireshark,它能够拦截您 PC 上的所有网络流量。我想知道是否可以在请求后修改数据(因此发送回 PC 的数据)并使用正则表达式修改它?就像在浏览器中呈现数据之前 替换数据中的单词和模式一样? (示例:将“疯狂”一词替换为“快乐”或将整个网站替换为“停止拖延”)

如果可能的话:

  • 我应该如何实现?哪些功能必不可少?
  • 是否有任何开源库可以帮助我完成此任务?
  • 在实现之前我应该​​先阅读什么内容?

请注意,此平台将是 Windows,我将尝试在 C++ 中执行此操作

最佳答案

您可以使用 WinDivert (LGPL) 为此目的(免责声明:WinDivert 是我的项目)。 WinDivert 是一种用户模式 ​​API,可将一些内核模式 WFP 调出驱动程序功能提升到用户空间。

伪代码看起来像这样:

HANDLE handle = DivertOpen(
"inbound && " // Inbound packets
"tcp.SrcPort == 80 && " // HTTP
"tcp.PayloadLength > 0", // Data
0, 0, 0);
while (TRUE)
{
// Capture a packet.
DivertRecv(handle, buf, size, &addr, &len);

// Modify the packet.
...

// Re-inject modified packet.
DivertSend(handle, buf, len, &addr, NULL);
}

请注意,WinDivert 是数据包级别的,因此 HTTP 流可能会拆分为多个数据包,这可能会使事情变得复杂。

关于c++ - 是否可以在浏览器呈现之前拦截 http 请求并修改数据(例如使用正则表达式替换内容)?如果是这样,如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12114438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com