`
zu14
  • 浏览: 459189 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类

C#利用mshtml的COM接口,将WebBrowser中的验证码图片读入内存

    博客分类:
  • C#
阅读更多

在做发贴机,灌水机,自动登录等情况时,如果遇到图片验证码的情形,就需要做验证码分析了,这时将验证码图片读入内存或保存在本地,就是必须的了

当然,使用WebClient直接download验证码图片回来,是可以实现的,但是这样的话,实际上是请求了2次验证码,而直接从webbrowser中,将验证码提取出来的话,就可以免去一次网络通信,而且,也可以应付一些网站的每次随验证码动态返回的其他附属验证信息对自动登录造成的影响。

.NET 自带的 WebBrowser 控件,使用起来可以说是相当方便了,微软 已经对其进行了比较完美的封装,但所谓“有得必有失”,正是这种封装,也使得该控件的一些底层信息,全都看不到了。

我们要实现的功能,就是利用了IE的DOM,这个在 WebBrowser 中,就无能为力了, 所以,我们这里要使用 mshtml 这个COM对象。

  1. 先添加对 mshtml 的引用, 在 COM 页上, 选择 Microsoft HTML Object Library
  2. 使用命名空间  using mshtml;
  3. 核心代码

 

HTMLDocument 
html = (HTMLDocument
)this
.webBrowser1.Document.DomDocument;

//下面代码中,获取图片的方式有很多,因为比较简单,我就不列举了,直接用ID来做为例子的

IHTMLControlElement 
img = (IHTMLControlElement
)webBrowser1.Document.Images["MzImgExpPwd"
].DomElement;

IHTMLControlRange 
range = (IHTMLControlRange
)((HTMLBody
)html.body).createControlRange();
range.add(img);
range.execCommand("Copy"
, false
, null
);

img = null
;
range = null
;
html = null
;

if 
(Clipboard
.ContainsImage())
{
    this
.pictureBox1.Image = Clipboard
.GetImage();
}
else

{
    MessageBox
.Show("执行不成功"
);
}

Clipboard
.Clear();

 

 

分享到:
评论

相关推荐

    C#中WebBrowser控件的简单调用

    1,在项目中引用程序集拓展中的Microsoft.mshtml后,可以在公共控件中找到WebBrowser控件。 2,在窗体中加入三个按钮,然后添加WebBrowser控件,右键控件选属性,设置相应的属性。 3,设置WebBrowser控件的属性 ...

    WebBrowser获取图片类库

    总的来说,通过`WebBrowser`控件和`mshtml`库,C#开发者可以在桌面应用中轻松地获取和处理网页中的图片资源,实现与网页的深度交互。然而,在实际项目中,还需要根据具体需求和目标环境,选择最适合的策略和工具来...

    C#获取登录验证码.rar

    有了验证码图片的URL后,可以使用C#的System.Drawing命名空间中的类来下载并处理图片。例如,Image类可以用于加载图片,Bitmap类可以用于进一步的图像处理,如灰度化、二值化、噪声去除等,以便于后续的字符识别。...

    MSHTML.rar_MSHTML_VC Html_mshtml c++_mshtml vc_site:www.pudn.co

    在现代软件开发中,与Web内容的交互变得越来越常见,而Microsoft的MSHTML组件提供了一种有效的方式,使得C++开发者能够利用Internet Explorer的内核来解析和操作HTML文档。本教程主要探讨如何在VC++环境中使用MSHTML...

    vb利用IHTMLElementCollection与WebBrowser获得网页表格内容

    以上代码展示了如何利用VB结合`WebBrowser`控件和`IHTMLElementCollection`接口从指定网页抓取表格数据,并将其存储到Access数据库的过程。需要注意的是,实际应用中可能还需要考虑到网页结构的变化以及网络延迟等...

    mshtml.dll下载

    这通常在Visual Studio等IDE中完成,将dll文件添加到项目的引用列表中,使得编译后的程序能够找到并使用这个库。 2. 导入库接口:接着,你需要导入相关的命名空间,如`using mshtml;`,以便在代码中调用mshtml.dll...

    C# WebBrowser 切换IE版本

    本篇将详细介绍如何在C#中实现`WebBrowser`控件的IE版本切换。 首先,了解`WebBrowser`控件的工作原理。它是通过Windows API调用来实现浏览器功能的,具体来说是使用`MSHTML`接口(即IE的ActiveX控件)。当`...

    C++WebBrowser实例

    3. 在类的构造函数中,使用`CoInitialize`初始化COM环境,然后使用`CoCreateInstance`创建WebBrowser实例,并将其接口指针赋值给成员变量。 4. 调用`IWebBrowser2::Navigate`方法加载URL。例如,`pWebBrowser->...

    WebBrowser组件和MSHTML 在Delphi中的使用.doc

    在 Delphi 中,WebBrowser 组件和 MSHTML 是用于在应用程序中嵌入和操作 HTML 内容的关键工具。WebBrowser 组件是一个 ActiveX 控件,它允许 Delphi 程序与 Internet Explorer 引擎进行交互,从而显示网页、执行 ...

    利用WebBrowser获得页面部分数据

    ### 利用WebBrowser获得页面部分数据 #### 一、WebBrowser 控件介绍 在探讨如何利用WebBrowser控件获取页面部分数据之前,首先需要理解WebBrowser控件的基础概念及其重要性。 - **WebBrowser控件**:这是一个由...

    IE WebBrowser编程技巧

    在webbrowser中查找字符串并定位 把图片拷贝进剪贴板 IHTMLDocument的ExecCommand 处理事件的Internet Explorer中的DOM 禁止WebBrowser右键弹出菜单 禁止TWebBrowser图像显示 访问HTML的DOM不使用WebBrowser 如何...

    WebBrowser控件的使用

    在C#或VB.NET中,你可以像添加其他控件一样将`WebBrowser`添加到表单上,并通过代码设置其属性和事件。例如,`Navigate()`方法用于加载指定的URL,`DocumentText`属性可以用来设置或获取网页的HTML内容,`Document`...

    如何对webbrowser和IE编程

    - **使用方法**:当操作WebBrowser控件时,使用的对象是WebBrowser对象,在VC++中可以通过`CLSID_WebBrowser`的接口类来访问。而当需要自动化IE时,则需创建名为`InternetExplorer`的对象,在VC++中使用`CLSID_...

    mshtml.dll

    mshtml.dll 功能很强大 配合webbrowser 使用很好用的底层控件

    c#通过纯代码创建桌面快捷方式、创建程序菜单项、将网页添加到收藏夹

    在C#编程中,创建桌面快捷方式、程序菜单项以及将网页添加到收藏夹是常见的功能需求,尤其在开发桌面应用程序时。以下是对这些知识点的详细说明: **创建桌面快捷方式** 创建桌面快捷方式通常涉及到Windows壳层接口...

    用VC获得webbrowser中的网页代码(包括dhtml及ajax变动后的)

    本篇将详细解释如何在VC++中实现这一功能。 首先,`WebBrowser`控件是Microsoft ActiveX技术的一部分,它允许在桌面应用中嵌入IE浏览器的功能。通过这个控件,你可以加载网页并与其交互。`WebBrowser`控件提供了一...

    vc 使用 WebBrowser ActiveX 小demo

    综上所述,这个“vc 使用 WebBrowser ActiveX 小demo”涵盖了如何在VC++项目中集成WebBrowser控件的基本步骤,以及如何利用其功能来实现网页浏览。通过实践这个示例,开发者可以更好地理解如何在Windows应用程序中...

    c# winform 里调用javascrip的方法

    本篇将详细探讨如何在C# WinForms应用程序中通过WebBrowser控件来调用JavaScript函数,并提供一个实际的例子。 #### WebBrowser 控件简介 WebBrowser 控件是.NET Framework提供的一个强大的组件,它允许开发者在...

    Microsoft mshtml

    6. **第三方库和工具**:开发者社区中存在许多基于mshtml的库和工具,如 Awesomium 和CEF(Chromium Embedded Framework),它们提供了更高级别的API,使得在非IE环境下利用mshtml的功能变得更加简单。 7. **性能和...

Global site tag (gtag.js) - Google Analytics