asp.net viewstate的模拟登陆
其实 VIEWSTATE 不用太在意,倒是 JTCookieID 需要注意,这个才应该是服务器上用来维护 Session 的那个 Cookie。
所以,你用 httpclient 的时候,不能上来就直接发到“POST /PersonLogin.aspx”上,因为那样的话,服务器上还没有建立一个有效的 Session。 你需要先用 HttpClient 发一个别的什么请求(一般是登录窗口那个画面,也可以是其它任何别的页面,反正只是为了让服务器知道有新的客户端要上来了,
立刻新创建一个 Session,然后把相应的 Cookie 发回给 HttpClient),然后你再用 HttpClient 去“POST /PersonLogin.aspx”,HttpClient
会把刚才得到的 Cookie 自动发回去。 一下内容转载自:http://www.alixixi.com/Dev/Web/ASPNET/aspnet1/2007/2007070765888.html 在写Internet应用程序的时候,常常需要处理用户登录的情况。一般来说,对于这种情况,我们是使用程序来模拟用户在Web页面上填写用户名、密码并 提交的过程。当用户在Web页面上输入了用户名、密码并提交之后,实际上是触发了一个POST请求,在这个请求中包含有用户名、密码等信息。因此,我们只 要在程序中将相关信息封装成一条POST请求,并将它发送给Web Server,基本上就能实现登录了。以MFC为例,下面的这段代码模拟了一个登录过程: CString strHeaders = _T("Content-Type: application/x-www-form-urlencoded"); // name = "sam", password = "123", action = "submit" CString strFormData = _T("name=sam&password=123&action=submit"); CInternetSession session; CHttpConnection* pConnection = session.GetHttpConnection(_T("ServerNameHere")); CHttpFile* pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, _T("FormActionHere")); BOOL result = pFile->SendRequest(strHeaders, (LPVOID)(LPCTSTR)strFormData, strFormData.GetLength()); 这个方法对于Asp页面很有效,但对于Asp.Net页面,有时却不起作用,这是为什么呢?
为了搞清出Asp.Net页面在处理登录时与Asp页面有何区别,我们需要使用Sniffer工具来跟踪Web服务器与浏览器之间的通讯。经过跟踪会发
现,Asp.Net页面在用户提交登录信息之后,仍然是使用POST请求将相关信息发送给服务器。所不同的是,处理用户名、密码等信息之外还多了一个
__VIEWSTATE。如果在上面代码中的strFormData中加上一个通过Sniffer得到的__VIEWSTATE的话,就能够成功模拟出整
个登录过程了。接下来的问题就是,我们应该如何获得这个__VIEWSTATE呢? 我们知道,Asp.Net页面有一个ViewState属性,Asp.Net用它来保存页面的状态信息,以便在页面提交失败时,能够恢复页面的状态。它是通过页面中的一个隐藏的域来定义的,如果通过浏览器来View Source的话,可以看到它是如下的一行代码 它的value值正是我们所需要的,我们只要从登录页面中解析出这个__VIEWSTATE的value,我们的问题就能够得到解决了。
仔细看一下,ViewState的值是经过编码的,先不管它,直接将它从页面中取出,和登录信息一起组成POST请求,发送给Server,结果如何
呢?失败了L。对比一下Sniffer的结果和页面中ViewState的value,我们会发现,它们之间还是有些许不同的。原来,页面源码中的
ViewState值是经过Base64编码的,而当它被发送给Web Server时,为了保证传输的正确,浏览器会将它转换成URL编码,当Web
Server接收到ViewState之后,当然会先将它从URL编码解码为Base64编码再交给Asp.Net处理。看来我们需要将
ViewState的值在进行一边URL编码处理,这样就能够成功模拟整个登录过程了J。
asp.net viewstate的模拟登陆的更多相关文章
- C# 模拟登陆
原理 我们知道,一般需要登录的网站,服务器和客户端都会有一段时间的会话保持,而这个会话保持是在登录时候建立的, 服务端和客户端都会持有这个KEY,在后续访问时,都需要核对这两个KEY是否一致. 而客户 ...
- Python 爬虫模拟登陆知乎
在之前写过一篇使用python爬虫爬取电影天堂资源的博客,重点是如何解析页面和提高爬虫的效率.由于电影天堂上的资源获取权限是所有人都一样的,所以不需要进行登录验证操作,写完那篇文章后又花了些时间研究了 ...
- Python模拟登陆新浪微博
上篇介绍了新浪微博的登陆过程,这节使用Python编写一个模拟登陆的程序.讲解与程序如下: 1.主函数(WeiboMain.py): import urllib2 import cookielib i ...
- PHP 之 CURL 模拟登陆并获取数据
1.CURL模拟登陆的流程和步骤 2.tempnam 创建一个临时文件 3.使用CURL模拟登陆到PHP100论坛 <?php $cookie_file = tempnam('./temp',' ...
- NetworkComms V3 模拟登陆
演示NetworkComms V3的用法 例子很简单 界面如下: 服务器端代码: 开始监听: //服务器开始监听客户端的请求 Connection.StartListening(ConnectionT ...
- pytho简单爬虫_模拟登陆西电流量查询_实现一键查询自己的校园网流量
闲来无事,由于校园内网络是限流量的,查询流量很是频繁,于是萌生了写一个本地脚本进行一键查询自己的剩余流量. 整个部分可以分为三个过程进行: 对登陆时http协议进行分析 利用python进行相关的模拟 ...
- python模拟登陆知乎并爬取数据
一些废话 看了一眼上一篇日志的时间 已然是5个月前的事情了 不禁感叹光阴荏苒其实就是我懒 几周前心血来潮想到用爬虫爬些东西 于是先后先重写了以前写过的求绩点代码 爬了草榴贴图,妹子图网,后来想爬婚恋网 ...
- php模拟登陆的两种实现方法分析
php模拟登陆的实现方法分析 本文实例分析了php模拟登陆的实现方法.分享给大家供大家参考.具体分析如下: php模拟登陆的实现方法,这里分别列举两种方法实现模拟登陆人人网.具体实例代码如下: 1)使 ...
- python 模拟登陆,请求包含cookie信息
需求: 1.通过GET方法,访问URL地址一,传入cookie参数 2.根据地址一返回的uuid,通过POST方法,传入cooki参数 实现思路: 1.理解http的GET和POST差别 (网上有很多 ...
随机推荐
- hdu1002大数相加
A + B Problem II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- Android(java)学习笔记165:Android的Junit调试
编写android应用的时候,往往我们需要编写一些业务逻辑实现类,但是我们可能不能明确这个业务逻辑是否可以成功实现,特别是逻辑代码体十分巨大的时候,我们不可能一行一行检查自己的代码,为了解决这样的问题 ...
- 第七篇:web之前端之ajax
前端之ajax 前端之ajax 本节内容 ajax介绍 原生js实现ajax jquery实现ajax json 跨域请求 1. ajax介绍 AJAX(Asynchronous Javascri ...
- ionic 手机端如何嵌入视频iframe
需求说明:后台提供功能,可以通过富文本编辑器[summernote]上传优酷的视频链接地址(这里需要注意:优酷视频提供多种操作方式 下面截图说明,先做个标记): 客户端是通过ionic开发的:而上传的 ...
- 20160322 javaweb 学习笔记--response 重定向
//一般方法 response.setStatus(302); response.setHeader("Location", "/20160314/index.jsp&q ...
- MVC小系列(十三)【全局异常处理与异常日志】
在MVC网站的global.asax中的Application_Start方法里,有这样一段代码 protected void Application_Start() { //它的主要作用是将全局过滤 ...
- sql server 的JDBC 配置
1.java中使用数据库需要用JDBC(java database connection)来连接和操作 下载地址:http://www.microsoft.com/en-us/download/det ...
- Power Map 更新日志
2015-05-18,五月更新 Custom Regions feature,允许用户自定义区域要素,支持kml和shape格式 New customization features,包括图例/文本框 ...
- action方法不返回
当被请求的action方法中还有资源没有释放时,请求方法是不会返回的,会一直停留在方法中,即使是最后一行,因为请求方法一旦返回,那方法中的资源,引用就没有位置住了,所以所请求的方法会一直不返回,直到方 ...
- 通过javascript库JQuery实现页面跳转功能代码
通过javascript库JQuery实现页面跳转功能代码的四段代码实例如下. 实例1: 1 2 3 4 $(function(){ var pn = $("#gotopagenum&quo ...