通过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、验证程序
PS:本人还是还是菜鸟级程序猿,如有编写错误,欢迎指正。
通过webbrowser控件获取验证码的更多相关文章
- delphi WebBrowser控件上网页验证码图片识别教程(一)
步骤一:获取网页中验证码图片的url地址 在delphi中加入一个BitBtn和一个memo以及WebBrowser控件实现网页中验证码图片的url地址的获取 程序如下:procedure TForm ...
- C# WebBrowser控件 模拟登录 抓取数据
参考博客:C#中的WebBrowser控件的使用 参考博客:C#中利用WebBrowser控件,获得HTML源码 一.问题点: 1.模拟登录后,如果带有嵌套的iframe嵌套,不好读取iframe内容 ...
- C# WebBrowser控件模拟登录
一.问题点: 1.模拟登录后,如果带有嵌套的iframe嵌套,不好读取iframe内容,可以直接指定iframe抓取网址 2.C# 清除WebBrowser控件的Session和Cookie 参考文档 ...
- C#中的WebBrowser控件的使用
0.常用方法 Navigate(string urlString):浏览urlString表示的网址 Navigate(System.Uri url):浏览url表示的网址 Navigate(st ...
- C# WebBrowser控件使用教程与技巧收集
常用的方法 Navigate(string urlString):浏览urlString表示的网址 Navigate(System.Uri url):浏览url表示的网址 Navigate(strin ...
- C# webBrowser控件使用
C# webBrowser控件使用心得 最近用到WebBrowser控件,遇到很多问题,也学习了不少新的东西.下面是我在C#下写的关于WebBrowser控件使用的代码. 1.WebBrowser常用 ...
- C#WebBrowser控件使用教程与技巧收集--苏飞收集
C#WebBrowser控件使用教程与技巧收集--苏飞收集 先来看看常用的方法 Navigate(string urlString):浏览urlString表示的网址 Navigate(System. ...
- VC++使用WebBrowser控件,强制给控件指定版本显示网页
转载:http://www.cnblogs.com/1175429393wljblog/p/5398928.html 最近为了抓取淘宝的成交数据,用C#的WebBrowser控件开发了一个简单的程序. ...
- c# webBrowser控件与js的交互
转自:http://blog.csdn.net/sd2131512/article/details/7467564 [System.Runtime.InteropServices.ComVisible ...
随机推荐
- sqlserver2008R2数据库自动备份脚本
CREATE proc [dbo].[usp_autoBackupDB] @dbname sysname=null --要备份的数据库名,不指定即为全部备份 ,)='d:\' --备份目录路径 ,)= ...
- 跳过复制错误——slave_skip_errors、slave_exec_mode
这一篇写写复制错误处理相关的另两个参数slave_skip_errors.slave_exec_mode,基本环境参考<复制错误处理——sql_slave_skip_counter> 一. ...
- CTEX windedt 打开中文tex乱码问题
% !TEX encoding = System % !TEX program = pdflatex % !TEX encoding = System% !TEX program = pdflatex ...
- 恶意代码分析实战-确认EXE什么时候编译的
场景 确认开源的后门在中毒机器上是什么版本,具有什么功能. 思路 1.查看样本PE里的编译时间 2.对照开源后门里组件的编译时间 技术点 查看NT头-TimeDateStamp struct IMAG ...
- 如何对xilinx FPGA进行bit文件加密
记录背景:最近在用Vivado评估国外一个公司所提供的ISE所建的工程时,由于我并没有安装ISE工程,因此将其提供的所有v文件导入到Vivado中,对其进行编译.添加完之后成功建立顶层文件,但奇怪的是 ...
- AudioEffect中文API
在Android2.3中增加了对音频混响的支持,这些API包含在android.media.audiofx包中. 一.概述 AudioEffect是android audio framework(an ...
- list 转换成dictionary,并统计词频
>>> from collections import Counter>>> Counter(['apple','red','apple','red','red', ...
- .NetCore Linux中安装Grafana界面及配置InfluxDB相关设置
前面的文章已经安装好了InfluxDB 安装 wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.1. ...
- openfst常用命令
记录一些遇到的常用的openfst的命令.help的信息我就不放了,可以自己看. fstaddselfloops: 加一个自旋,一般是在初始节点上.别的节点没试过..这句在生成L.fst的时候有遇到过 ...
- Yeoman generator
使用Yeoman generator来规范工程的初始化 前言 随着开发团队不断发展壮大,在人员增加的同时也带来了协作成本的增加:业务项目越来越多,类型也各不相同.常见的类型有基础组件.业务组件.基于R ...