使用C#发送Http 请求实现模拟登陆(以博客园为例)

原文:使用C#发送Http 请求实现模拟登陆(以博客园为例)

   

    模拟登陆的原理很简单,就是发送一个Http 请求服务器获得响应,然后客户端获取到cookie即可实现模拟登陆,比如一些抢票软件的原理无非也是这样模拟客户端的cookie 然后发送请求去抢票,然后12306 本文将演示如何用C# 来实现模拟登陆的,推荐一款工具Fiddler,这是一款监听http 请求的利器。废话不多说,我就以博客园为例来实现模拟登陆。首先我登陆博客园 http://passport.cnblogs.com/login.aspx 输入用户名和密码点登陆 就会看到Fiddler 上的相关信息:

Ok,我首先需要发送一个http 请求 ,这个请求时POST的方式,然后用户名和密码就是POST的数据。代码如下:

 1 static CookieContainer GetCookie(string postString, string postUrl)
 2 {
 3
 4 CookieContainer cookie = new CookieContainer();
 5
 6 HttpWebRequest httpRequset = (HttpWebRequest)HttpWebRequest.Create(postUrl);//创建http 请求
 7 httpRequset.CookieContainer = cookie;//设置cookie
 8 httpRequset.Method = "POST";//POST 提交
 9 httpRequset.KeepAlive = true;
10 httpRequset.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko";
11 httpRequset.Accept = "text/html, application/xhtml+xml, */*";
12 httpRequset.ContentType = "application/x-www-form-urlencoded";//以上信息在监听请求的时候都有的直接复制过来
13 byte[] bytes = System.Text.Encoding.UTF8.GetBytes(postString);
14 httpRequset.ContentLength = bytes.Length;
15 Stream stream = httpRequset.GetRequestStream();
16 stream.Write(bytes, 0, bytes.Length);
17 stream.Close();//以上是POST数据的写入
18
19 HttpWebResponse httpResponse = (HttpWebResponse)httpRequset.GetResponse();//获得 服务端响应
20 return cookie;//拿到cookie
21 }

 

拿到cookie 之后我们就可以以用户的什么去用户的后台或者其他的地方:

 1 static string GetContent(CookieContainer cookie, string url)
 2 {
 3 string content;
 4 HttpWebRequest httpRequest = (HttpWebRequest)HttpWebRequest.Create(url);
 5 httpRequest.CookieContainer = cookie;
 6 httpRequest.Referer = url;
 7 httpRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko";
 8 httpRequest.Accept = "text/html, application/xhtml+xml, */*";
 9 httpRequest.ContentType = "application/x-www-form-urlencoded";
10 httpRequest.Method = "GET";
11
12 HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse();
13
14 using (Stream responsestream = httpResponse.GetResponseStream())
15 {
16
17 using (StreamReader sr = new StreamReader(responsestream, System.Text.Encoding.UTF8))
18 {
19 content = sr.ReadToEnd();
20 }
21 }
22
23 return content;
24 }

 

OK 下面是调用 我写的是一个控制台程序:

 1  1 static void Main(string[] args)
 2  2 {
 3  3 string loginstr = "{要post 的登陆数据包括用户名和密码}";
 4  4
 5  5 //从登陆的地址获取cookie
 6  6 CookieContainer cookie = GetCookie(loginstr, "http://passport.cnblogs.com/login.aspx");
 7  7
 8  8 //这个是进入后台地址
 9  9 Console.WriteLine(GetContent(cookie, "http://i.cnblogs.com/EditPosts.aspx"));
10 10
11 11 Console.Read();
12 12 }

 

可以看到我已经进入了后台了:

 

如果我是没有登陆的情况下进入这个地址是这样的:

 

下次我就写一下怎么在模拟登陆之后发送http 请求实现添加删除这些效果。

 

时间: 2024-10-21 13:17:14

使用C#发送Http 请求实现模拟登陆(以博客园为例)的相关文章

使用C#发送Http请求实现模拟登陆实例_C#教程

模拟登陆的原理很简单,就是发送一个Http 请求服务器获得响应,然后客户端获取到cookie即可实现模拟登陆,比如一些抢票软件的原理无非也是这样模拟客户端的cookie 然后发送请求去抢票,然后12306 本文将演示如何用C# 来实现模拟登陆的,推荐一款工具Fiddler,这是一款监听http 请求的利器.废话不多说,我就以博客园为例来实现模拟登陆.首先我登陆博客园 http://passport.cnblogs.com/login.aspx 输入用户名和密码点登陆 就会看到Fiddler 上的

C#模拟登陆网易博客,求大神指点,最好能给出源代码~大神来帮帮忙

问题描述 想做一个C#模拟登陆网易博客,目前已经抓取到了网易博客的的Cookie,但是下一步我不知道该请求到哪个页面,需要的参数是什么.希望以前做过模拟登陆的大神给指点.如果做过模拟网易博客登录的大神,能给源代码最好了.小弟在线等,谢谢!或者发我网易邮箱:FHM_0831@163.com 解决方案 解决方案二:请求哪个你直接用个抓包工具就知道了,参数也能在抓包工具看到解决方案三:直接看提交包不就行了自己构造参数上去解决方案四:有链接,但是我不知道是不是,而且链接是next.jsp后面跟的是登录名

登陆-求助!!delphi模拟登录博客园并发帖!!

问题描述 求助!!delphi模拟登录博客园并发帖!! 百度未果 请兄弟们给出解决思路 最好再给出代码或者帮看下下面的代码问题处在哪里怎么扩充!!谢谢 procedure TForm1.Button1Click(Sender: TObject); var postList:TStrings; Response:TStringStream; url:string; myIH:TIdHTTP; IdSSLIOHandlerSocketOpenSSL1:TIdSSLIOHandlerSocketOpe

博客群发(2)--实现登陆

模板方法 python也是一种面向对象的语言,所以在实现群发的时候,会登陆不同的网站,但是登陆的方法什么的不尽相同,所以这里想到的是模板方法. 模板方法模式: 应用特性:重复做相同逻辑的事情,但是具体细节不同的场景 结构特性:相同逻辑抽取至父类,具体细节留置子类.可以说是对逻辑的抽象 看一下代码: #!/usr/bin/env python #encoding: utf-8 class template: def __init__(self): pass def logic(self): pri

python模拟登陆获取和处理发送post request和head数据

今天这篇文章说下如何获取和处理发送post request和head数据. 工具: firefox浏览器及firebug插件. (其他的如httpfox,live http head   ,fiddler,httpwatch  也行) 1.查看分析登陆页面html代码,看是否有iframe 我们写一个自动登录的脚本的时候,先要分析出需要post request和head数据,以及post的网址等.这里,我们先打开firebug开始监控,然后打开网站的登陆页面:/IndexPage/Index.a

请求-有赞模拟登陆返回500错误

问题描述 有赞模拟登陆返回500错误 1C 我用浏览器打开时正常的,但是在程序中为什么就返回500错误了呢?具体代码如下:地址:http://koudaitong.com/v2/account/user/login /// <summary>/// 获取验证码private void 登陆_Load(object sender EventArgs e){txtUserName.Text=""18076549077"";txtPwd.Text="

邮箱登陆发短信-如何用java代码,模拟登陆139邮箱,并用139邮箱自带的短信功能给一个移动用户发送短信

问题描述 如何用java代码,模拟登陆139邮箱,并用139邮箱自带的短信功能给一个移动用户发送短信 RT 要是能说到要用到哪些知识点,以及直接提供相应的代码那就更好了

c#-用C#语言怎么模拟发送post请求数据包并最终下载文件

问题描述 用C#语言怎么模拟发送post请求数据包并最终下载文件 通过一个在线工具模拟发送post请求数据包发送的内容和返回的数据见下面两张截图,问题来了,怎么根据返回的数据下载这个文件.用C#语言怎么写啊 解决方案 在浏览器中下载,同时用fiddler抓包,然后根据fiddler的结果照着模仿 解决方案二: 用FIDDLER确实可行,谢谢

腾讯 微博 模拟登陆-腾讯微博模拟登陆成功,但请求code失败

问题描述 腾讯微博模拟登陆成功,但请求code失败 本科毕设做的腾讯微博抓取,最近项目交接给下一届时出现问题,发现腾讯微博模拟登陆成功,但请求code失败,返回信息意思是希望完成登陆,但是在这之前已经完成了登陆,抓包分析,cookie一致不缺失,苦于不知道问题到底在哪,各位有做这块的么,望解答,或加QQ:339071451,拜谢