C#模拟网站登录

news/2024/5/9 11:29:08/文章来源:https://blog.csdn.net/baogreat/article/details/3276201

我们在写灌水机器人、抓资源机器人和Web网游辅助工具的时候第一步要实现的就是用户登录。那么怎么用C#来模拟一个用户的登录拉?要实现用户的登录,那么首先就必须要了解一般网站中是怎么判断用户是否登录的。

HTTP协议是一个无连接的协议,也就是说这次对话的内容和状态与上次的无关,为了实现和用户的持久交互,网站与浏览器之前在刚建立会话时将在服务器内存中建立一个Session,该Session标识了该用户(浏览器),每一个Session都有一个唯一的ID,第一次建立会话时服务器将生成的这个ID传给浏览器,浏览器在接下来的浏览中每一个发向服务器的请求中都将包含该SessionID,从而标识了自己的身份。

服务器上是使用内存来保存Session中的信息,那么浏览器又使用什么来保存服务器分配的这个SessionID了?对,是Cookie。在刚建立会话时浏览器向服务器的请求中将不包含SessionID在Cookie中,服务器就认为是一个全新的会话,从而在服务器上分配一段内存给该Session用,同时将该Session的ID在Http Header中使用Set-Cookie发送给浏览器。

现在原理已经搞清楚了,那么我们就来实现一个网站的登录嘛,这里就以盛大纵横天下的登录为例。

要写这种面向协议的网络程序,抓包工具是少不了的,我们首先是要使用抓包工具分析在普通浏览器中登录时发送和接收的内容才好进一步使用C#来模拟浏览器发包。抓包工具很多,看个人爱好吧,我主要用的是HTTP Analyzer,专门针对HTTP的,太强的抓包工具把什么协议的包都抓出来反而不利于我们分析。

1.最好能清除IE的所有Cookie记录,以免对抓包分析造成影响,然后开启抓包程序。

2.在IE中输入http://zh.sdo.com/web1.0/home/fastlogin.asp 这个快速登录地址,我们将看到已经抓到了很多请求和响应的包。

3.输入用户名和密码,点击登录,IE中正常登录,停止抓包,我们要的所有信息都被抓取好了。如图:

image

4.盛大的登录机制还是属于比较复杂的,中间涉及到好几个服务器,经过分析得知(这个就是一个比较漫长的过程了,具体网站具体分析,这个分析过程我就不写了)纵横天下的登录机制为:

1)IE请求https://cas.sdo.com:80/cas/login?service=http://zh.sdo.com/web1.0/home/index.asp页面,该页面给IE一个SessionID,比如Set-Cookie: ASP.NET_SessionId=avcbse55l5e03suqi4dx3555; path=/

2)IE同时在该HTTP的正文中得到一个ticket,这个ticket将在登录中有用,当然其他网站肯定不是这样做的,这里分析的是纵横天下的。location.href    =    http://www.sdo.com/login2.asp?lt=sd-1420e593-d2cf-4c9c-b249-07fe27932a21-2008-05-06_01%3a25%3a41.484&service=http%3a%2f%2fzh.sdo.com%2fweb1.0%2fhome%2ffastlogin.asp%3ftest%3d1; 这里lt参数就是我说的ticket了。

3)将获得的lt、用户名、密码还有一些其他的无关紧要的参数都Post到https://cas.sdo.com:80/cas/Login.PostTarget.aspx?service=http://zh.sdo.com/web1.0/home/fastlogin_after.asp 中,具体抓到的Post的数据如:warn=false&_eventId=submit&idtype=0&gamearea=0&gametype=0&challenge=3623&lt=sd-1420e593-d2cf-4c9c-b249-07fe27932a21-2008-05-06_01%3A25%3A41.484&username=studyzy&password=1234&ekey=&challenge=3623,这里我们就只关心lt,username,password这三个参数。

4)获取一个只有登录後才能访问的页面,测试是否登录成功。

5.好,整个登录机制我们已经分析完了,接下来就是考虑代码的实现了。在面向HTTP协议上,C#中有WebRequest、WebResponse、HttpWebRequest和HttpWebResponse等类。我们主要就基于这些类进行操作,当然完全基于Socket编程也可以,但是这里就没有这个必要了。

在不设置Cookie、PostData的情况下要获得一个页面的HTML的方法很简单:

public static string GetHtml( string URL)
       
{
             WebRequest wrt;
             wrt
= WebRequest.Create(URL);
             wrt.Credentials
= CredentialCache.DefaultCredentials;
             WebResponse wrp;
             wrp
= wrt.GetResponse();
            
return new StreamReader(wrp.GetResponseStream(), Encoding.Default).ReadToEnd();
         }

当需要获得服务器返回的Cookie的话,可以通过wrp.Headers.Get("Set-Cookie")方法来获取。

如果需要将Cookie加入到请求另外还Post数据的话其实也很简单,只需要将httpWebRequest对象中设置ContentLength 和Request的Stream就可以了。

httpWebRequest.ContentLength = byteRequest.Length;
Stream stream;
stream
= httpWebRequest.GetRequestStream();
stream.Write(byteRequest,
0 , byteRequest.Length);
stream.Close();

代码我就不都贴出了,我做了一个Demo在附件中,大家有兴趣研究的可以看一下。 http://files.cnblogs.com/studyzy/loginsdodemo.rar

代码中实现了盛大账号的登录,其实纵横天下的登录还没有完成,接下来还有选择具体服务器,将ticket转到具体服务器上再进行验证,原理也是一样的,我这里就不再累述了。

成功登录后,接下来我们只需要每次发送请求是跟上该Cookie,服务器就认为是登录的用户在操作了,接下来就可以随便灌水、Download资源了,具体要做什么就大家自己弄了,只需要在IE中操作一篇,抓包分析出来,用C#实现同样的发包就OK!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_856637.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生产环境-linux-网站被挂******经历

安全与方便始终是对立的,然而运维人员忽视系统安全方面的建设,带来的后果将是非常严重的,以下是一台未上线服务器***后的***经历。 一、出现异常,排查原因 发现异常是通过远端监控脚本发现访问网站时断时续,使用ssh工…

ASP.NET 网站导航概览

ASP.NET 网站导航特征可以为用户浏览网站的时候提供一致的导航方式。随着网站的发展,网站的页面会越来越多,链接的管理也开始变得更困难起来。ASP.NET 网站导航可以将页面链接集中存储到同一个位置,并在含有专用 Web 服务器控件的页面中以列表…

PHP curl 爬取反 爬的网站,请开启JavaScript并刷新该页.

总结 GET改成POST就好了 目标链接:http://www.pbc.gov.cn/zhengcehuobisi/125207/125213/125440/3876551/index.html 笔者查阅很多资料,大部分人说这样子需要模拟浏览器访问,根本原因是因为cookie不是动态生成的或者不是有效的,…

Web网站中从Sybase数据库读取的中文显示为乱码的解决方法

需要修改作为网站服务器的机器上的 Sybase 数据库 ODBC 数据源中的属性设置。如下图所示。(注:该机上安装的 Sybase 客户端版本为 12.5.0 ) 第一步,打开 ODBC 数据源管理器,选中已设置的系统 DSN : Sybase …

[关键词排名]提高新站排名的8个SEO建议

搜索引擎使用一个特定的算法,决定在搜索结果的第一页上出现哪些网页,这样用户就可以找到与他们的搜索相关的最佳结果。   对一个全新的网站进行排名是一项艰难的工作,但是遵循搜索引擎优化的指导方针,一个新的网站同样可以提高它…

【Python】不完善的批量网站运行检测小工具

使用tkinter制作了图形界面的小工具,主要是通过requests获取网站的状态码200,获取到其他的状态码则判定为运行异常。 1、可自行输入检测文件位置,.txt(文本格式,一行一个网址) 2、可自行输入谷歌驱动程序位…

不要再说SEO没出路了,SEO的十种赚钱方式让你走上小康

我深深的想要通过的自己的SEO技术赚钱。其实,掌握一门技术是次要方面,学会把技术变现才是重中之重,所以你说学习SEO重要吗?挺重要,但绝不是最重要的。学SEO的赚钱方式才是最重要的。 那么SEO都有哪些赚钱方式呢?我罗列了十种赚钱…

SEO为何见效那么慢,其实你对SEO理解都不一定对

SEO SEO和SEM最大的区别的就是除了资金投入外就是见效时间问题了,SEO优化的是一个循序渐进的过程,需要时间的积累和搜索引擎的检验。到现在为止仍然有很多对SEO没有一个正确的认知,也有很多人没搞清楚就入坑SEO行业了。 一、帮助老板正确认识…

利用好这些代码把SEO优化做到极致,最后一个你肯定没用

SEO 本期主题,利用好HTML代码让网站优化更上一层楼, 很多人认为网站优化和代码没有什么关系,其实不然,代码和优化也有着千丝万缕的关系。如果代码这一步不弄好也会影响后期的优化。尤其是最后一个还多网站都没做这一步 一、titl…

什么是黑帽SEO?

什么是黑帽SEO?黑帽SEO的作用是什么?做黑帽的方法又有哪些。现在的你是不是有许多相关的问号产生?从字面上理解,黑帽SEO指的是利用“违规”方式从事搜索引擎优化服务,说到黑帽SEO,我们会主观的以为黑帽就是…

一起来聊聊SEO的门槛高不高

之前Ourboke联盟曾讲过,自媒体博客门槛很低,也很高,这句话同样适用于搜索引擎(SEO)优化。SEO门槛很低,也很高,正如相声大师郭德纲说的那样,说相声门槛很低,也很高&#x…

SEO从业者该何去何从呢?

SEO到底还有没有前途?如果只是以百度平台为流量来源的传统SEO的话,基本没有前途了!不管你是2C业务还是2B业务。 尤其是新网站还想从百度获取免费自然SEO流量的话,那基本上废了。但是,如果你是以百度SEO平台为流量来源其…

转载:网站分析与SEO效果的评估

本文截取自:网站分析在中国 原文地址:http://www.chinawebanalytics.cn/use-web-analytics-to-evaluate-seo/ 对于一个网站而言,SEO(Search Engine Optimization,搜索引擎优化)的重要性不言而喻。搜索引擎带来的自然流量有几个好…

谷歌网站管理员工具竟然有提醒wordpress升级的功能

很久没有登录谷歌网站管理员工具了,今天登录发现有两条消息提醒标题竟然是《WordPress有更新》: 好奇下打开一看,原来是我几年前用国外的免费空间搭建的一个二级域名wordpress博客网站引起的。全文如下: 尊敬的 http://&#xff1…

MVC4网站发布到windows server 2003服务器

在windows server 2003上部署MVC4的网站,需要进行以下工作 用VS2013新建项目 在创建项目的时候选择的矿建为.NET Framework4,然后选择【ASP.NET MVC4 Web应用程序】 项目开发完成之后右键项目 选择【发布】 选择【新建配置文件】 填写自命名一个配置文件…

网站架构

摘要:何为大型网站大型网站特性既然说的是大型网站架构,那么架构的背后自然是解决人因面对大型网站特性而带来的问题。这样可以先给大家说下大型网站的特性,这些特性带来的问题就是人要解决的问题:高并发、大流量:PV .…

网站架构

摘要:何为大型网站大型网站特性既然说的是大型网站架构,那么架构的背后自然是解决人因面对大型网站特性而带来的问题。这样可以先给大家说下大型网站的特性,这些特性带来的问题就是人要解决的问题:高并发、大流量:PV .…

leaflet自定标签json_做一个好看的数据展示「小标签」,在个人网站实时展示你的粉丝数

如果你浏览过一些 GitHub 的开源项目,你一定见过很多 README 文档中都会出现的五颜六色、各式各样的「小牌子」。 最初,这些「小牌子」的主要作用是为了显示「某个 GitHub 项目」的「某种状态」,比如项目的编译是否成功、文档是否…

如何将vs2012项目的网站布置到iis上,实现内网访问

1首先获得你本机的ip地址 可以通过命令行输入 ipconfig/all 2配置电脑的iis(前提是你已经安装了) 右击我的电脑选择管理 右键网站添加网页 会出来上面的对话框 选择直接的项目web路径就ok ip地址和选自己的就行 端口随便选一个合法的。 有时候配置了出不…

php java session共享_PHP 实现多网站共享用户SESSION 数据解决方案

一、问题起源 稍大一些的网站,通常都会有好几个服务器,每个服务器运行着不同功能的模块,使用不同的二级域名,而一个整体性强的网站,用户系统是统一的,即一套用户名、密码在整个网站的各个模块中都是可以登录…