问一下基于IE内核的浏览器怎么获取其网页内容?分不是问题! 想做个过滤程序,但不知道怎么获取IE内核的浏览器的网页内容,比如TT,360之类的,我看有一些杀毒软件无论什么浏览器都能获取其网页内容,请问一下就是怎么实现的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 获取IE浏览器上的文本,VS2005编译通过。// InternetExplorer_Server_Text.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <mshtml.h> #include <atlbase.h> #include <oleacc.h>#include <string>#include <comdef.h>#include <stdio.h>using std::string; int _tmain(int argc, _TCHAR* argv[]){ CoInitialize(NULL); CComPtr<IHTMLDocument2> pDoc2; HINSTANCE hinst=::LoadLibrary("OLEACC.DLL"); string strTemp=""; if(hinst!=NULL) { LRESULT lres; UINT unMsg=::RegisterWindowMessage(_T("WM_HTML_GETOBJECT")); ::SendMessageTimeout((HWND)0x00020C0E,unMsg,0L,0L,SMTO_ABORTIFHUNG,1000,(DWORD*)&lres); LPFNOBJECTFROMLRESULT pfObjectFromLresult=(LPFNOBJECTFROMLRESULT)::GetProcAddress(hinst,_T("ObjectFromLresult")); if(pfObjectFromLresult!=NULL) { HRESULT hres; hres=(*pfObjectFromLresult)(lres,IID_IHTMLDocument2,0,(void**)&pDoc2); if(SUCCEEDED(hres)) { CComPtr<IHTMLElement> pHtmlElem; hres=pDoc2->get_body(&pHtmlElem); BSTR bstrText=NULL; pHtmlElem->get_innerText(&bstrText); _bstr_t _bstrTemp(bstrText,false); strTemp = (char*)_bstrTemp; } } ::FreeLibrary(hinst); } CoUninitialize(); printf("%s\n", strTemp.c_str()); return 0;} 谢谢,但我发现一个问题,我替换完后,用pHtmlElem->put_innerText(&bstrText); 发现网页是彻底改变了,比如提交表单会失败这样的,请问有什么方法可以解决么? 用windows 的spi/lsp方式获取网页内容,并对内容进行修改 。实现方式如下: 1. 用WSPSend解析IE请求的URL,记录对应的socket ; 2. 用WSPRecv接收数据并对数据解析和解码,分析网页内容,修改和添加自定义内容 ;刚好目前我也在做你同样的事情 ; API可以参考MSDN windows sockets 2=> windows sockets spi reference . 这个够底层!hehe,而且适用于“所有”浏览器。只是有个缺点,对于通过脚本动态生成的网页内容就有困难了。————————————————————————————————基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :) 谢谢,这个对HTTP的网页可以,但HTTPS这种加密的似乎不行吧,我用WPE截,全是乱码,不知道怎么解开。 我只是替换了几个字符 ,就不知道为什么ActiveX控件用不了了,是个编辑控件来的,我怀疑是源码重新加载了,但控件没有被初始化吧 这个当然不能简单地这么“替换”了,你这样相当于把整个网页都设置成纯文本的了。应该是找到具体的 HTML 元素对象(比如一个 span 或者一个 div),然后替换其文本内容。如果是在 IE 的 HTML 里做文本的查找替换,最好是用 TextRange 对象的相关操作。————————————————————————————————基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :) 不好意思 ,上面打错了应该是put_innerHTML不好意思,给你带来麻烦了 en, 你这个倒是没有搞成“纯文本”,但也是相当于页面内容重新装载了,而脚本之类的东西却未必能重新装载(比如 onload 的代码就不会从头执行),所以页面表现不正常也就可以理解了。要做文字过滤和替换,最好还是对 DOM 进行遍历。这种“一总替换”的方式终究是不妥,hehe————————————————————————————————基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :) 我想也应该是控件没有这初始化,请问哪里有VC DOM的文档?我研究一下,谢谢了 请教一下如果用你的方法WSPRecv接收数据,可以解出HTTPS的内容么? HTTPS本身就是加密安全协议,自然很多内容是不能让你解析的 HTTPS本身就是安全加密协议,它的内容自然不能让你轻易解析 HTTPS本身就是安全加密协议,它的内容自然不能让你轻易解析 IE有办法解析SSL加密,相信在WSPRecv也有办法解析。 浏览器有办法解析SSL加密,相信在WSPRecv也有办法解析。难点是得知道密钥! 关于套接字send和recv内部原理的问题 关于重叠结构的多客户端问题 请教,关于PropertyPage的问题。不过俺忒穷了 请教 CTabControl 控件,如何实现跟VC6.0的工作区窗口样式。。。 enum如何定义 请教:如何用VC/MFC读取RSS的内容 高薪聘请VC高手参与制作一个小型项目 VC能解决长文件名问题吗??? 已知用 LockWorkStation()可以锁定工作站,但我的程序要怎么才知道当前工作站是否被锁定? C++结构体 AES密钥生成问题 求救:使用Map的Find方法出错
//#include "stdafx.h"#include <mshtml.h>
#include <atlbase.h>
#include <oleacc.h>
#include <string>
#include <comdef.h>
#include <stdio.h>
using std::string;
int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL);
CComPtr<IHTMLDocument2> pDoc2;
HINSTANCE hinst=::LoadLibrary("OLEACC.DLL");
string strTemp=""; if(hinst!=NULL)
{
LRESULT lres;
UINT unMsg=::RegisterWindowMessage(_T("WM_HTML_GETOBJECT"));
::SendMessageTimeout((HWND)0x00020C0E,unMsg,0L,0L,SMTO_ABORTIFHUNG,1000,(DWORD*)&lres);
LPFNOBJECTFROMLRESULT pfObjectFromLresult=(LPFNOBJECTFROMLRESULT)::GetProcAddress(hinst,_T("ObjectFromLresult"));
if(pfObjectFromLresult!=NULL)
{
HRESULT hres;
hres=(*pfObjectFromLresult)(lres,IID_IHTMLDocument2,0,(void**)&pDoc2);
if(SUCCEEDED(hres))
{
CComPtr<IHTMLElement> pHtmlElem;
hres=pDoc2->get_body(&pHtmlElem);
BSTR bstrText=NULL;
pHtmlElem->get_innerText(&bstrText);
_bstr_t _bstrTemp(bstrText,false);
strTemp = (char*)_bstrTemp;
}
}
::FreeLibrary(hinst);
}
CoUninitialize();
printf("%s\n", strTemp.c_str());
return 0;
}
实现方式如下:
1. 用WSPSend解析IE请求的URL,记录对应的socket ;
2. 用WSPRecv接收数据并对数据解析和解码,分析网页内容,修改和添加自定义内容 ;刚好目前我也在做你同样的事情 ; API可以参考MSDN windows sockets 2=> windows sockets spi reference .
————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
应该是put_innerHTML
不好意思,给你带来麻烦了
————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
浏览器有办法解析SSL加密,相信在WSPRecv也有办法解析。难点是得知道密钥!