站外登录的实现(BS版的无忧登录),不支持验证码
2010-11-12 00:09
399 查看
[b]应用场景 [/b] 客户需求是个网站信息管理中心,保存很多站点后台的用户名及密码,要让中心用户可以通过页面浏览可以直接登录到相应站点后台。
第一种 最简单的方法调用Interop.SHDocVw.dll打开个IE,提交相应数据过去就可以了。
可以参考:使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie
实现如下:
说明:tbUserName={0}&tbPassword={1}&btnLogin={2}是相应控件Name。
第一种第二种如果客户端页面JS出错,Button按钮Type不是Submit按钮等可能会出异常。
附件: IELoginHelper.rar
WebApplication2.rar
第一种 最简单的方法调用Interop.SHDocVw.dll打开个IE,提交相应数据过去就可以了。
可以参考:使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie
实现如下:
说明:tbUserName={0}&tbPassword={1}&btnLogin={2}是相应控件Name。
第二种方法 利用mshtml命名空间实现表单赋值。 可以参考c# 控制IE浏览器 具体实现如下:using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Diagnostics; using System.IO; using SHDocVw; using System.Text; using System.Net; using mshtml; namespace WebApplication2 { public partial class login2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string URI = "***"; var ie = new InternetExplorer(); object vPost, vHeaders, vFlags, vTargetFrame; vPost = null; vFlags = null; vTargetFrame = null; vHeaders = "Content-Type: application/x-www-form-urlencoded" + Convert.ToChar(10) + Convert.ToChar(13); ie.Visible = true; ie.Navigate(URI, ref vFlags, ref vTargetFrame, ref vPost, ref vHeaders); try { System.Threading.Thread.Sleep(1000); HTMLDocument doc = (HTMLDocument)ie.Document; HTMLInputElement keyword = (HTMLInputElement)doc.getElementById("tbUserName"); keyword.value = "***"; HTMLInputElement keyword1 = (HTMLInputElement)doc.getElementById("tbPassword"); keyword1.value = "***"; HTMLInputElement submit = (HTMLInputElement)doc.getElementById("btnLogin"); submit.click(); } catch (Exception) { return; } } } }
第三种方法 是自己调用底层dll 来实现打开IE,并对表单赋值。调用的类为I ELoginHelper,
客户端实现如下:
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using IELoginHelper;
namespace WebApplication2
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
IEHelper ie = new IEHelper();
ie.OpenAVisibleBlankDocument();
object p = null;
string url = @"***";
bool ret = ie.Navigate(url, ref p, ref p, ref p, ref p);
ie.SetValueById("txtusername", "***");
ie.SetValueById("txtpwd", "***");
ie.ClickButtonByName("***");
}
}
}
第一种第二种如果客户端页面JS出错,Button按钮Type不是Submit按钮等可能会出异常。
附件: IELoginHelper.rar
WebApplication2.rar
相关文章推荐
- 登录时候的图片验证码的实现
- Django之路 - 实现登录随机验证码
- selenium使用ocr识别实现网页动态验证码登录
- java实现登录页面的验证码功能
- PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
- php登录验证码的实现
- 基于Spring Security实现手机验证码登录
- SpringBoot注册登录(二):注册---验证码kaptcha的实现
- Java中SSM+Shiro系统登录验证码的实现方法
- 登录验证码实现
- 利用okhttp框架实现包含验证码的用户登录,保持session操作(上)
- 登录页面图片验证码的实现
- 利用Zend_Form_Element_Captcha 实现登录验证的验证码功能
- 单realm实现shiro手机验证码登录
- java登录验证码实现代码
- javascript实现登录验证码
- 简单实现支持用户名和邮箱登录
- 在c#的winform登录窗体中,如何实现窗口验证码
- citrix与weblogic portal开发门户网站,实现bs与cs结构的单点登录。
- spring mvc实现登录验证码