• 【C#】通过webbrowser控件获取验证码


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

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

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

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

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

    完整代码:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using mshtml;
     
    namespace GetCodeImg
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                //通过webbrowser控件打开网页
                webBrowser1.Navigate(textBox1.Text.Trim());
                //检查网页是否已经加载完成
                while (webBrowser1.ReadyState < WebBrowserReadyState.Complete)
                Application.DoEvents();          //若没加载完则继续加载
                //根据验证码ID获取验证码元素
                HtmlElement ImageCodeTag = webBrowser1.Document.GetElementById("vcodesrc");
                //调用GetCodeImage方法获取验证码
                Image FinalImage = GetCodeImage(webBrowser1, ImageCodeTag); 
                //验证码显示
                pictureBox1.Image = FinalImage;
            }
            private Image GetCodeImage(WebBrowser WebControlName, HtmlElement ImgeTag)
            {
                //获取网页所有内容
                HTMLDocument hdoc = (HTMLDocument)WebControlName.Document.DomDocument;
                //获取网页body标签中的内容
                HTMLBody hbody = (HTMLBody)hdoc.body;
                //创建一个接口
                IHTMLControlRange hcr = (IHTMLControlRange)hbody.createControlRange();
                //获取图片地址
                IHTMLControlElement hImg = (IHTMLControlElement)ImgeTag.DomElement;
                //将图片添加到接口中
                hcr.add(hImg);
                //将图片复制到内存
                hcr.execCommand("Copy", false, null);
                //从粘贴板得到图片
                Image CodeImage = Clipboard.GetImage();
                //返回得到的验证码
                return CodeImage;
            }
        }
    }

    4、验证程序

  • 相关阅读:
    一些常用的库[转载]
    《三国演义》很给力演绎60条职场真理
    保证你现在和未来不失业的10种关键技【转载】
    百度面试题
    百度的一到算法i题
    FindMaxDeep
    csinglelink
    FindLongArray
    byte转hex,hex转byte
    获取异常信息
  • 原文地址:https://www.cnblogs.com/damowang/p/12162134.html
Copyright © 2020-2023  润新知