在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例Windows系统编程 → 监听webbrowser所有请求(含 js/css/flash/ajax 等请求) 附完整源码

监听webbrowser所有请求(含 js/css/flash/ajax 等请求) 附完整源码

Windows系统编程

下载此实例
  • 开发语言:C#
  • 实例大小:0.75M
  • 下载次数:320
  • 浏览次数:12284
  • 发布时间:2013-05-10
  • 实例类别:Windows系统编程
  • 发 布 人:crazycode
  • 所需积分:4
 相关标签: WebBrowser Ajax flash 监听

实例介绍

【实例简介】

IE11下不可用,请在低版本IE测试

监听webbrowser的所有请求以及查看 请求的详细,含session cookie 请求标题等信息

其中参考了如下项目:

http://www.codeproject.com/Articles/38616/Retrieve-HttpOnly-Session-Cookie-in-WebBrowser


【实例截图】


【核心代码】

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.IO;
using System.Windows.Forms;

using System.Runtime.InteropServices ;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        private class CustomTag
        {
            public string RequestHeaders { get; set; }
            public string ResponseHeaders  { get; set; }
            public byte[] RequestBody { get; set; }
        };


        public Form1()
        {
            InitializeComponent();
        }

        private void OnRequestCompleted(string verb
            , string url
            , string requestHeaders
            , string responseHeaders
            , string requestBodyFilename
            )
        {
            byte[] buffer = new byte[0];
            if (!string.IsNullOrEmpty(requestBodyFilename))
            {
                using (FileStream fs = new FileStream(requestBodyFilename, FileMode.Open, FileAccess.Read, FileShare.Delete | FileShare.ReadWrite))
                {
                    buffer = new byte[fs.Length];
                    fs.Read(buffer, 0, buffer.Length);
                    fs.Close();
                }
            }
            
            var lvi = new ListViewItem() { Text = DateTime.Now.ToString() };
            lvi.SubItems.Add(verb);
            lvi.SubItems.Add(url);
            lvi.Tag = new CustomTag 
            {
                RequestHeaders = requestHeaders,
                ResponseHeaders = responseHeaders,
                RequestBody = buffer
            };
            HandleRequestDelegate del = this.HandleRequest;
            this.listView1.BeginInvoke(del, lvi);
        }

        private delegate void HandleRequestDelegate(ListViewItem lvi);

        private void HandleRequest(ListViewItem lvi)
        {
            this.listView1.Items.Add(lvi);
        }


        private void Form1_Load(object sender, EventArgs e)
        {
            webBrowser1.Navigate("http://www.ifeng.com");

            this.listView1.SelectedIndexChanged  = new EventHandler(listView1_SelectedIndexChanged);

            // initialize
            WininetHookWrapper.SetRequestCompletionCallback(this.OnRequestCompleted);
        }

        void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count == 0)
                return;

            var tag = (listView1.SelectedItems[0].Tag as CustomTag);
            txtRequestHeaders.Text = tag.RequestHeaders;
            txtResponseHeaders.Text = tag.ResponseHeaders;
            txtBody.Text = Encoding.ASCII.GetString(tag.RequestBody);
        }
    }
} 

实例下载地址

监听webbrowser所有请求(含 js/css/flash/ajax 等请求) 附完整源码

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

第 1 楼 psc2009 发表于: 2013-05-21 14:51 32
requestBodyFilename为什么一直为空

支持(0) 盖楼(回复)

第 2 楼 lostgdi 发表于: 2013-06-04 17:33 55
真的是好例子,谢谢共享。

支持(0) 盖楼(回复)

第 3 楼 zhangguofu 发表于: 2013-11-13 09:59 56
借鉴一下,谢谢了

支持(0) 盖楼(回复)

第 4 楼 qingjun1991 发表于: 2014-03-01 14:30 04
我来说两句...

支持(0) 盖楼(回复)

第 5 楼 stevenhqq 发表于: 2014-04-24 15:01 56
下个东西需要积分啊?。。。

支持(0) 盖楼(回复)

第 6 楼 talip1106 发表于: 2014-06-24 20:34 32
急需啊

支持(0) 盖楼(回复)

第 7 楼 talip1106 发表于: 2014-06-24 20:42 04
不行啊这个,都是空的

支持(0) 盖楼(回复)

第 8 楼 ccvong@qq.com 发表于: 2014-09-18 15:19 55
谢谢共享。

支持(0) 盖楼(回复)

第 9 楼 fdsafasdf 发表于: 2014-09-19 11:13 51
真的是好例子,谢谢共享。

支持(0) 盖楼(回复)

第 10 楼 sssoop 发表于: 2014-10-15 13:36 52
明明是C++的 怎么说是C#的 这不是坑人么

支持(0) 盖楼(回复)

第 11 楼 nfcs911 发表于: 2014-11-27 17:24 44
没有积分呀~

支持(0) 盖楼(回复)

第 12 楼 yangminjian 发表于: 2014-12-16 16:19 56
非常好!!!!!!我来说两句...

支持(0) 盖楼(回复)

第 13 楼 reghtml 发表于: 2015-03-10 13:17 02
... 可惜是C#的。。。

支持(0) 盖楼(回复)

第 14 楼 reghtml 发表于: 2015-03-10 13:17 56
... 可惜是C#的。。。

支持(0) 盖楼(回复)

第 15 楼 44033506 发表于: 2015-03-13 21:35 04
傻逼,骗分数的,千万不要上当!

支持(0) 盖楼(回复)

第 16 楼 artfairy 发表于: 2015-03-18 13:00 07
空的????

支持(0) 盖楼(回复)

第 17 楼 kialison 发表于: 2015-03-23 20:02 27
为什么要积分呢

支持(0) 盖楼(回复)

第 18 楼 fengssy 发表于: 2015-03-26 15:22 10
有问题,都没抓到!

支持(0) 盖楼(回复)

第 19 楼 flyfish010 发表于: 2015-04-03 00:29 16
没有用啊

支持(0) 盖楼(回复)

第 20 楼 979156711 发表于: 2015-06-09 16:21 40
我来说两句...

支持(0) 盖楼(回复)

第 21 楼 天牧 发表于: 2015-07-11 21:19 29
这个到底是C#开发的还是C++开发的?

支持(0) 盖楼(回复)

第 22 楼 天牧 发表于: 2015-07-11 22:28 36
我刚充了10块钱, 买了你这个东西. 根本什么也监听不到. 浪费钱!!!! 是C#开发的.

支持(0) 盖楼(回复)

第 23 楼 星火燎原 发表于: 2015-07-12 09:41 54
请大家看下提示, 该实例在IE10、IE11下是不可用的,请在IE10之前的版本 测试,因为 IE10之后 内核进行了大升级,所以 该实例暂不适合 高版本IE

支持(0) 盖楼(回复)

第 24 楼 123123123123 发表于: 2015-07-21 10:06 16
我来说真的是好例子,谢谢共享。两句...

支持(0) 盖楼(回复)

第 25 楼 chears 发表于: 2015-11-12 14:02 18
谢谢共享!!!

支持(0) 盖楼(回复)

第 26 楼 godslife 发表于: 2016-03-15 11:05 52
看起来不错

支持(0) 盖楼(回复)

第 27 楼 aaaaaaaaaaa 发表于: 2016-06-05 15:09 50
23

支持(0) 盖楼(回复)

第 28 楼 peterfzh 发表于: 2017-08-24 18:17 46
看起来不错

支持(0) 盖楼(回复)

第 29 楼 peterfzh 发表于: 2017-08-24 18:17 50
看起来不错

支持(0) 盖楼(回复)

第 30 楼 peterfzh 发表于: 2017-08-24 18:17 52
看起来不错

支持(0) 盖楼(回复)

第 31 楼 peterfzh 发表于: 2017-08-24 18:17 53
看起来不错

支持(0) 盖楼(回复)

发表评论

(您的评论需要经过审核才能显示)

查看所有31条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
;
报警