`

网页模拟登陆

阅读更多

string indata="num1=yemian";
string outdata="";
string url ="http://localhost/sdf/bussiness.aspx";
CookieContainer myCookieContainer=new CookieContainer();
//新建一个CookieContainer来存放Cookie集合
HttpWebRequest myHttpWebRequest=(HttpWebRequest)WebRequest.Create(url);
//新建一个HttpWebRequest
myHttpWebRequest.ContentType="application/x-www-form-urlencoded";
myHttpWebRequest.ContentLength=indata.Length;
myHttpWebRequest.Method="POST";

myHttpWebRequest.CookieContainer=myCookieContainer;
//设置HttpWebRequest的CookieContainer为刚才建立的那个myCookieContainer
Stream myRequestStream=myHttpWebRequest.GetRequestStream();
StreamWriter myStreamWriter=new StreamWriter(myRequestStream,Encoding.GetEncoding("gb2312"));
myStreamWriter.Write(indata);
//把数据写入HttpWebRequest的Request流

myStreamWriter.Close();
myRequestStream.Close();
//关闭打开对象
HttpWebResponse myHttpWebResponse=(HttpWebResponse)myHttpWebRequest.GetResponse();
//新建一个HttpWebResponse
myHttpWebResponse.Cookies=myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
//获取一个包含url的Cookie集合的CookieCollection
Stream myResponseStream=myHttpWebResponse.GetResponseStream();
StreamReader myStreamReader=new StreamReader(myResponseStream,Encoding.GetEncoding("gb2312"));
outdata=myStreamReader.ReadToEnd();
//把数据从HttpWebResponse的Response流中读出
myStreamReader.Close();
myResponseStream.Close();
Response.Write(outdata);
//显示"登录"

//拿到了Cookie,再进行请求就能直接读取到登录后的内容了
myHttpWebRequest=(HttpWebRequest)WebRequest.Create(url);
myHttpWebRequest.CookieContainer=myCookieContainer; //*
//刚才那个CookieContainer已经存有了Cookie,把它附加到HttpWebRequest中则能直接通过验证
myHttpWebResponse=(HttpWebResponse)myHttpWebRequest.GetResponse();
myHttpWebResponse.Cookies=myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
myResponseStream=myHttpWebResponse.GetResponseStream();
myStreamReader=new StreamReader(myResponseStream,Encoding.GetEncoding("gb2312"));
outdata=myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
Response.Write("<br>"+outdata);

try
{
// 要提交表单的URI字符串。
string uriString = "http://localhost:1165/WebTest/MyLogin.aspx";

///////////////////////////////////////
// 打开页面
///////////////////////////////////////
WebClient webClient = new WebClient();
byte[] responseData = webClient.DownloadData(uriString);
string srcString = Encoding.UTF8.GetString(responseData);

///////////////////////////////////////
// 填写页面并提交
///////////////////////////////////////
webClient = new WebClient();
webClient.Headers.Add(
"Content-Type", "application/x-www-form-urlencoded");

// 获取页面的 VeiwState
string viewStateFlag = "id=\"__VIEWSTATE\" value=\"";
int i = srcString.IndexOf(viewStateFlag) + viewStateFlag.Length;
int j = srcString.IndexOf("\"",i);
string viewState = srcString.Substring(i, j-i);

// 获取页面的 EventValidation
string eventValidationFlag = "id=\"__EVENTVALIDATION\" value=\"";
i = srcString.IndexOf(eventValidationFlag) + eventValidationFlag.Length;
j
= srcString.IndexOf("\"", i);
string eventValidation = srcString.Substring(i, j - i);

// 提交按钮的文本
string submitButton = "登录";

viewState
= System.Web.HttpUtility.UrlEncode(viewState);
eventValidation
= System.Web.HttpUtility.UrlEncode(eventValidation);
submitButton
= System.Web.HttpUtility.UrlEncode(submitButton);

// 要提交的字符串数据。格式形如:user=uesr1&password=123
string postString = "userName=1&password=1" + "&loginButton=" + submitButton + "&__VIEWSTATE=" + viewState + "&__EVENTVALIDATION=" + eventValidation;
// 将字符串转换成字节数组
byte[] postData = Encoding.ASCII.GetBytes(postString);
// 上传数据,返回页面的字节数组
responseData = webClient.UploadData(uriString, "POST", postData);
// 将返回的将字节数组转换成字符串(HTML);
// ASP.NET 返回的页面一般是Unicode,如果是简体中文应使用
// Encoding.GetEncoding("GB2312").GetString(responseData)
srcString = Encoding.UTF8.GetString(responseData);

///////////////////////////////////////
// 分析返回的页面
///////////////////////////////////////
//
}
catch (WebException we)
{
string msg = we.Message;
}

分享到:
评论

相关推荐

    C#版本微信网页版模拟登陆

    【C#版本微信网页版模拟登陆】是一种使用C#编程语言实现的微信网页登录解决方案,主要目的是通过模拟浏览器的行为,实现自动登录微信网页版并处理登录过程中涉及的COOKIE问题。在这一技术中,开发者通常会利用.NET...

    C# 模拟网页登陆

    在IT领域,模拟网页登录是一项常见的任务,尤其在自动化测试、数据抓取或者API接口测试中。本主题将深入探讨如何使用C#编程语言来实现这个功能。C#以其强大的库支持和面向对象的特性,使得模拟登录变得更加简单。...

    模拟登陆qq邮箱

    模拟登陆qq邮箱,主要是学习使用python 模拟进行网页自动化登陆

    java爬虫模拟登陆源码

    Java爬虫模拟登陆是网络爬虫技术中一个重要的环节,特别是在需要登录后才能访问的数据抓取场景中。本文将深入探讨这一主题,介绍如何使用Java编写爬虫进行模拟登录,并获取登录后的网页数据。 首先,我们需要理解...

    python 爬虫模拟登陆csdn

    总的来说,Python结合Selenium库为模拟登陆提供了强大的工具,使我们能够方便地处理那些需要用户交互的网页。然而,需要注意的是,频繁的爬虫行为可能违反网站的使用条款,甚至可能导致IP被封禁,所以在实际操作时应...

    模拟登陆网页技巧和关键步骤

    ### 模拟登陆网页技巧和关键步骤 在探讨模拟登录技术之前,我们首先需要明确一个概念:模拟登录是指通过程序的方式模拟用户的行为,实现自动化的登录过程。这种技术广泛应用于自动化测试、数据抓取等领域。根据给定...

    Jsoup+httpclient模拟登陆和抓取页面.pdf

    Jsoup+httpclient模拟登陆和抓取页面.pdf

    模拟登陆微信公众平台可发消息(2014-7-9)

    模拟登陆微信公众平台可发消息(2014-7-9) 教程:http://blog.csdn.net/wlmnzf/article/details/37607501

    httpclient4之百度模拟登陆,回复与58同城自动登陆

    本主题将深入探讨如何使用HttpClient4库进行百度和58同城的模拟登陆操作。HttpClient4是一个强大的Java库,它提供了丰富的功能来执行HTTP请求,非常适合进行网页交互。 首先,我们来了解HttpClient4的基本用法。...

    Jsoup+httpclient 模拟登陆和抓取

    Jsoup+httpclient 模拟登录和抓取知识点: 1. Jsoup库使用介绍: - Jsoup是一个Java的HTML解析器,能够直接解析HTML文档,提供类似于jQuery的操作方法。 - 主要功能包括从URL、文件或字符串中解析HTML,使用DOM或...

    C#基于HttpWebRequest实现模拟登陆

    ### C# 基于 HttpWebRequest 实现模拟登录 #### 概述 在日常使用浏览器浏览网页时,点击提交按钮实际上是向服务器发送了一个 POST 请求。本文将详细介绍如何使用 C# 语言通过 `HttpWebRequest` 类来模拟这一过程,...

    C#模拟登陆代码片段

    本文主要介绍了使用C#开发winform进行简单的模拟登陆抓取网页源码(注:本文只有重要片段代码!)

    web模拟登陆网站源码

    【描述】"web模拟登陆网站源码web模拟登陆网站源码web模拟登陆网站源码" 提及的描述虽然重复,但可以理解为强调了源码是关于模拟登录网站的技术实现。这通常涉及到解析登录页面的HTML结构,通过HTTP请求发送用户名和...

    CSDN爬虫(三)——网络爬虫模拟登陆两种策略

    我们将讨论两种常见的模拟登陆策略:基于表单提交的模拟登陆和基于Cookie的模拟登陆。 一、基于表单提交的模拟登陆 1. 分析登陆页面:首先,我们需要分析CSDN的登陆页面HTML源代码,找到用户名和密码输入框以及...

    一个模拟用户账户登陆的DEMO

    一个模拟用户账户登陆的DEMO,使用ASIHttpRequest发送HTTP请求,把用户名和密码数据传送到后端API,后端API再返回JSON格式的数据(判断用户信息是否正确)到客户端,完成基本用户账户登陆模块。 DEMO使用toss156的...

    新浪微博模拟登陆

    【标题】:“新浪微博模拟登陆” 在信息技术领域,模拟登录是一种常见的技术手段,它允许开发者通过编程方式自动登录网站并执行一些操作,例如抓取数据。本主题聚焦于使用Java实现对新浪微博的模拟登录,这对于数据...

    jsoup step to step 模拟登陆

    标题“jsoup step to step 模拟登陆”和描述“jsoup 爬虫 模拟登陆 step to step 模拟登陆”指出了本文的知识主题集中在使用jsoup库进行网站的模拟登录操作。jsoup是一个Java库,用于解析HTML文档,它提供了方便的...

    C#微信模拟登陆群发信息

    "C#微信模拟登陆群发信息"这个主题涉及到了利用编程语言C#实现对微信功能的模拟,特别是群发信息的功能,这对于微信营销来说是一种高效且实用的技术手段。 首先,我们要理解什么是模拟登录。模拟登录是指通过编程...

    HttpClient模拟登陆方正系统

    3. 数据展示与交互:将获取到的数据展示给用户,可以是网页、移动应用或桌面应用。同时,提供用户操作接口,如选课、退课等。 四、安全性和性能优化 1. 安全性:确保传输过程中数据的安全,使用HTTPS而非HTTP,处理...

    控制台程序模拟网页登陆等待加载完成自动跳转

    控制台程序如何模拟网页登陆,并且等待网页加载完成做相应处理再获取跳转页面的内容

Global site tag (gtag.js) - Google Analytics