C# 模拟网站登陆

实现此功能首先需要借助一些抓包工具,对相应的网站登陆过程进行分析,此过程根据网站的不同,可能复杂,也可能很简单。常用的抓包工具FF下FireBug和IE下的HttpWatch.这两个工具很强大,以此工具获取的信息足以应对C#模拟网站登陆过程所需要的信息。抓包工具的使用教程网上很多,例如FireBug教程,在此就不做过多介绍。当然网上C# C/S结构模拟网站登陆信息也很多,但基本都是代码片段或是逻辑很复杂。所以把我实践的过程写下来与大家分享。此实验过程是基于模拟登陆校内而完成的。

首先使用FireBug 获取登陆相关信息,在点登陆之前先把FireBug中信息清除,这样获取的信息就从点击登陆按钮后开始,以便后续分析,如下图:

每次请求与下一次请求之间的联系就是每次请求后返回的Cookies数据,前一次的返回Cookie数据需要同下一次请求一同发送到服务器,这也是C#模拟网站登陆的关键。详见以下逻辑代码:

以下是测试代码,POST请求一次,GET请求三次。最后得到登陆后加载的首页的HTML代码。当然,登陆后就可以依据当前的Cookie数据获取网站的其他子页面HTML。以下是登陆后加载的首页的HTML代码的逻辑。

第一次POST数据的URL为登陆提交数据的页面,此地址不一定能在抓包工具中得到,这就需要分析,方法很多(网上很多),例如查看登陆页面源码等。

POST提交的数据可以在抓包工具中得到,以下是FireBug中得到的信息:

把代码Copy执行以下,自动登录成功了吧!!

好了,就这些了,此过程中就是每次请求都延续应用前一次请求返回的Cookie数据,只要这步原理理解,此过程也就没有什么难度了。

时间: 2024-10-31 21:57:40

C# 模拟网站登陆的相关文章

python urllib2 模拟网站登陆

1. 可用浏览器先登陆,然后查看网页源码,分析登录表单 2. 使用python urllib2,cookielib 模拟网页登录 import urllib,urllib2,cookielib #urllib2 支持 http,https def loginWeb(site,user,pwd): ''' 模拟网页登陆,登陆网址,用户名,密码不能为空 登录post form 表单逻辑需要对应登录网站,可以使用火狐浏览器firebug插件查看登陆请求的网址和参数 ''' formValue={'ac

C# 模拟网站登陆并截图

1.在窗体上加一个按钮,为按钮添加点击事件 private void button1_Click(object sender, EventArgs e) { Bitmap m_Bitmap = WebSiteThumbnail.GetWebSiteThumbnail("http://192.168.0.106:1452/", 600, 300, 600, 600); //保存图片 JPG.GIF.PNG等均可 m_Bitmap.Save("F:/Image/" +

cookielib和urllib2模块相结合模拟网站登录

1.cookielib模块 cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源.例如可以利用 本模块的CookieJar类的对象来捕获cookie并在后续连接请求时重新发送.coiokielib模块用到的对象主要有下面几 个:CookieJar.FileCookieJar.MozillaCookieJar.LWPCookieJar.其中他们的关系如下: 2.urllib2模块 说到urllib2模块最强大的部分绝对是它的o

nodejs基础运用——模拟注册登陆

正如维基百科 所说:"Node.js 是谷歌 V8 引擎.libuv平台抽象层 以及主体使用 Javscript 编写的核心库三者集合的一个包装外壳." 除此之外,值得注意的是,Node.js 的作者瑞恩·达尔 (Ryan Dahl) 的目标是创建具有实时推送能力的网站.在 Node.js 中,他给了开发者一个使用事件驱动来实现异步开发的优秀解决方案. 今天就来分享一个基础的nodejs运用----------模拟注册登陆.现在都是用的第三方,几乎没人用原生的来自己写.不过如果你是初学

python小程序(模拟用户登陆系统)

模拟登陆1.用户输入账号密码进行登陆2.用户信息存在文件内3.用户密码输错三次后锁定用户 知识点:strip().split().while.for循环混用以及布尔值的使用 strip()  方法用于移除字符串头尾指定的字符(默认为空格) 实例1: >> str = "0000000this is string example....wow!!!0000000"; >> print str.strip( '0' ); this is string example

tomcat URL简写案例:模拟网站www.baidu.com的访问

tomcat URL简写案例:模拟网站 * 实际URL:http://www.baidu.com:8080/myweb/1.html * 实际位置:F:\mywebapps\myweb\1.html * 最终访问URL:http://www.baidu.com * 步骤 * 1 可用:http://www.baidu.com:8080/myweb/1.html * 虚拟主机 <Host name="www.baidu.com" appBase="F:\mywebapps

Java模拟新浪微博登陆抓取数据

前言:  兄弟们来了来了,最近有人在问如何模拟新浪微博登陆抓取数据,我听后默默地抽了一口老烟,暗暗的对自己说,老汉是时候该你出场了,所以今天有时间就整理整理,浅谈一二. 首先:  要想登陆新浪微博需要预登陆,即是将账号base64加密,密码rsa加密以及请求http://login.sina.com.cn/sso/prelogin.php链接获取一些登陆需要参数,返回的接送字符串如: {"retcode":0,"servertime":1487292003,&quo

C# 使用代码模拟域登陆来操作文件

[DllImport("advapi32.DLL", SetLastError = true)] public static extern int LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken); IntPtr admin_token = default(IntPtr); Win

模拟客户端登陆(基于TCP的Socket编程)

1.客户端  package com.ljb.app.socket; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; import java.n