首页 > 学院 > 开发设计 > 正文

.net 模拟登录Post提交

2019-11-15 02:29:18
字体:
来源:转载
供稿:网友

.net 模拟登录Post提交

最近在做一个项目,要求集成到第三方系统中,由于先前没有做过类似的活,所以折腾了几天,蹭着有闲情的时候记录一下。

以下实例,都是我用asp.net语言进行开发的,关于HTML元素的获取,使用的是Google浏览器。

1. 非Asp.net开发的网站

我们拿www.51cto.com来做实例,首先进入www.51cto.com,点击登录,就进入到该博客的登录页面。使用Google浏览器,按下F12,找到其表单的action值,可以发现其action值为http://home.51cto.com/index.php?s=/Index/doLogin,然后点击账号和密码的文本框,右击鼠标,审查元素,分别找到其对应的name值。

下面的代码是账号文本框的html代码,我们要的是其name属性,发现只为email,同样的方法我们可以得到密码的name属性。

<input name="email" type="text" class="login_shuru1" onfocus="this.className='login_shuru2';if (this.value=='用户名/注册邮箱') {this.value=''}" onblur="this.className='login_shuru1';if (this.value=='') {this.value='用户名/注册邮箱'}" value="用户名/注册邮箱">

我们要的基本元素都已经,现在我们就可以模拟登录51cto了,新建一个Asp.net的项目,写上几行html代码,如下

<form action="http://home.51cto.com/index.php?s=/Index/doLogin" method="post" name="_DominoForm" id="form1" >        <input name="email" id="email" type="hidden" value="whonest@sohu.com" />        <input name="passwd" id="passwd" type="hidden" value="passWord" /> </form>

然后再写两行JS代码,进行表单提交

var theForm = document.getElementById('form1');theForm.submit();

现在运行程序看一下,如果填写的用户名和密码正确的话,发现就已经模拟登录到51cto的网站了。

[多说一句:如果登录失败,和该网站的按钮有点关系,按钮是图片按钮,用审查元素的方法,找到button的name属性,在Form表单下添加下面几行代码就可以了。]

<input type="hidden" name="button" id="button" value="登陆" /><input type='hidden' name='button.x' id='button.x' value='26' /><input type='hidden' name='button.y' id='button.y' value='86' />

[PS:这三个的值,似乎不重要,可以随便填的]

2. ASP.net开发的网站

为何要将Asp.net开发的网站拿出来单独说明,这和它背后的实现技术有关系,详细不说明,直接看实例。我发现博客园正好是用Asp.net开发的,所以我们就拿博客园作为实例来讲,同上面的操作一样,我们进入登录页面找到我们想要的几个元素。

首先,我们我们写上和1类似的代码,如下

<form action="http://passport.VEVb.com/login.aspx" method="post" name="form1"    id="form1">    <input name="tbUserName" id="tbUserName" type="hidden" value="TowerKing" />    <input name="tbPassword" type="txtPWD" id="tbPassword" value="password" /></form>

运行程序,我们发现压根就没什么发现,只是进入了一个普通的登录页面而已。细心的朋友应该会发现,其源码中有几个隐藏的div层下的input,分别是__LASTFOCUS、__EVENTARGUMENT、__EVENTTARGET、__VIEWSTATE和__EVENTVALIDATION,我们在这里比较有用的就是__VIEWSTATE和__EVENTVALIDATION这两个玩意儿,所以我们得把代码做个简单的修改,修改后的代码如下所示

复制代码
<form action="http://passport.VEVb.com/login.aspx" method="post" name="form1"    id="form1">    <input name="tbUserName" id="tbUserName" type="hidden" value="TowerKing" />    <input name="tbPassword" type="txtPWD" id="tbPassword" value="password" />    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE1MzYzODg2NzZkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zd
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表