用 .Net WebBrowser 控件获取POST数据
很多应用中,开发者需要自己构建一个浏览器,并且对通过这个浏览器提交的请求进行截获,比如用户通过这个浏览器浏览了一个网页,并向网站提交(POST)了一些信息,我们想在其提交到网站前对这些POST数据在浏览器侧进行截获,做一些跟踪日志,或者对这些数据先加密或转换后再发送到服务器。.Net 提供的WebBrowser 控件可以让开发者很轻松的构建一个类似IE的浏览器,但这个控件提供的事件较少,一些高级应用单纯用这个控件提供的方法和事件无法实现。这篇文章我想介绍一下如何让 WebBrowser 控件可以截获自己POST出去的数据。
WebBrowser 其实是对 ActiveX 控件 SHDocVw 的封装,而这个SHDocVw的很多底层调用WebBrowser控件并没有提供实现,我们需要直接操作 SHDoceVw 控件来实现这些高级调用。操作方法如下:
1、在 windows/system32 目录下找到 shdocvw.dll 这个动态库,将其添加到引用中
2、在 Form1_Load 中添加如下语句
wb.BeforeNavigate2 +=
new DWebBrowserEvents2_BeforeNavigate2EventHandler(WebBrowser_BeforeNavigate2);
3、添加如下成员函数







完成上述3步后,你post 数据时, 就会响应 BeforeNavigate2 事件,postDataText 中就是你post的数据。你也可以修改PostData,对这些数据进行转换或加密。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述