• 通过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:本人还是还是菜鸟级程序猿,如有编写错误,欢迎指正。

  • 相关阅读:
    nginx 超时配置、根据域名、端口、链接 配置不同跳转
    nginx 作用,初认识
    JVM理解
    使用开发IDE生成一个springboot工程。
    到spring官网创建第一个springboot工程
    linux 忘记root密码怎么处理。
    学习重新开始
    共同父域下的单点登录
    Bootstrap 与 Jquery validate 结合使用——多个规则实现
    Bootstrap 与 Jquery validate 结合使用——简单实现
  • 原文地址:https://www.cnblogs.com/soundcode/p/9372890.html
Copyright © 2020-2023  润新知