求助~~有关自动登录网站的问题

问题描述

帮童鞋做的一个自动登录网站的程序,但是不成功,求帮忙分析下这个网页。usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingmshtml;namespaceweb{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();(webBrowser1.ActiveXInstanceasSHDocVw.WebBrowser).NavigateComplete2+=newSHDocVw.DWebBrowserEvents2_NavigateComplete2EventHandler(Form1_NavigateComplete2);}voidForm1_NavigateComplete2(objectpDisp,refobjectURL){IHTMLDocument2doc=(webBrowser1.ActiveXInstanceasSHDocVw.WebBrowser).DocumentasIHTMLDocument2;doc.parentWindow.execScript("window.alert=null","javascript");doc.parentWindow.execScript("window.confirm=null","javascript");doc.parentWindow.execScript("window.open=null","javascript");doc.parentWindow.execScript("window.showModalDialog=null","javascript");doc.parentWindow.execScript("window.close=null","javascript");}privatevoidwebBrowser1_DocumentCompleted(objectsender,WebBrowserDocumentCompletedEventArgse){HtmlDocumentdoc=this.webBrowser1.Document;if(doc.Url.AbsoluteUri=="http://gm.sdo.com/login/default.aspx?returnurl=http%3a%2f%2fgm.sdo.com%2fhome.aspx"){doc.GetElementById("check_account").InnerText="xxxxx";//账号doc.GetElementById("check_password").InnerText="xxxxx";//密码doc.GetElementById("btn_login").InvokeMember("click");}}privatevoidForm1_Load(objectsender,EventArgse){}}}

解决方案

解决方案二:
需求:客户的数据同时存在在另外一个不可控的系统中,需要和当前系统同步。思路:自动登录另外一个系统,然后抓取数据,同步到本系统中。技术点:模拟用户登录;保存登录状态;抓取数据程序非常简单:///<summary>///visitthetargeturl///</summary>///<paramname="targetURL"></param>///<paramname="cc">thisisforkeepingcookiesandsessions</param>///<paramname="param">thisisthedataneedpostinsideform</param>///<returns>htmlpage</returns>publicstaticstringPostAndGetHTML(stringtargetURL,CookieContainercc,Hashtableparam){//preparethesubmitdatastringformData="";foreach(DictionaryEntrydeinparam){formData+=de.Key.ToString()+"="+de.Value.ToString()+"&";}if(formData.Length>0)formData=formData.Substring(0,formData.Length-1);//removelast'&'ASCIIEncodingencoding=newASCIIEncoding();byte[]data=encoding.GetBytes(formData);HttpWebRequestrequest=(HttpWebRequest)WebRequest.Create(targetURL);request.Method="POST";//postrequest.ContentType="application/x-www-form-urlencoded";request.ContentLength=data.Length;request.UserAgent="Mozilla/4.0(compatible;MSIE7.0;WindowsNT5.1;SV1;.NETCLR2.0.1124)";StreamnewStream=request.GetRequestStream();newStream.Write(data,0,data.Length);newStream.Close();request.CookieContainer=cc;HttpWebResponseresponse=(HttpWebResponse)request.GetResponse();cc.Add(response.Cookies);Streamstream=response.GetResponseStream();stringresult=newStreamReader(stream,System.Text.Encoding.Default).ReadToEnd();returnresult;}这一个是调用的例子:先登录,在查询。实际中这个逻辑可能有很多步骤privatevoidbutton2_Click(objectsender,EventArgse){CookieContainercc=newCookieContainer();//thisisforkeeptheSessionandCookieHashtableparam=newHashtable();//thisisforkeeppostdata.stringurlLogin="http://demo.server//login.asp";//dofindtheelementIdthatneeded.checkthesourceofloginpagecangetthisinformationparam.Add("User","xxx");param.Add("Password","xxxx");stringresult=PostAndGetHTML(urlLogin,cc,param);//checkresult,whetherloginsuccess//ifloginsuccess,gotothetargeturl,andinputsomevalue.stringurl2="http://demo.server/query.asp?id=1";//needchange.speciallogicparam.Clear();//param.Add("SearchAreaId","JobId")result=PostAndGetHTML(url2,cc,newHashtable());//ConvertToDTthehtmlordosomethingothers}这是一个简单的抓取网页数据的函数(针对Table内的,直接转化成DataTable)privateDataTableConvertToDT(DataTabledt,stringtableHTML){intlastTD=tableHTML.ToLower().LastIndexOf("</td>");intfirstRow=tableHTML.ToLower().IndexOf("<tr")+3;//after""<trintindex=tableHTML.ToLower().IndexOf("<tr",firstRow)+3;//after""<trwhile(index<lastTD){DataRowdr=dt.NewRow();for(inti=0;i<dt.Columns.Count;i++){stringvalue="";intstartTD=tableHTML.ToLower().IndexOf("<td",index)+3;//after"<td"intendTD=tableHTML.ToLower().IndexOf("</td>",startTD);if(endTD<0)break;stringtdStr=tableHTML.Substring(startTD,endTD-startTD);//remove<>andotherstdStr=tdStr.Replace("&nbsp;","").Replace("t","").Replace("r","");string[]v=tdStr.Split('<','>');for(intj=0;j<v.Length;j++){j++;if(v[j].Trim()!=""){value=v[j].Trim();break;}}//dr[i]=value;index=endTD;}dt.Rows.Add(dr);}returndt;}注:对于有验证码登录系统的无效。(如果该系统的验证码放到cookie中存储的例外,这个容易破解)
解决方案三:
用cooick或者数据库模式去操作

时间: 2024-09-18 11:52:09

求助~~有关自动登录网站的问题的相关文章

请教关注企业公众号以后自动登录网站用户中心问题

问题描述 请教关注企业公众号以后自动登录网站用户中心问题 1,现在用户只要关注企业公众号以后,自动生成随机用户名密码.并且可以通过底部菜单链接进入用户中心. 2,现在的问题是,过了几个小时以后,再从微信公众平台底部菜单点击用户中心,这个时候提示需要登录,页面自动跳转到登录界面(原则上还是自动登录才对) 3,当我关闭网页,到微信公众平台再次点击用户中心,又可以自动登录了 4,排查,第一次点击用户中心,发现可以获取code. 但是获取不到openid.返回错误提示errcode=>40029:err

如何使用Windows凭据管理自动登录局域网

  小知识:关于Windows凭据管理 Windows之所以能够在第一次输入域系统内共享计算机文件夹密码后,能够无密码自动访问,是因为它的凭据管理器在发挥作用.使用凭据管理器存储凭据,可用于登录到网站或网络中其他计算机的用户名和密码.通过存储凭据,Windows可使用户自动登录网站或其他计算机.凭据保存在计算机上称为"保管库"的特殊文件夹中.Windows 和程序(如网络浏览器)可以安全地将保管库中的凭据自动提供给其他计算机和网站. 1. 删除失效的凭据 通过"控制面板→所有

如何看到网站网页自动登录的密码

  适用范围 谷歌浏览器 火狐浏览器 各种网页已保存密码的显示方法(只适用以上两种浏览器) 注:其他浏览器目前来说,还没有此类的功能,也许是作者很少用其他浏览器的原因吧,如果有的话,欢迎大家补充. 谷歌浏览器查看自动登录路由器密码方法 第1步:正常打开谷歌浏览器,并单击谷歌浏览器右侧的菜单按扭下的设置. 第2步:在打开的谷歌浏览器的设置窗口中向下拉到底部,找到"显示高级设置..."并单击. 第3步:找到"密码和表单"此项,下面的"管理已保存的密码"

网站网页自动登录的密码如何看到

  第1步:正常打开谷歌浏览器,并单击谷歌浏览器右侧的菜单按扭下的设置. 尊重原创转载留网址http://www.pc811.com/1/26058.html 第2步:在打开的谷歌浏览器的设置窗口中向下拉到底部,找到"显示高级设置..."并单击. 第3步:找到"密码和表单"此项,下面的"管理已保存的密码"并单击. 第4步:在打开的"已保存的密码"窗口中,找到自己曾经设置过的网址并单击选中,然后就可以直接在后台单击"显

VB实现网站自动登录,报错,求大神指正

问题描述 VB实现网站自动登录,报错,求大神指正 公司有个平台,每次登录输入密码好麻烦,就找了个这么个自动登录的,起先是这样的: Dim username,password,IE '定义变量 username = "admin" '用户名 password = "123" '密码 Set IE =CreateObject("InternetExplorer.Application") '调用IE程序 IE.FullScreen=0 '全屏化IE对

网站 自动登录-怎么样写个程序,自动登录一个网站,然后填报表,然后发送

问题描述 怎么样写个程序,自动登录一个网站,然后填报表,然后发送 是这样的,平时工作里,我要登录一个网站做上班登记,要填一张表,最后发送,一天要登记四五回.用什么语言,什么方式,学什么知识,可以写一个程序,自动登录这个网站(我提供账号密码),然后完成填表,发送呢? 顺便我会c,c++,c#会一点,ruby懂,没用过rails,web开发没试过,谢谢. 一点头绪都没有,请致电,谢谢

用户登录,跳转另一网站,怎么自动登录另一网站,已知用户名和密码

问题描述 对接用户登录,跳转另一网站,怎么自动登录另一网站,已知用户名和密码 解决方案 解决方案二:http://bbs.csdn.net/topics/340186967解决方案三:我想要对接别的网站,我知道了用户名和密码然后直接从我网站登录到别的网站解决方案四:看对方网站登陆页面的要求PSOT或者GET提交用户名和密码解决方案五:引用3楼caoqinghua的回复: 看对方网站登陆页面的要求PSOT或者GET提交用户名和密码 正解解决方案六:引用4楼liqz2009的回复: Quote: 引

网页A自动登录到网站B,可以实现吗?

问题描述 可以实现以下功能吗?打开一个网页A,然后自动登录到网站B.(知道网站B的用户名和密码) 解决方案 解决方案二:如果网站B没做登录来源限制的话,是可以的解决方案三:可以的解决方案四:你在A站点登陆的时候可以通过webService吧用户的信息发往B网站校验,如果通过,则就可以直接访问B网站解决方案五:请问楼上的各位大哥,怎么实现呢,能说一下吗?解决方案六:<scriptlanguage="javascript">functiondoSubmit(){document

c#中自动登录某网站,并使用登录帐户访问该网站其他网页时遇到的问题

问题描述 大家好,小弟新来的,在自己学习过程中遇到了一点问题,希望各位大哥大姐帮帮忙,不胜感激......我写了一个web网页,在设置自动登录某交友网站并自动在该网站浏览其他用户的博客等信息时,遇到了一个问题.问题是这样的:在首页写了个自动登录程序,可以实现.但是再登录该站其他用户的博客时却提示没有登录,我反复的测试,至今没有搞明白是为什么.呵呵,本人新手,学习c#也才2周左右,看了很多书,却不知道是哪个步骤错了,希望高手指导一下.那个交友网站是:www.dada.net我注册了一个用户,大家可