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

  • 相关阅读:
    hdu 1045 Fire Net
    hdu 1044 Collect More Jewels
    hdu 1043 Eight
    hdu 1042 N!
    hdu 1041 Computer Transformation
    hdu 1040 As Easy As A+B
    CI在ngnix的配置
    angularjs表单验证checkbox
    chrome浏览器跨域设置
    angularjs向后台传参,后台收不到数据
  • 原文地址:https://www.cnblogs.com/soundcode/p/9372890.html
Copyright © 2011-2022 走看看