C# WebBrowser控件模拟登录
2024-10-18 19:30:44
一、问题点:
1、模拟登录后,如果带有嵌套的iframe嵌套,不好读取iframe内容,可以直接指定iframe抓取网址
2、C# 清除WebBrowser控件的Session和Cookie
参考文档:http://www.360doc.com/content/14/0810/12/9200790_400769010.shtml
代码如下:
[DllImport("wininet.dll",SetLastError = true)]
private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength); private void timer_Tick(object sender, EventArgs e)
{
InternetSetOption(IntPtr.Zero,,IntPtr.Zero,);
if (this.webBrowser.Document != null)
{
this.webBrowser.Document.Cookie.Remove(, this.webBrowser.Document.Cookie.Count() - );
}
string[] cookies = System.IO.Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.Cookies));
foreach (string currentFile in cookies)
{
try
{
System.IO.File.Delete(currentFile);
}
catch { }
}
this.webBrowser.Navigate(SysInfo.WEBURL);
}
3、IHTMLDocument2 的引用 引用--COM--Microsoft HTML Object Library
二、模拟登录
模拟无验证码登录,用WebBrowser比较简单,为登录用户和密码赋值,然后模拟点击登录按钮即可
this.webBrowser.Document.GetElementById("user").SetAttribute("value", "user");
this.webBrowser.Document.GetElementById("password").SetAttribute("value", "password");
this.webBrowser.Document.InvokeScript("SetCookie");
for (int i = ; i < ; i++)//等待1秒,进行登录
{
Thread.Sleep();
}
HtmlElement btnLogin = this.webBrowser.Document.GetElementById("login");
btnLogin.InvokeMember("Click");
for (int i = ; i < ; i++)//等待0.5秒,进行跳转
{
Thread.Sleep();
}
this.webBrowser.Navigate(SysInfo.DATAURL);
三、抓取数据
指定抓取网址,载入之后,获取元素值
HtmlElement div = this.webBrowser.Document.GetElementById("style1");
参考博客:C#中的WebBrowser控件的使用
参考博客:C#中利用WebBrowser控件,获得HTML源码
最新文章
- c++调用lua环境配置
- 一个用react+nodejs实现的笔记本小应用
- Swift 3 新特性
- 如何更改magento后台地址
- 广告点击率 CTR预估中GBDT与LR融合方案
- OpenStack 多台计算节点时的问题
- javaWeb学习笔记
- 实例源码--Android软件更新模块
- unity 在安卓个IOS平台上 同一个按钮 点击后实现不同的功能
- 201521123070 《JAVA程序设计》第5周学习总结
- 单细胞参考文献 single cell
- JS如何判断一个数组是否为空、是否含有某个值
- Fantacy团队周四站立会议
- 4G模块*99#拨号上网
- 当父级绑定了DataContext之内的数据源时,子级想重新绑回DataContext
- A implementaion for 2D blue noise
- Hibernate第四天——查询方式
- 32个Chrome 针对网页设计师和开发人员扩展
- awk 截取某段时间的日志
- 转:介绍几个著名的实用的Java反编译工具,提供下载
热门文章
- Linux入门进阶第六天——登录文件、开机与模块管理
- ruby学习笔记(3)- 新手入门
- 见到Unicode、GB2312、GBK 、ANSI、Ascii、DBCS、BIG5、UTF这一堆名词你是否犯晕?请看转载的好文
- .NET core 项目部署在windows 服务器方法以及iis 访问报 500.19错误的解决办法
- luogu 2051 [AHOI2009]中国象棋
- 【Unity3d】ScriptableObject的简单用法
- Git之hotfix热修复分支
- MySQL数据库--连接
- 英特尔&#174; 实感™ 深度摄像头代码示例 – R200 摄像头数据流
- List Leaves 树的层序遍历