修改版,由于取的网站多对应加了修正.我就没发新贴了.
1,同一个用户(或浏览器)的不同请求共享同一个变量储存空间,就称其为Session(会话)
Session内的变量保存在服务器中。
用SessionID以区别不同的Session(会话),因为不是一个用户在请求。
2, 众所周知HTTP是无连接的,所以服务端和客户端交流时协商好使用些什么标志来保持Session(会话)状态,于是出现了Cookie(可能你更熟悉 Cookie的其他用途)。这便是HTTP协议的状态保持机制,是标准,所有的浏览器都应该支持。为什么不用IP标识?呵呵,因为有人用代理啊,早期的代 理服务器是很普遍的连到Internet的方式。
So, 在Cookie中放置一个类似于SessionID的Value,同一个客户端在与服务端交互式,该ID便被来回传递,服务端便可依此建立若干变量,就是 Session变量。不同的客户端因为SessionID不同,所以访问服务器时得到的Session变量就不同。
验证原理服务器的Session会在客户端产生临时COOKIESS.
APS.NET网站就会生成ASP.NET_SessionId=hjguqsn34ai3h3aattozr2fy
PHP,JSP网站生成的JSESSIONID=4D9D2F0B65C77385C43CE4EE22D0536E
就是看什么服务器而以
取了登陆成功后的COOKIESS,只要电脑不清空COOKIESS,那就可以做成免登陆了.
换句话A电脑的COOKIESS,不能在B电脑上用.
工具WPE之类的网络探嗅器.
先记录一次成功登陆时所发送的信息.
找信息中的POST,和GET
这网上打资料都没有完整的资料特别是验证码登陆。
其实我这都是从网上收集整理出来的的。做的不是太好。
使用的两个WebClient,HttpWebRequest。NET的类分别做出一个静态类和动态类。
静态类GetHtml 支持一般的网页取数据和POET提交,但不能支持验证码,自动识别网页编码也可以手动输入网页编码。不过最好是手动输入那样会让程序少做运行代码。
System.Collections.Specialized.NameValueCollection PostVars =new System.Collections.Specialized.NameValueCollection()
PostVars.Add("uid","name");
PostVars.Add("pwd","123456");
string tmphtml= GetStrHtmlPost(url,PostVars);
动态类PostWeb 支持验证码、验证用户、登陆过会产生COOKIES字符串,第二次运行程序时可通过COOKIES而不用再次登陆。
PostWeb web=new PostWeb();
web.GetCode(验证码地址);
string tmplogin=web.LoginPost("http://www.mystand.com.cn/");
if(tmplogin.Contains(条件))
{
string cookie= web.cookieHeader;//保存到文件中下次直接付到类就可免登陆
web.GetPage("http://www.mystand.com.cn/", "http://www.mystand.com.cn/");
}
PostWeb web=new PostWeb();
web.cookieHeader=cookie;//把保存文件中的cookie付到类中
web.GetPage("http://www.mystand.com.cn/", "http://www.mystand.com.cn/");
修改版,由于取的网站多对应加了修正.我就没发新贴了.
1,同一个用户(或浏览器)的不同请求共享同一个变量储存空间,就称其为Session(会话)
Session内的变量保存在服务器中。
用SessionID以区别不同的Session(会话),因为不是一个用户在请求。
2, 众所周知HTTP是无连接的,所以服务端和客户端交流时协商好使用些什么标志来保持Session(会话)状态,于是出现了Cookie(可能你更熟悉 Cookie的其他用途)。这便是HTTP协议的状态保持机制,是标准,所有的浏览器都应该支持。为什么不用IP标识?呵呵,因为有人用代理啊,早期的代 理服务器是很普遍的连到Internet的方式。
So, 在Cookie中放置一个类似于SessionID的Value,同一个客户端在与服务端交互式,该ID便被来回传递,服务端便可依此建立若干变量,就是 Session变量。不同的客户端因为SessionID不同,所以访问服务器时得到的Session变量就不同。
验证原理服务器的Session会在客户端产生临时COOKIESS.
APS.NET网站就会生成ASP.NET_SessionId=hjguqsn34ai3h3aattozr2fy
PHP,JSP网站生成的JSESSIONID=4D9D2F0B65C77385C43CE4EE22D0536E
就是看什么服务器而以
取了登陆成功后的COOKIESS,只要电脑不清空COOKIESS,那就可以做成免登陆了.
换句话A电脑的COOKIESS,不能在B电脑上用.
工具WPE之类的网络探嗅器.
先记录一次成功登陆时所发送的信息.
找信息中的POST,和GET
这网上打资料都没有完整的资料特别是验证码登陆。
其实我这都是从网上收集整理出来的的。做的不是太好。
使用的两个WebClient,HttpWebRequest。NET的类分别做出一个静态类和动态类。
静态类GetHtml 支持一般的网页取数据和POET提交,但不能支持验证码,自动识别网页编码也可以手动输入网页编码。不过最好是手动输入那样会让程序少做运行代码。
System.Collections.Specialized.NameValueCollection PostVars =new System.Collections.Specialized.NameValueCollection()
PostVars.Add("uid","name");
PostVars.Add("pwd","123456");
string tmphtml= GetStrHtmlPost(url,PostVars);
动态类PostWeb 支持验证码、验证用户、登陆过会产生COOKIES字符串,第二次运行程序时可通过COOKIES而不用再次登陆。
PostWeb web=new PostWeb();
web.GetCode(验证码地址);
string tmplogin=web.LoginPost("http://www.mystand.com.cn/");
if(tmplogin.Contains(条件))
{
string cookie= web.cookieHeader;//保存到文件中下次直接付到类就可免登陆
web.GetPage("http://www.mystand.com.cn/", "http://www.mystand.com.cn/");
}
PostWeb web=new PostWeb();
web.cookieHeader=cookie;//把保存文件中的cookie付到类中
web.GetPage("http://www.mystand.com.cn/", "http://www.mystand.com.cn/");