使用C#实现网站用户登录

news/2024/5/20 17:31:27/文章来源:https://blog.csdn.net/weixin_33827965/article/details/85208392
我们在写灌水机器人、抓资源机器人和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.**/web1.0/home/fastlogin.asp这个快速登录地址,我们将看到已经抓到了很多请求和响应的包。
3.输入用户名和密码,点击登录,IE中正常登录,停止抓包,我们要的所有信息都被抓取好了。如图:
4.盛大的登录机制还是属于比较复杂的,中间涉及到好几个服务器,经过分析得知(这个就是一个比较漫长的过程了,具体网站具体分析,这个分析过程我就不写了)纵横天下的登录机制为:
1)IE请求https://cas.**:80/cas/login?service=http://zh.**/web1.0/home/index.asp页面,该页面给IE一个SessionID,比如Set-Cookie: ASP.NET_SessionId=avcbse55l5e03suqi4dx3555; path=/
2)IE同时在该HTTP的正文中得到一个ticket,这个ticket将在登录中有用,当然其他网站肯定不是这样做的,这里分析的是纵横天下的。location.href    =   http://www.**/login2.asp?lt=sd-1420e593-d2cf-4c9c-b249-07fe27932a21-2008-05-06_01%3a25%3a41.484&service=http%3a%2f%2fzh.**%2fweb1.0%2fhome%2ffastlogin.asp%3ftest%3d1; 这里lt参数就是我说的ticket了。
3)将获得的lt、用户名、密码还有一些其他的无关紧要的参数都Post到https://cas.**:80/cas/Login.PostTarget.aspx?service=http://zh.**/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在附件中,大家有兴趣研究的可以看一下。/Files/studyzy/LoginSdoDemo.rar
代码中实现了盛大账号的登录,其实纵横天下的登录还没有完成,接下来还有选择具体服务器,将ticket转到具体服务器上再进行验证,原理也是一样的,我这里就不再累述了。
成功登录后,接下来我们只需要每次发送请求是跟上该Cookie,服务器就认为是登录的用户在操作了,接下来就可以随便灌水、Download资源了,具体要做什么就大家自己弄了,只需要在IE中操作一篇,抓包分析出来,用C#实现同样的发包就OK!

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

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

相关文章

这都是什么奇葩网站,最后一个根本玩不转

不好意思让你给发现了,今天这篇文章又是大家喜欢的收藏不看系列,类似这样的桃子收集的网站还有很多,有小伙伴需要的可以翻翻历史记录。其实,我个人也是喜欢收藏的,不然怎么偶遇这么多趣站。 MVCAT http://www.mvcat…

罗马盘、大力盘、大圣盘等搜索网站,简单绕过付费

为什么写这个? 本来我是没有打算公开的,自己的机器人上用着很舒服啊! 可能是我这个人受不了一点委屈,在吾爱回一个帖子被怼,这我能忍吗?(我承认是我的错,我道歉) 原贴&a…

相亲网站比自己优秀的男人太多?单身程序员惊现神操作!

话说,今年还有不到一个月就要过去了,作为一个单身狗的小编,看着大街上一个个成双成对的情侣,不由感到悲从心来,只能妄图从新闻中寻找一丝安慰。结果你别说,我最近还真的找到了一条嫉妒引起舒适的新闻&#…

很好很强大的六个SEO关键词分析工具

最近关键词在SEO界炒的很热,这里放出我整理的几个分析工具和简要说明。写得挺辛苦的,觉得有用的兄弟帮忙顶一下 1 百度搜索风云榜 - http://top.baidu.com/ 最新最热的核心关键词都在这里了,每天看一遍,都能学到新的东西。读懂…

漫话:如何给女朋友解释为什么有些网站域名不以www开头

38女神节那一天,女朋友问我淘宝网国际站的地址是什么,她想看看海淘上面都有哪些东西,于是我把网址:https://world.taobao.com 发给了她。于是有了以下对话。首先介绍下到底什么是域名,然后再来介绍域名的各个组成部分。…

新年新气象,网站新改版

夜已经深了。很久没有这么晚睡觉了。但今天坚持到现在,是把这个网站改版的事情完整地做完。 很快就要到2010年了,所以网站也要改改,与时俱进嘛,嘿嘿 这次修改主要是针对网站的风格样式进行完善,内容也进行了一些修正编…

bootstrap网站后台从设计到开发

前言 毕业后在一家小公司找的工作是做前端,小公司必须要身兼多职,会多门技术,所以为了工作需要自学ps,做过微信运营,后来为了做erp管理系统,又开始学习c# ,之后公司有新项目要用wpf ,我又开始学习wpf。感觉自己工作这三年虽然学了…

解决java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader couldn't find libDatabaseOp.so

本来前几天运行的好好的,不知道为什么今天一运行就报错,可能和手机有关。 这个错误 java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.cloudsoar.gotomycloud-1/base.apk"],nativeLibrar…

谷歌站长管理工具 -- 方便SEO与恶意软件检测

今天,朋友在Google推广的网站,管理台告知存在恶意代码,不能被收录,所以向我求救。因为之前一直专注开发,没有处理过这些问题。所以上网搜到了一个很好用的东西。Google的站长管理工具。地址:https://www.go…

关于大型网站技术演进的思考(十八)--网站静态化处理—反向代理(10)

反向代理也是一种可以帮助实现网站静态化的重要技术,今天我就来讲讲反向代理这个主题。那么首先我们要了解下什么是反向代理。和反向代理相对应的是正向代理,正向代理也就是我们常说的代理服务,正向代理是非常常见的,例如在某些公…

seo原创工具_文章原创度检测软件,让你的文章不再低质量

文章原创度检测软件,让你的文章不再低质量,文章原创度检测软件不管是从事网站运营还是做自媒体运营,都是必不可少的工具之一。我们在使用图文做推广运营的时候,文章的质量直接影响到收录推荐以及阅读量等数据。网站运营的小编还好…

电商网站前台模板_电商网站有哪些常见的模板?

电商的迅速发展让商家的业务也开始从线下扩展到线上,通过搭建网上商城让商家的业务得到更好的发展。电商网站的搭建有几种不同的方式:定制开发、购买现成的、使用模板。今天HiShop小编就来为大家介绍一下电商网站模板是否好用。一、电商网站模板的分类现…

使用HTML和CSS设计整个网站时

IT程序猿 微博网友评论:_木南先森:真……一个一个像素点完成的 萌萌哒的美少女6:酷爱笑的汪汪W:不够不够 不得引个插件啥的么啊琦呢:可悲的是 我依然觉得这是最好的方式…精彩回顾♡ 程序员究竟能干多少年?…

旧版ios软件网站_空投福利,都是新货合集!内含ios、安卓、盒子司机福利,请勿大肆传播!...

专注分享 - 精品软件TEYOND RESOURCES汇集最实用的软件《 Teyond Software Resources 》▌ 每日福利各位新来的小伙伴,你们好!记得将公众号加星标置顶哦,每天可以第一时间获取最新资源!小太阳每天都会发1个8.88元红包大奖&#x…

25个你会喜欢的创新的水平滚动网站设计欣赏

大多数的网站都是使用垂直滚动,我们已经习惯了。而水平滚动可以给网站增加一些创造性和独特性。如果你的目的是打动用户,水平滚动一定会帮助到你。它适用于任何创意领域,如摄影,设计,艺术以及其它你需要展示大量的图片…

一个超棒的帮助你了解科技公司如何盈利的网站 - rcs.seerinteractive.com

日期:2012-10-22 来源:GBin1.com 如何你身处互联网时代,肯定会耳熟能详不少的高科技公司,在今天我们带给大家的这篇文章中,我们将介绍一个超棒的网站 - rcs.seerinteractive.com。他能够帮助你了解知名的网站和公司是…

Steve Souders 高性能网站建设指南14条提升网站页面速度的最佳实践(1)

2019独角兽企业重金招聘Python工程师标准>>> 高性能网站建设指南 性能黄金法则&#xff1a; 只有10%-20%的最终用户响应时间花在了下载HTML文档上&#xff0c;其余80%-90%时间花在了下载页面中的所有组件上。 规则一减少HTTP请求 图片地图&#xff1a; <img use…

用spring-data-redis实现类似twitter的网站(转)

1. spring-data-redis简介 封装了一下redis的客户端&#xff0c;使得使用起来更方便。 优点是把客户端连接放到一个连接池里&#xff0c;从而提高性能。还有就是可以不同的客户端之间实现切换&#xff0c;而不用改一行代码&#xff08;Spring惯用的一个手法&#xff09;。 本文…

网站开发之DIV+CSS简单布局网站入门篇(五)

这篇文章主要介绍如何使用DIV和CSS简单布局一个网站的首页&#xff0c;通常将网站划分为顶部&#xff08;Logo、导航条&#xff09;、中部&#xff08;页面主要内容、左右栏目&#xff09;、底部&#xff08;制作方介绍、超链接&#xff09;。这是非常基础的一篇引入性文章&…