2 k345bu k345bu 于 2015.07.24 14:11 提问

HOOK WebBrowser获取打开的网址 request response header等.

以下代码使用了EsayHook

想先获取到打开的网址. 无奈断点断不到..是否HOOK的函数错了?

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using EasyHook;


namespace TestHookAPI
{
    public partial class Form1 : Form
    {
        LocalHook hookt = null;
        [DllImport("WININET.dll", SetLastError = true, CharSet = CharSet.Unicode)]
        public static extern IntPtr InternetOpenUrlW(
                                IntPtr hInternet,
                                string lpszUrl,
                                string lpszHeaders,
                                Int32 dwHeadersLength,
                                Int32 dwFlags,
                                System.UIntPtr dwContext
                                );

        [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Unicode, SetLastError = true)]
        public delegate IntPtr d_InternetOpenUrl(
                                        IntPtr hInternet,
                                        string lpszUrl,
                                        string lpszHeaders,
                                        Int32 dwHeadersLength,
                                        Int32 dwFlags,
                                        System.UIntPtr dwContext
                                        );
        public static IntPtr h_InternetOpenUrl(
                                        IntPtr hInternet,
                                        string lpszUrl,
                                        string lpszHeaders,
                                        Int32 dwHeadersLength,
                                        Int32 dwFlags,
                                        System.UIntPtr dwContext
                                        )
        {
            IntPtr pret = InternetOpenUrlW(hInternet, lpszUrl, lpszHeaders, dwHeadersLength, dwFlags, dwContext);
            return pret;
        }

        public Form1()
        {
            InitializeComponent();

        }
        private void Form1_Load(object sender, EventArgs e)
        {
            hookt = LocalHook.Create(LocalHook.GetProcAddress("WININET.dll", "InternetOpenUrlW"), new d_InternetOpenUrl(h_InternetOpenUrl), this);
            hookt.ThreadACL.SetExclusiveACL(new Int32[0]);
            webBrowser1.Navigate("http://www.baidu.com/");
        }

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {

        }
    }
}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Webbrowser调用dll,简单方便获取request response header等资源的例子,实现了HttpWebResquest等实现的功能
老外写的Webbrowser调用dll,简单方便获取request header,response header等各种网络资源的例子,实现了原来只有WebClient,WebRequest和HttpWebResquest才能实现的功能。 需要dll的完整源代码见我上传的另外一个资源下载。 代码已经调试通过,如果访问网络资源超时有可能出现 "其他信息: CLR无法从COM上下文0x211c88转换为COM上下文0x211b18,这种状态已持续60秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送Windows消息的情况下处理一个运行时间非常长的操作。这种情况通常会影响到性能,甚至可能导致应用程序不响应或者使用的内存随时间不断累积。要避免此问题,所有单线程单元(STA)线程都应使用泵式等待基元(如CoWaitForMultipleHandles),并在运行时间很长的操作过程中定期发送消息" 解决方案: 在VS2008中,"调试"-->"异常"--->把Managed Debugging Assistants-----ContextSwitchDeadlock 后面的勾号去掉)
获取网站中response.Headers["location"],找到抓取页面
private static string getPageContent(string tastKeyword) { string htmlcontent = ""; HttpWebRequest request = null; HttpWebResponse response = null;
用WebBrowser获得网页传递参数
procedure AutoLogin(iDoc1:IHTMLDocument2);var    spDisp: IDispatch;    j: integer;    iELC  : IHTMLElementCollection ;    S2,sn : string;    HtmlInputEle : IHTMLInputElement;    HTMLFormEle  : IHTMLFo
Http Request header/Response header
Http Request header/Response header HTTP Request header 当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等。 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了Web应用程序的内部工作. 本文将对HTTP协议进行详细的实例讲解,内容较多,希望大家耐心看。也希望对大家的开发工作或者测试工作有所帮助。使用Fidd
从WebBrowser中取得Cookie 和 HttpWebRequest设置cookie!
.将WebBrowser的cookie信息传给HttpWebRequest 第一种方法: 先建一个"CookieContainer" 把WebBrowser中的Cookie保存在里面 //在WebBrowser中登录cookie保存在WebBrowser.Document.Cookie中     CookieContainer myCookieContainer = new Cook
HTTP Request/Response header
http://www.cnblogs.com/lexus/archive/2012/02/21/2360944.html URL详解  URL(Uniform Resource Locator) 地址用于描述一个网络上的资源,  基本格式如下 schema://host[:port#]/path/.../[?query-string][#anchor]
解析网页的request header
解析网页的request header Request Headers: 下图是我访问一个URL:http://www.hzau.edu.cn的一个header,根据具体实例来分析一下各部分的功能及其作用。     Accept 作用: 浏览器端可以接受的媒体类型, 例如:  Accept: text/html  代表浏览器可以接受服务器回发的类型
浏览器Request Header和Response Header的内容
1)请求(客户端->服务端[request])      GET(请求的方式) /newcoder/hello.html(请求的目标资源) HTTP/1.1(请求采用的协议和版本号)      Accept: */*(客户端能接收的资源类型)      Accept-Language: en-us(客户端接收的语言类型)      Connection: Keep-Alive(维护客户端和
Hook浏览器控件WebBrowser对WININET.dll的调用
此文章的代码可以从此处下载:http://www.codeproject.com/KB/shell/RetrieveHttponlyCookies.aspx 开发中经常使用到WebBrowser。WebBrowser控件编程控制起来很方面,好处不用说了。 但日前遇到一个问题,如何获取HTTP服务器页面返回的HTTP HEADER(不是DOM的head)? 比如说ASP.Net页
Fiddler工具介绍(request和response)
本篇简单的介绍下fiddler界面的几块区域,以及各自区域到底是干什么用的,以便于更好的掌握这个工具