一个登陆到其他网站的登陆窗口的问题(带验证码)

屌丝女士111 2009-08-19 01:07:47
一个登陆到其他网站的登陆窗口(带验证码)
asp.net做,登陆窗口带验证码 ,通过次窗口登陆到别人网站,方位此网站的其他网页都是登陆状态..
...全文
232 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
tulong403 2009-08-24
  • 打赏
  • 举报
回复
找到解决方法了
填写和提交以上表单的代码如下:

// 要提交表单的URI字符串。
string uriString = "http://www.xxx.com/Login.aspx";
// 要提交的字符串数据。
string postString = "userName=user1&password=password1";
// 初始化WebClient
WebClient webClient = new WebClient();
webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
// 将字符串转换成字节数组
byte[] postData = Encoding.ASCII.GetBytes(postString);
// 上传数据,返回页面的字节数组
byte[] responseData = webClient.UploadData(uriString, "POST", postData);
// 返回的将字节数组转换成字符串(HTML)
string srcString = Encoding.UTF8.GetString(responseData);
srcStrinig 就是提交表单后所返回页面的HTML。怎么样,很简单吧。

但是,以上代码可以提交ASP或JSP生成的表单,却不能提交ASP.NET表单。因为提交ASP.NET表单时,必须给“__VIEWSTATE”和 “__EVENTVALIDATION”赋值。“__VIEWSTATE”和“__EVENTVALIDATION”的值可以通过在要提交的页面上按右键 “查看源文件”中找到。如下:
id="__VIEWSTATE" value="/wEPDwUKMTg0NTgwMzM2M2RksjXHwIOzdq/skwDy1k6qTexm2j0="
id="__EVENTVALIDATION" value="/wEWBAKxhbOEAQKPpuq2CALyveCRDwLejM6fDwP2723lUdzBJVBIAVzbpM2sXYqc"
通过“查看源文件”得到的“__VIEWSTATE”和“__EVENTVALIDATION”的值还不能直接提交给表单,还需要转换成URL编码的字符串。

viewState = System.Web.HttpUtility.UrlEncode(viewState);
eventValidation = System.Web.HttpUtility.UrlEncode(eventValidation);
完整的代码如下:

// 提交按钮的文本
string submitButton = "登录";
// 页面的 VeiwState(可以通过IE打开页面,右键“查看源文件”取得)
string viewState = "/wEPDwUKMTg0NTgwMzM2M2RksjXHwIOzdq/skwDy1k6qTexm2j0=";
// 页面的 EventValidation(可以通过IE打开页面,右键“查看源文件”取得)
string eventValidation = "/wEWBAKxhbOEAQKPpuq2CALyveCRDwLejM6fDwP2723lUdzBJVBIAVzbpM2sXYqc";

submitButton = System.Web.HttpUtility.UrlEncode(submitButton);
viewState = System.Web.HttpUtility.UrlEncode(viewState);
eventValidation = System.Web.HttpUtility.UrlEncode(eventValidation);

try
{
// 要提交表单的URI字符串。
string uriString = "http://www.xxx.com/Login.aspx";
// 要提交的字符串数据。格式形如:user=uesr1&password=123
string postString = "userName=1&password=1" + "&loginButton=" + submitButton + "&__VIEWSTATE=" + viewState + "&__EVENTVALIDATION=" + eventValidation;
// 初始化WebClient
WebClient webClient = new WebClient();
webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
// 将字符串转换成字节数组
byte[] postData = Encoding.ASCII.GetBytes(postString);
// 上传数据,返回页面的字节数组
byte[] responseData = webClient.UploadData(uriString, "POST", postData);
// 将返回的将字节数组转换成字符串(HTML);
// ASP.NET 返回的页面一般是Unicode,如果是简体中文应使用
// Encoding.GetEncoding("GB2312").GetString(responseData)
string srcString = Encoding.UTF8.GetString(responseData);
}
catch (WebException we)
{
string msg = we.Message;
}


文章出处:http://www.diybl.com/course/4_webprogram/asp.net/asp_netshl/2008111/96293.html
tulong403 2009-08-21
  • 打赏
  • 举报
回复
做出来了吧 美女 星期六去玩吧
屌丝女士111 2009-08-19
  • 打赏
  • 举报
回复
还是没有一个很好的答案
chenyunkun2008 2009-08-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lovely_baby 的回复:]
一般要和 对方商量要相应的接口
[/Quote]

对的,一般你最好找一些接口,或者对方有相关的webservice,确认你可以调用

这样就可以跨站登录
Lovely_baby 2009-08-19
  • 打赏
  • 举报
回复
一般要和 对方商量要相应的接口
屌丝女士111 2009-08-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wuyq11 的回复:]
参考
还可使用webbrower
[/Quote]

也无验证码
wuyq11 2009-08-19
  • 打赏
  • 举报
回复
参考
还可使用webbrower
屌丝女士111 2009-08-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wuyq11 的回复:]
要知道其他网站接口和用户记录方式。才能通过post等方式提交信息到相关页面。
[/Quote]

一般情况,信息应该是放在Cookie Session里面的吧~
屌丝女士111 2009-08-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 slimboy123 的回复:]
参考:http://hi.baidu.com/zexyang/blog/item/b21717a777a7fb92d14358ab.html
[/Quote]

你的没有带验证码
wuyq11 2009-08-19
  • 打赏
  • 举报
回复
要知道其他网站接口和用户记录方式。才能通过post等方式提交信息到相关页面。
xyunsh 2009-08-19
  • 打赏
  • 举报
回复
这个得看对方提供何种接口吧?
如果对方提供了服务供调用,你可以自己写登陆窗口,调用相关服务就可以了。
如果对方只提供了登录窗口,用过frame嵌入他们的登陆窗口吧
mengxj85 2009-08-19
  • 打赏
  • 举报
回复
要看人家的网站登录是什么设计的,感觉带验证码有些麻烦
zhouyanfss 2009-08-19
  • 打赏
  • 举报
回复
用HTML框架或者AJAX实现吧

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧