急!如何获取IE发出的HTTP请求头

debehe 2005-07-27 11:24:25
各位大虾,帮帮忙了:
我要做一个用于监控IE的IE插件,请问我如何才能获取IE浏览一个页面时所发出的HTTP请求头,我想对HTTP请求头进行修改,插入我自己的信息。
同时,如何才能准确的知道IE当前正在下载的是哪个页面元素(如哪个图片)

解决之后我可以再加分。谢谢
...全文
834 点赞 收藏 14
写回复
14 条回复
debehe 2005年07月27日
打错字了,是楼上的,不好意思,各位XDJM帮忙了,谢谢谢谢。
回复 点赞
debehe 2005年07月27日
我是要做一个IE插件,所以楼主的方法,具体实现好像有点不太可行吧,还请详细说说做法。
回复 点赞
wflyfox 2005年07月27日
拦截网卡数据吧
看看winpcap!可以先用sniffer或者ethereal等截包软件看一下
www.winpcap.org
回复 点赞
debehe 2005年07月27日
有另一位达人是这么说的:
这接从网卡缓冲区取数据,然后解包,然后再打一个http请求包过去!就搞定了
解包参照 sinffer和网关欺骗的代码,http请求包参照flashget的连接参数表!
________这个我还是不知道要怎么做,请达人赐教。

不过我试着在BEFORENAVIGATE2那里发包,好像是对的了,不过我还没有截包来看看是不是真的对了,但应该差的话也不会差太多。

哈先把分结了先,谢谢大家。
回复 点赞
debehe 2005年07月27日
这样可以吗,我还不是很明白。
是这一个事件吗?我之前做了一个小的BHO插件,用来实现简单的网页过滤,我把这些IE事件放进去试验,当我浏览一个网址的时候,如果发生了这些事件,就会弹出窗口,不过好像我当时没有做这个事件,我再做一下实验。
我原本是想将HTTP的请求头(如下)进行更改这样我就不用自己再发包,但因为我最后还得resv,所以现在干脆只要找到这个点,就在这个点发包:

GET / HTTP/1.1
Host:www.sina.com
Accept:*/*
User-Agent:Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)
Connection:Keep-Alive


我实验一下,回头再上来
回复 点赞
goodboyws 2005年07月27日
如果要发数据包的话,也在上面那个位置:)
回复 点赞
goodboyws 2005年07月27日
其实两篇有完整的代码可以下载,对照代码再看一遍应该可以理解的
你要做的事情可能是这样

下载http://www.microsoft.com/mind/0598/browhelp.asp的代码
把这里改成这样
STDMETHODIMP CIEHlprObj::Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags,
DISPPARAMS* pDispParams, VARIANT* pvarResult,
EXCEPINFO* pExcepInfo, UINT* puArgErr)
{

if (!pDispParams)
return E_INVALIDARG;

if (dispidMember == DISPID_BEFORENAVIGATE2)
{
// Get the WebBrowser's document object
//你要实现的代码有可能是这样, 判断网址,处理之
BSTR bstr = pDispParams->rgvarg[5].pvarVal->bstrVal;
int a = SysStringLen(bstr);
if (a && wcscmp(bstr, L"http://www.sina.com.cn/") == 0)
*pDispParams->rgvarg[0].pboolVal = VARIANT_TRUE;

}

回复 点赞
debehe 2005年07月27日
谢谢,看了 goodboyws(深夜不眠者)  所提供的两篇文档,
可能是我理解不深,两篇都是对BHO的一个大概介绍,好像中文翻译的也看到过,但我现在要是是获得HTTP请求头,或者IE发出请求头的那个点的时间,我需要把在那一点上,用socket发出一些数据包。


orbit(走了走了) 您所说的有个参数,是哪一个能帮我查一下,我找不到,谢谢
回复 点赞
sjjf 2005年07月27日
mark
回复 点赞
goodboyws 2005年07月27日
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwebgen/html/bho.asp
http://www.microsoft.com/mind/0598/browhelp.asp
回复 点赞
goodboyws 2005年07月27日
bho
看Msdn的这两篇文章
Browser Helper Objects: The Browser the Way You Want It
Controlling Internet Explorer 4.0 with Browser Helper Objects
回复 点赞
debehe 2005年07月27日
下面是MSDN上的一些介绍

http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/webbrowser/reference/ifaces/iwebbrowser2/iwebbrowser2.asp


DWebBrowserEvents::BeforeNavigate Event Internet Development Index

--------------------------------------------------------------------------------

Fires before navigation occurs in the given object (on either a window or frameset element).

Syntax

void BeforeNavigate( IDispatch *pDisp,
VARIANT *&url,
VARIANT *&Flags,
VARIANT *&TargetFrameName,
VARIANT *&PostData,
VARIANT *&Headers,
VARIANT_BOOL *&Cancel
);
Parameters

pDisp
[in] Pointer to the IDispatch interface for the WebBrowser object that represents the window or frame. This interface can be queried for the IWebBrowser2 interface.
url
[in] Pointer to a VARIANT structure of type VT_BSTR that contains the URL to be navigated to.
Flags
[in] Reserved. Must be set to NULL.
TargetFrameName
[in] Pointer to a VARIANT structure of type VT_BSTR that contains the name of the frame in which to display the resource, or NULL if no named frame is targeted for the resource.
PostData
[in] Pointer to a VARIANT structure of type VT_BYREF|VT_VARIANT that contains the data to send to the server if the HTTP POST transaction is being used.
Headers
[in] Pointer to a VARIANT structure of type VT_BSTR that contains additional HTTP headers to send to the server (HTTP URLs only). The headers can specify things such as the action required of the server, the type of data being passed to the server, or a status code.
Cancel
[in, out] Pointer to a VARIANT structure of type VARIANT_BOOL that contains the cancel flag. An application can set this parameter to VARIANT_TRUE to cancel the navigation operation, or to VARIANT_FALSE to allow it to proceed.
Return Value

No return value.
Event DISPID

DISPID_BEFORENAVIGATE
The DISPID for this event is defined in exdispid.h. Use this value to identify the event handler when implementing IDispatch::Invoke.

Remarks

This event is obsolete. Use the DWebBrowserEvents2::BeforeNavigate2 event instead.



是这个吗:
Headers
[in] Pointer to a VARIANT structure of type VT_BSTR that contains additional HTTP headers to send to the server (HTTP URLs only). The headers can specify things such as the action required of the server, the type of data being passed to the server, or a status code.

按这里好像只是:(HTTP URLs only)请大虾帮忙!!
回复 点赞
debehe 2005年07月27日
我查看了那些事件,但是好像没有啊
回复 点赞
吹泡泡的小猫 2005年07月27日
既然是做IE的插件就好办了,IE的浏览器控件由很多事件,其中之一是BeforeNavigate(具体忘了,现在没有MSDN)其中一个参数是请求包的数据
回复 点赞
发动态
发帖子
ATL
创建于2007-09-28

3025

社区成员

4.8w+

社区内容

ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区公告
暂无公告