通过webbrowser控件获取验证码

Posted 左正

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过webbrowser控件获取验证码相关的知识,希望对你有一定的参考价值。

1、首先介绍下基本控件(拖控件大家都会,我就不一一介绍了),看下图;

技术分享图片

2、添加MShtml引用,步骤如下:

解决方案—右键“引用”—?添加引用—在.NET下找到Microsoft.mshtml组件—点击确定;

技术分享图片

 

3、编写代码,双击button1?按钮添加事件;(注意在引用类中加上using mshtml;)

目标网站:http://admin.3cjz.cn/reg.php?username=ghdhdd

技术分享图片

完整代码:

 

  1.  
    using System;
  2.  
    using System.Collections.Generic;
  3.  
    using System.ComponentModel;
  4.  
    using System.Data;
  5.  
    using System.Drawing;
  6.  
    using System.Linq;
  7.  
    using System.Text;
  8.  
    using System.Windows.Forms;
  9.  
    using mshtml;
  10.  
     
  11.  
    namespace GetCodeImg
  12.  
    {
  13.  
    public partial class Form1 : Form
  14.  
    {
  15.  
    public Form1()
  16.  
    {
  17.  
    InitializeComponent();
  18.  
    }
  19.  
     
  20.  
    private void button1_Click(object sender, EventArgs e)
  21.  
    {
  22.  
    //通过webbrowser控件打开网页
  23.  
    webBrowser1.Navigate(textBox1.Text.Trim());
  24.  
    //检查网页是否已经加载完成
  25.  
    while (webBrowser1.ReadyState < WebBrowserReadyState.Complete)
  26.  
    Application.DoEvents(); //若没加载完则继续加载
  27.  
    //根据验证码ID获取验证码元素
  28.  
    HtmlElement ImageCodeTag = webBrowser1.Document.GetElementById("vcodesrc");
  29.  
    //调用GetCodeImage方法获取验证码
  30.  
    Image FinalImage = GetCodeImage(webBrowser1, ImageCodeTag);
  31.  
    //验证码显示
  32.  
    pictureBox1.Image = FinalImage;
  33.  
    }
  34.  
    private Image GetCodeImage(WebBrowser WebControlName, HtmlElement ImgeTag)
  35.  
    {
  36.  
    //获取网页所有内容
  37.  
    HTMLDocument hdoc = (HTMLDocument)WebControlName.Document.DomDocument;
  38.  
    //获取网页body标签中的内容
  39.  
    HTMLBody hbody = (HTMLBody)hdoc.body;
  40.  
    //创建一个接口
  41.  
    IHTMLControlRange hcr = (IHTMLControlRange)hbody.createControlRange();
  42.  
    //获取图片地址
  43.  
    IHTMLControlElement hImg = (IHTMLControlElement)ImgeTag.DomElement;
  44.  
    //将图片添加到接口中
  45.  
    hcr.add(hImg);
  46.  
    //将图片复制到内存
  47.  
    hcr.execCommand("Copy", false, null);
  48.  
    //从粘贴板得到图片
  49.  
    Image CodeImage = Clipboard.GetImage();
  50.  
    //返回得到的验证码
  51.  
    return CodeImage;
  52.  
    }
  53.  
    }
  54.  
    }



 

4、验证程序

 

技术分享图片

 

PS:本人还是还是菜鸟级程序猿,如有编写错误,欢迎指正。

以上是关于通过webbrowser控件获取验证码的主要内容,如果未能解决你的问题,请参考以下文章

解决c#利用WebBrowser截取验证码图片无法获取的问题

如何在 webbrowser WPF 顶部打开用户控件作为弹出窗口

delphi做一个浏览器

使用 SSL/TLS 从 url 获取图像

C#webbrowser控件是不是能获取JS加载的数据

具有自动代理登录的 WebBrowser 控件