如何用我的程序登录到网站?

Taken 2004-01-30 09:39:21
经常看到一些软件可以通过在客户端的exe程序输入用户名和密码,登录到网站,而不需要到网站去登录,请问如何实现?

开发任务要下来了,等待解决方案中,谢谢大家!
...全文
63 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Taken 2004-01-30
  • 打赏
  • 举报
回复
谢谢,我试过了,可以登录的!
我还有两个问题:
1、我如何才能知道是否登录成功呢?
2、如何才能知道用户名和密码之前的那一串字符是什么?调用的是asp,jsp或是cgi?还有,有的网站分别用id代表用户名,pass代表密码,而不是password?怎样才能知道代表密码的那个标识符是什么?
seav 2004-01-30
  • 打赏
  • 举报
回复
使用TWebBrowser控件
WebBrowser1.Navigate('你的登陆网址');
登陆网址需要包含你的用户名和密码。如上面的朋友所述,但这种方法并不安全,密码在网页属性里容易被看到。
而且能支持的登录也是不多。我知道tom.com和163.com的邮箱可以使用此方法。
tom.com的连接代码是:
http://bjweb.163.net/cgi/163/login_pro.cgi?user="+username+"&pass="+password
163.com的连接代码是:
http://reg4.163.com/CheckUser.jsp?username="+username+"&password="+password

你看看吧,会对你有用的。
hkbarton 2004-01-30
  • 打赏
  • 举报
回复
当然可以了,同样是使用webbrowner OCX控件
要传递参数用网站相应的矛点就可以了,如下
http://xxx.com/main.asp?id=xxx&pas=xxx
?号后面的就是参数,当然上面只是个例子,你必须要知道你要登陆网站的参数传递的细节,其实这和网站本身的连接是一样的
seav 2004-01-30
  • 打赏
  • 举报
回复
看看这篇文章吧.会对你有用的。

偶然的机会需要使用TWebBrowser,在开发过程中涉及到一些比较不肤浅的东西,于是免不了搜资料,翻CSDN的帖子,终于把要做的东西作了出来,同时对于TWebBrowser也有了初步的了解。同时看到很多CSDN上的不少朋友也在TWebBrowser上存在很多疑问,于是把自己这段时间所得的拿出来与大家分享。还是那句话,本人水平很洼,说的不对的话敬请指出,不要客气,否则不但我自己学错了东西,也让看这篇文章的人误入歧途。废话少说正文开始。

首先我们要认识到TWebBrowser其实是Delphi对Internet Explorer Browser的封装,也就是说它是一个ActiveX控件,看过TWebBrowser代码的朋友会发现这个空间的所有方法的实现部分都调用了DefaultInterface的方法,而TWebBrowser的这个属性是一个IWebBrowser2接口类型的对象,这个接口就是IE的接口。我们在使用TWebBrowser代替IE浏览器的目的大部分是为了能够让程序处理页面,实现自动对WebApplication的请求,所以我们首先想得到的就是TWebBrowser所浏览的内容。TWebBrowser的Documnet属性正是这一内容,Document其实是一个IHTMLDocument2,但是它被声明为IDispatch接口类型,我们需要把它转化为IHTMLDocument2类型然后是用我们需要的各种方法。在这里需要注意IHTMLDocument2是在MSHTML单元定义的,需要我们手动将这一单元加入到uses部分。具体代码如下:

var D : IHTMLDocument2;
begin
D := WebBrowser1.Document as IHTMLDocument2;
end;

接下来我们来看看一个网页中包含什么,也就是我们希望通过TWebBrowser来处理的内容有哪些。网页中的元素主要有普通文本内容,超级连接以及动态的元素(Form中的元素),当然还有其它元素,但是我们在一般的处理过程中一般会用到这些,因此我在这里以这些元素为例首先我要介绍的是Form和包含在Form中的元素的使用。

在IHTMLDocument接口中有一个Forms的属性,这个属性是IHTMLElementCollection接口类型,其实这个Forms属性是TWebBrowser显示的页面中的所有Form元素。也就是说一个页面中的所有Form都包含在Forms这个集合中。我们可以以使用IHTMLDocument.Forms.item(name: OleVariant; index: OleVariant)得到我们需要操作的Form,当然我们在这里得到的只是一个IDispatch接口,我们需要再把这个接口转换成IHTMLFormElement来使用Form的方法和属性。示例如下(该例子为yahoo的免费信箱登陆界面http://mail.yahoo.com.cn/):

var Form : IHTMLFormElement ;
D:IHTMLDocument2 ;

begin
with WebBrowser1 do begin
D := Document as IHTMLDocument2;
Form := D.Forms.item('login_form',0) as IHTMLFormElement;
(form.item('login',0) as IHTMLElement).setAttribute('value',edit1.Text,0);
(form.item('passwd',0) as IHTMLElement).setAttribute('value',edit2.Text,0);
//form.submit; // this line work too
(form.item('.save',0) as IHTMLElement).click;
end;
end;

从上面的例子我们可以看到我们可以通过两种方法提交一个Form,这两种方法在一般情况下没有什么区别,但是当页面中编写了一些js用来实现页面提交的控制时,前者会忽略掉这些js,所以后面的方法是我所推荐的。

在这个时候我遇到了一个问题,就是在我要处理的页面中有两个Form,而且这样两个Form都没有名字,也就是说Form := D.Forms.item('login_form',0) as IHTMLFormElement;这一句中item的第一个参数的我们无法从网页中得到,同时在设置这个参数时我发现了一个问题,就是说如果在页面中有两个Form元素的话,第一个Form元素可以通过item(varEmpty,0)得到,第二个Form元素可以通过item(verNull,0)得到,而item的第二个参数完全不起作

用,这个问题可能是由于我对该函数的错误使用造成的,希望有人可以给出这一问题的解决方案。我的想法是

DHTML在没有明确得到一个元素的名称时会自动生成一个唯一的元素名称分配给该元素,但是如何得到这个唯一的

元素名称呢?这个只是我的一个设想,我们会看到,当我们处理链接的时候我们还要遇到这个问题。示例如下(

这是我自己做的一个jsp程序):
var form : IHTMLFormElement ;
d:IHTMLDocument2 ;
begin
with WebBrowser1 do begin
d := document as IHTMLDocument2;
form := d.forms.item(varNull,01) as IHTMLFormElement;
(form.item('firstName',0) as IHTMLElement).setAttribute('value',edit1.Text,0);
(form.item('lastName',0) as IHTMLElement).setAttribute('value',edit1.Text,0);
form.submit;
end;
end;

以上是网页中Form的基本处理,接下来我介绍一下网页中对于链接的控制,我们一般是希望能够实现程序自动点

击网页中的连接。在这里正如前面提到的,我只能得到前两个没有名称的连接。示例如下:

var Links : IHTMLElementCollection;
D:IHTMLDocument2 ;
Element : IHTMLElement;
begin
with WebBrowser1 do begin
D := Document as IHTMLDocument2;
Links := D.links;
Element := (Links.Item(varempty,0) as IHTMLElement);
ShowMessage(Element.getAttribute('href',0));
Element := (Links.Item(varNull,0) as IHTMLElement);
ShowMessage(Element.getAttribute('href',0));
end;
end;

我们可以通过调用以上代码中的Element.Click事件来模拟点击。不行了,写不下去了,还有一个常见的问题就是怎么使自己写的Browser在打开一个新窗口时在制定窗口打开。这个要在TWebBrowser的NewWindows2中改变 ppDisp来实现。

就是这么多,希望大家能够从中学到点什么,更希望有人能够解答我上面的疑问。
seav 2004-01-30
  • 打赏
  • 举报
回复
这就得使用到MSHTML中的HTMLDocument2(好像这样写)了,你查查这方面的技巧吧在这个论坛也常常有看到。
Taken 2004-01-30
  • 打赏
  • 举报
回复
大家来帮帮忙呀!
Taken 2004-01-30
  • 打赏
  • 举报
回复
To:DennisLan(丹舟)

我能不能通过http协议向指定网站发送一些特定的东西来实现啊?

比如MSN Messenger,只要在MSN Messenger上登录成功了,再到hotmail取信就不需要再登录了,我就想实现类似这样的功能。

请问能实现吗?
简叔 2004-01-30
  • 打赏
  • 举报
回复
那要看是什麼程序,你所看到的這些軟件可能是把 Brower 作為控件錄到程式中去了vs.net 中就有 IE 這個控件.你可以自訂工具項目把它加進來.
Taken 2004-01-30
  • 打赏
  • 举报
回复
先自己up一下:)

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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