HttpWebRequest模拟c#网站登录
| 用户名 | |
| 密码 | |
模拟登录asp.net开发的网站
关心两个问题:通过控件属性获取数据、响应事件。
上面是一个普通的asp.net表单。输入用户名、密码后,点击按钮将会进入各自绑定的后台函数,而不仅仅是将form POST。如果点击登录进入登录验证,如果点击是更改密码进入更改密码处理。
获取POST数据及格及格式可以通过浏览器或者http协议工具,如fiddler分析。
上图所示的登录界面中,需要提交的表单数据是:loginname=loginname&password=password。如只提交这两数据,无法通过asp:TextBox.value获取数据,也无法进入按钮响应的事件。
响应事件
如何触发事件?一个页面可能有多个post按钮,如修改、删除,按钮,页面提交后,会进入对应的事件中。通过什么机制触发事件一直没有找到满意的答案。
之前在博问中寻求过帮助,也许是没有彻底理解热心园友的回复,问题一直没有解决,但依然感谢走过、路过的朋友。
博问链接:1、c#模拟网页登陆 2、 HttpWebRequest 模拟登录
直到在博客园看到了这篇博文才实现了c#网站的登录。
对于asp.net开发的网站,需要将__VIEWSTATE和__EVENTVALIDATION作为数据写入。
e.g. loginname=loginname&password=password&__VIEWSTATE=&__EVENTVALIDATION=.
数据需要UrlEncode编码处理。
数据POST详解
1、表单数据,参数名称获取在上两篇博问中给出了详细的解答。
2、固定的__VIEWSTATE和__EVENTVALIDATION。
这两个数据是ASP.NET特有的,可以从源码中取得。我比较倾向使用正则表达式实现。
获取__VIEWSTATE
Regex reg = new Regex("id=\"__VIEWSTATE\" value=\"((?<v>.*?)\")");
获取__EVENTVALIDATION
Regex("id=\"__EVENTVALIDATION\" value=\"((?<v>.*?)\")");
3、触发事件
传递数据时把控件的name加上去。对于image需要有两个参数:btn.x和btn.y。
name=admin&password=123&__VIEWSTATE=&__EVENTVALIDATION=&login=.
login是提交按钮的name。
HttpWebRequest模拟c#网站登录的更多相关文章
- 转:使用C#的HttpWebRequest模拟登陆网站
这篇文章是有关模拟登录网站方面的. 实现步骤: 启用一个web会话 发送模拟数据请求(POST或者GET) 获取会话的CooKie 并根据该CooKie继续访问登录后的页面,获取后续访问的页面数据. ...
- 使用C#的HttpWebRequest模拟登陆网站
很久没有写新的东西了,今天在工作中遇到的一个问题,感觉很有用,有种想记下来的冲动. 这篇文章是有关模拟登录网站方面的. 实现步骤: 启用一个web会话 发送模拟数据请求(POST或者GET) 获取会话 ...
- 利用Jsoup模拟跳过登录爬虫获取数据
今天在学习爬虫的时候想着学习一下利用jsoup模拟登录.下面分为有验证码和无验证码的情况进行讨论. ---------------------------无验证码的情况---------------- ...
- c# winform实现网页上用户自动登陆,模拟网站登录
using System; using System.Collections.Generic; using System.Text; using System.Net; using System.IO ...
- cookielib和urllib2模块相结合模拟网站登录
1.cookielib模块 cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源.例如可以利用 本模块的CookieJar类的对 ...
- Java模拟网站登录02【转载】
如何用Java代码模拟一些如百度.QQ之类的网站登录?有两个方式,一是发送模拟请求,二是模拟浏览器操作,而这两种方式恰好在Java有开源实现,在这里介绍一个工具包,它是家喻户晓的HttpClient. ...
- c# 使用 HttpWebRequest模拟登陆
c# 使用 HttpWebRequest模拟登陆(附带验证码) 分类: C# .net2010-06-04 00:50 35647人阅读 评论(43) 收藏 举报 c#exceptionstreams ...
- 【教程】手把手教你如何利用工具(IE9的F12)去分析模拟登陆网站(百度首页)的内部逻辑过程
[前提] 想要实现使用某种语言,比如Python,C#等,去实现模拟登陆网站的话,首先要做的事情就是使用某种工具,去分析本身使用浏览器去登陆网页的时候,其内部的执行过程,内部逻辑. 此登陆的逻辑过程, ...
- 利用phantomjs模拟QQ自动登录
之前为了抓取兴趣部落里的数据,研究了下QQ自动登录. 当时搜索了一番,发现大部分方法都已经失效了,于是准备自己开搞. 第一个想到的就是参考网上已有方案的做法,梳理登陆js的实现,通过其他语言重写.考虑 ...
随机推荐
- 如何提高SQL的执行效率
一.因情制宜,建立“适当”的索引 建立“适当”的索引是实现查询优化的首要前提. 索引(index)是除表之外另一重要的.用户定义的存储在物理介质上的数据结构.当根据索引码的值搜索数据时,索引提供了对数 ...
- uva 12589 - Learning Vector
思路: 容易知道加向量的顺序是按向量斜率的大小顺序来的.由于数据不是很大,可以用背包解决!! dp[i][j]:加入最大面积为i时,加入了j个向量. 代码如下: #include<iostrea ...
- http://www.cnblogs.com/leiOOlei/p/5075402.html
http://www.cnblogs.com/leiOOlei/p/5075402.html
- 李洪强漫谈iOS开发[C语言-006]-程序的描述方式
- PHP 反射机制Reflection
简介 PHP Reflection API是PHP5才有的新功能,它是用来导出或提取出关于类.方法.属性.参数等的详细信息,包括注释. class Reflection { } interface R ...
- iOS:核心动画的详解介绍:CAAnimation(抽象类)及其子类
核心动画的详解介绍:CAAnimation(抽象类) 1.核心动画基本概念 Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍! 使用它 ...
- Linux下安装mysql-5.6.4 的图文教程
在开始安装前,先说明一下mysql-5.6.4与较低的版本在安装上的区别,从mysql-5.5起,mysql源码安装开始使用cmake了,因此当我们配置安装目录./configure --perfix ...
- Data Base MySQL的常用命令
MySQL的常用命令 一.下载地址: http://www.mysql.com 二.安装注意: root默认密码:123456 三.常用命令: 1.创建用户并授权: 创建用户,只能本地访问:cr ...
- C# 设计基础(一)
(一) C#项目的组成结构 项目结构 .config ---配置文件(存放配置参数文件) .csproj ---项目文件(管理文件项) .sln ---解决方案文件(管理项目) .cs - ...
- POJ2282:The Counting Problem(数位DP)
Description Given two integers a and b, we write the numbers between a and b, inclusive, in a list. ...