zoukankan      html  css  js  c++  java
  • 【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、验证程序

  • 相关阅读:
    编程小技巧之 Linux 文本处理命令(二)
    基金投资经验总结
    基金投资需要掌握的几个基本概念
    动目标指示MTI和动目标检测MTD
    雷达信号处理基础-快时间维和慢时间维
    信号处理第二篇——接着谈正弦信号
    毫米波雷达第一篇——测距篇
    信号处理第一篇——浅谈正弦信号
    python学习总结篇(3)——类
    python中的if __name__ == '__main__' 如何正确理解?
  • 原文地址:https://www.cnblogs.com/damowang/p/12162134.html
Copyright © 2011-2022 走看看