如何通过IIS模块抓取网页的响应文本?
本文关键字:响应 文本 网页 抓取 何通过 IIS 模块 | 更新日期: 2023-09-27 18:05:42
我正在研究一个IIS模块,当一个网页请求被提出时,它会查看正在传递回浏览器的数据,并将某些关键字替换为批准的关键字。我知道有多种方法可以做到这一点,但就我们的目的而言,IIS模块将是最好的。
我如何读取数据流被发送回浏览器成字符串,以便我可以根据需要转换关键字?
任何帮助将非常感激!
代码如下:
namespace MyNamespace
{
class MyModule : IHttpModule
{
private HttpContext _current = null;
#region IHttpModule Members
public void Dispose()
{
throw new Exception("Not implemented");
}
public void Init(HttpApplication context)
{
_current = context.Context;
context.PreRequestHandlerExecute += new EventHandler(context_PreRequestHandlerExecute);
}
#endregion
public void context_PreRequestHandlerExecute(Object source, EventArgs e)
{
HttpApplication app = (HttpApplication)source;
HttpRequest request = app.Context.Request;
}
}
有两种方法:
- 使用响应过滤器
https://web.archive.org/web/20211029043851/https://www.4guysfromrolla.com/articles/120308 - 1. - aspx
-
处理应用程序的
PreRequestHandlerExecute
事件,因为它在IHttpHandler
处理页面本身之前运行:public class NoIndexHttpModule : IHttpModule { public void Dispose() { } public void Init(HttpApplication context) { context.PreRequestHandlerExecute += AttachNoIndexMeta; } private void AttachNoIndexMeta(object sender, EventArgs e) { var page = HttpContext.Current.CurrentHandler as Page; if (page != null && page.Header != null) { page.Header.Controls.Add(new LiteralControl("<meta name='"robots'" value='"noindex, follow'" />")); } }
}