C# 网络编程之网页自动登录 (一).使用WebBrower控件模仿登录
C# 网络编程之网页自动登录 (一).使用WebBrower控件模仿登录
界面如上,主要是添加一个WebBrowser控件。设置的详细参数见网址:http://blog.csdn.net/eastmount/article/details/9490009
重点:点击”WebBrowser1”控件为其在属性对话框中添加一个事件DocumentCorr(在Web浏览器控件中承载的文档全部加载后发生)。
1.点击按钮button事件Click中添加简单浏览器功能;
2.再在DocumentCorr事件中查找用户名、密码、登录按钮三个html元素——HtmlElement,并赋值设置登录状态实现自动登录。
我看了很多博客代码,但自己实现起来还是非常困难的,所以我填出了所有的代码并详细的注释及实现过程,希望能帮助初学者,高手亦可巩固知识,对否!同时最重要的是思想。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;//新添加命名空间
using System.Net;
using System.IO;namespace HttpWeb
{public partial class Form1 : Form{public Form1(){InitializeComponent();}//双击"浏览"添加Click事件private void button1_Click(object sender, EventArgs e){//获取输入的URLstring url = textBox1.Text;//string url = "http://mail.163.com/";//创建http链接//HttpWebRequest对象实例:该类用于获取和操作HTTP请求 var可改成HttpWebRequestvar request = (HttpWebRequest)WebRequest.Create(url); //创建WebRequest对象//HttpWebResponse对象实例:该类用于获取和操作HTTP应答 var可改成HttpWebResponsevar response = (HttpWebResponse)request.GetResponse(); //GetResponse:获取答复//构造数据流对象实例Stream stream = response.GetResponseStream(); //GetResponseStream:获取应答流StreamReader sr = new StreamReader(stream); //从字节流中读取字符//从流当前位置读取到末尾并显示在WebBrower控件中string content = sr.ReadToEnd();webBrowser1.DocumentText = content;}//web浏览器控件中承载的文档全部加载后发生private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e){//定义html元素 通过Name获取控件值//HtmlElement tbUserid = webBrowser1.Document.All["userName"];//HtmlElement tbPasswd = webBrowser1.Document.All["password"];//定义html元素 通过ID获取控件值 (用户名 密码 登录按钮)HtmlElement tbUserid = webBrowser1.Document.GetElementById("idInput");HtmlElement tbPasswd = webBrowser1.Document.GetElementById("pwdInput");HtmlElement btnSubmit = webBrowser1.Document.GetElementById("loginBtn");//三个元素其一为空返回 加载后才执行赋值 否则会出现为null值的崩溃错误if (tbUserid == null || tbPasswd == null || btnSubmit == null){return;}//设置元素value属性值 (用户名 密码值)tbUserid.SetAttribute("value", "Eastmount");tbPasswd.SetAttribute("value", "Eastmount");//执行元素的方法:如click submitbtnSubmit.InvokeMember("click"); }}
}
其实使用WebBrowser控件实现网页自动登录的核心代码就是:
//获取网页元素 (用户名 密码 登录按钮)
HtmlElement tbUserid = webBrowser1.Document.GetElementById("idInput");
HtmlElement tbPasswd = webBrowser1.Document.GetElementById("pwdInput");
HtmlElement btnSubmit = webBrowser1.Document.GetElementById("loginBtn");//用相应方法为元素赋值
tbUserid.SetAttribute("value", "Eastmount");
tbPasswd.SetAttribute("value", "Eastmount");
btnSubmit.InvokeMember("click");
上面源代码中是自动登录163邮箱的实现:http://mail.163.com运行程序,输入网址即可实现自动登录163邮箱。如图:
其中通过查找该登录页面发现用户名Id为“idInput”,密码Id为“pwdInput”,登录按钮ID为“loginBtn”。如下图id和name:
<buttonid="loginBtn"class="btnbtn-login formSubmit"tabindex="6"type=“submit”>登 录</button>
1.C#网页自动填表自动登录—sonicrang(最简单的代码阐述了使用WebBrowser实现自动登录)
http://blog.csdn.net/sonicrang/article/details/5878611
2.C#中的WebBrowser控件的使用—方培工作室(详细讲述了WebBrowser控件中的使用方法)
http://www.cnblogs.com/txw1958/archive/2012/09/24/CSharp-WebBrowser.html
3.C#实现POST提交方式—陈立国(最经典文章之一,详细讲述了三种方法:WebBrowser、WebClient、HttpWebRequest但不知道最初是那位大师人物写的)
http://www.cnblogs.com/cgli/archive/2011/04/09/2010497.html
5.C#自动登录Login代码—珍惜当下(比较完整的代码讲述登录功能,仅有代码)
http://hi.baidu.com/zkbob22/item/da897035b65516362e0f8181
6.暴力破解网站密码—相信自己(一个暴力破解全代码,重点是思想,万能密码尝试,但我没有实现成功)
http://blog.sina.com.cn/s/blog_4de05339010109g7.html
http://bbs.csdn.net/topics/330239749?page=1
http://wenku.baidu.com/view/bc46ff9d6bec0975f465e208.html
9.C# WinForm WebBrowser模拟登录打卡—Kelvin峰(过于高深,有待以后研究)
http://blog.csdn.net/llftc/article/details/7036746
C# 网络编程之网页自动登录 (一).使用WebBrower控件模仿登录相关推荐
- Web网络编程第一次试验:ASP.NET4.5标准控件和窗体验证
Web网络编程第一次试验:ASP.NET4.5标准控件和窗体验证 前言 一.实验目的 二.实验环境 三.实验内容 四.代码及截图 五.实验总结 前言 为了帮助同学们完成痛苦的实验课程设计,本作者将其作 ...
- 基于MFC串口编程和曲线图绘制(visual studio2008,Teechart绘图控件)的程序总结
前言 今年刚进入公司按经理的要求为底盘测控机写了一个小小的console.这也是第一次教认真的完成整个程序的编写.程序不大,所用技术比较基础也不前卫,属于初级程序员的练手程序(知识的整理和搬运).虽然 ...
- 以编程方式使用 Microsoft Office Visio 2003 ActiveX 控件(经经经经经典)
以编程方式使用 Microsoft Office Visio 2003 ActiveX 控件 发布日期 : 12/2/2004| 更新日期 : 12/2/2004 Mark Bukovec Empir ...
- 鸡啄米之VS2010/MFC编程入门之二十四(常用控件:列表框控件ListBox)
目录 一.目的: 1.点击列表框某个变量后,编辑框就显示出来这个变量名字 一.参考: 1.VS2010/MFC编程入门之二十四(常用控件:列表框控件ListBox) ①总结:good:亲测有效,适合多 ...
- 易语言编程: 让读屏软件可获取标签控件的文本
易语言编程: 让读屏软件可获取标签控件的文本 将易语言的非标准标签控件修改为标准的标签控件,使屏幕阅读器可获取到标签的内容 在使用易语言创建窗口控件时,我们会发现:易语言的编辑框.组合框.列表框等控件 ...
- C# 网络编程之网页简单下载实现
这是根据<C#网络编程实例教程>中学到的知识实现的一个C#网页简单下载器,其中涉及到的知识主要是HTTP协议编程中相关类:HttpWebRequest类.HttpWebResponse类. ...
- iOS项目开发实战——iOS网络编程获取网页Html源代码
如今我们身处互联网的时代,任何一个软件或是App,都会或多或少与网络打交道,并不断发生数据交互.一个没有涉及网络编程的应用会显得比较low,这里我们将会开始使用Swift开发iOS应用,并且主要来实现 ...
- 我教女朋友学编程Html系列(6)—Html常用表单控件
做过网页的人都知道,html表单控件十分重要.基本上我们注册会员.登录用户,都需要填写用户名.密码,那些框框都是表单控件. 本来今天就想写一些常用的html表单控件,于是开始搜资料,找到了一个网页,作 ...
- VS2010/MFC编程入门之二十九(常用控件:列表视图控件List Control 下)
上一节是关于列表视图控件List Control的上半部分,简单介绍了列表视图控件,其通知消息的处理和有关结构体的定义.本节继续讲解下半部分,包括列表视图控件的创建.CListCtrl类的主要成员函数 ...
最新文章
- linux永久改变字符集,Linux 下mysql永久更改字符集
- Python enumerate函数
- csv注入java怎么解决_CSV Injection(CSV注入)
- 利用反射机制创建新类的两种方式及比较
- WIFI无线传输模块使用 ESP8266芯片方案接入云平台的方法
- TX2在Turtlebot测试kobuki
- luoguP3507 [POI2010]GRA 性质 + 动态规划
- 1.5 案例:多项式曲线拟合的比较
- UML建模之活动图介绍(Activity Diagram)
- OSPF在企业网络中的应用
- fastgame文档
- CDR插件开发之Addon插件001 - 从零开始安装VS2022详细步骤
- Ubuntu登陆不进去输入密码后黑屏又返回登陆界面
- 天文观测理论——已知像素大小、焦距,求像素分辨率
- 从零开始搭建环境安装FCOS(Ubuntu18.04)
- ps4帧数测试软件,《地平线:零之黎明》PS4/Pro帧数测试 优化极佳
- 《Artificial Intelligence in Finance》(AI金融, by Yves Hilpisch)台湾谢承熹Chenghsi Hsieh老师中文讲解
- 2005-陶陶摘苹果
- Mysql数据库教程(第一章 表的操作)
- 日语、韩语、法语输入一些技巧
热门文章
- Opencv-python 求原坐标点透视变换后对应坐标点
- 矩阵分析与应用(一)——矩阵基础知识、广义逆
- 8月近况——少吃饭,多想事(总结)
- PotPlayer:当前音频无法播放。DirectX 驱动程序未正确安装或音像设备被禁用的解决办法
- ZOJ4062 Plants vs. Zombies 二分
- 通配符选择器/后代选择器(包含选择器)/选择器分组
- C语言条件表达式(三目运算符)结合性问题
- 电脑ping不通Ubuntu
- 小陈java学习笔记0817
- 华北电力大学控制与计算机工程学院老师,华北电力大学控制与计算机工程学院导师教师师资介绍简介-杨静...