如何编程登录有验证码的网站

看到论坛有人在问如何编程登录有验证码的网站题,于是专门研究了一下。文章后有源码下载地址。

注:验证码还是要人来辨认。

有几种处理办法,一是使用WebBrowser控件,一是使用WebClient或者WebRequest控件来处理。

本文中使用 WebBrowser 控件。

(以CSDN登录为例)

如何编程登录有验证码的网站

这里有两个难点:

1,如何获得验证码的图片。

2,如果模拟表单提交。

先做一些准备工作,即通过察看登录页的源码码,查出用户名等控件的name.

验证码的控件的name是MzImgExpPwd

提交按钮是一个图片,name是 ctl00$CPH_Content$Image_Login

添加引用 Microsft.mshtml

获得验证码的关键代码

HTMLDocument html = (HTMLDocument)this.webBrowser1.Document.DomDocument; HtmlElement elm = (HtmlElement)webBrowser1.Document.All["MzImgExpPwd"]; IHTMLControlElement img = (IHTMLControlElement)elm.DomElement; IHTMLControlRange range = (IHTMLControlRange)((HTMLBody)html.body).createControlRange(); range.add(img); range.execCommand("Copy", false, null); img = null; range = null; html = null; if(Clipboard.ContainsImage()) { this.pictureBox1.Image = Clipboard.GetImage(); } else { MessageBox.Show("执行不成功"); } Clipboard.Clear();

提交的关键代码

webBrowser1.Document.All["ctl00$CPH_Content$tb_LoginNameOrLoginEmail"].InnerText = textBox1.Text; webBrowser1.Document.All["ctl00_CPH_Content_tb_Password"].InnerText = textBox2.Text; webBrowser1.Document.All["ctl00$CPH_Content$tb_ExPwd"].InnerText = textBox3.Text; webBrowser1.Document.All["ctl00$CPH_Content$Image_Login"].InvokeMember("click");

项目源码在 http://dengxm.download.csdn.net/