怎样自动注册网站会员?怎样自动登陆需要输入用户名和密码的网站?用delphi如何实现?给150分!!倾家荡产了!!!!!!!!!!(150分)

  • 主题发起人 主题发起人 jklmiuin
  • 开始时间 开始时间
J

jklmiuin

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样自动注册网站会员?
怎样自动登陆需要输入用户名和密码的网站?(已有用户名和密码)
用delphi如何实现?

给150分!!
倾家荡产了!!!!!!!!!!
留下20分给我做个样子吧!!
 
帮你提前
 
Wininet实现,但是如果你对html不熟的话,那就没办法了。
因为每个网站的注册都不一样,只能通过分析其注册所需的一些form内容才能实现程序注册。

登录也一样。
 
也想知道!
 
wininet来实现自动提交Form,根据返回值,将其中的cookie写道IE里面去,就可以了

再不清楚,问TQZ,以前写STAME的时候,实现的就是客户端登陆,用ie访问网站可以
自动判断用户身份。
 
自己做浏览器的话,可以用POST方法传参数。
如果是用IE,那只有得到IE的HANDLE,然后自动添加信息后,提交。……
 
TO 腾龙:
具体怎么做?我以前很少做INTERNET程序,刚开始学就被卡住了!
能否给出具体代码或哪里有相关的书籍下载?

非常感谢!感谢万分!万分感激!感激不尽!
 
可以考虑WEBSNAP的SESSION,WWW.BORLADN.COM.TW有文档。
 
改自msdn上的VB示例

unit MainFrm;
{
自动登陆网站示例代码
模拟提交网页表单数据
by aaww - aaww@yeah.net
射雕工作室提供技术支持
All code is provided as is
http://aaww.yeah.net
}

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, OleCtrls, SHDocVw;

type
TForm1 = class(TForm)
Label1: TLabel;
lblFlavor: TLabel;
edtFirstName: TEdit;
btnSubmit: TButton;
cmbxFlavor: TComboBox;
WebBrowser1: TWebBrowser;
procedure btnSubmitClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses HTTPApp;

{$R *.DFM}

procedure TForm1.btnSubmitClick(Sender: TObject);
var
EncodedDataString: string;
PostData: OleVariant;
Headers: OleVariant;
I: Integer;
begin
// First, create a URL encoded string of the data
EncodedDataString := 'username=' + HTTPEncode(edtFirstName.Text) + '&' +
'password=' + HttpEncode(cmbxFlavor.Text);
// The PostData OleVariant needs to be an array of bytes as large
// as the string (minus the NULL terminator)
PostData := VarArrayCreate([0, Length(EncodedDataString) - 1], varByte);
// Now, move the Ordinal value of the character into the PostData array
for I := 1 to Length(EncodedDataString) do
PostData[I-1] := Ord(EncodedDataString);
Headers := 'Content-Type: application/x-www-form-urlencoded' + #10#13;
// Finally, we just Naviagte to the URL. Note that you may have to modify
// the path to your ASP page's location.
WebBrowser1.Navigate('http://www.xxx.net/login.asp', EmptyParam,
EmptyParam, PostData, Headers);
end;

end.
 
用delphi的webbrowser试试。
 
具体的东西你可以看DELPHI里的例子,如果需要给这个邮箱发信:Hezhiqun@ynto.net将你
需要的最终效果提出来,我们给你一个关键实现的简单代码
 
下面是在WebBrowser的方法,你可以试试看。对了,在使用前要先user MSHTML,也可看看
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1117807(这是我问过的问题,见笑了)

procedure TPostForm.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
i:integer;
t:OleVariant;
begin
t := WebBrowser1.Document;
for i := 0 to t.all.length - 1 do
begin
if t.all.item(i).tagName = 'INPUT' then
begin
if t.all.item(i).name = '你要的edit名称' then
t.all.item(i).value = 你要的值;
if t.all.item(i).type = 'submit' then
begin
t.all.item(i).click;
exit;
end;
end;
end;
end;
 
好象对现在的bbs不起作用
 
其实WEBBROWSER应该是这样用的.....

var
o : Olevariant;
begin
WebBrowser1.Navigate('你要注册的网址');
o :=WebBrowser.OleObject.document.all.item('LoginUserID',0); //找到登录用户名的输入框
o.value := 'TEST';
o :=WebBrowser.oleobject.document.all.item('LoginPassword',0); //找到登录密码的输入框
o.value := 'TEST'
WebBrowser.oleobject.document.Forms.Item(0, 0).submit;//第一个表单提交
end;


又简单又方便...........
刚才仔细一看发现,原来这个解答是2001年的...晕...
 
好,不错。我终于也搞出来了,呵呵。、
 
这个问题我半个月前刚弄过,用webbrowser的话,我已经实现了。但是如果将其用到chinaren
校友录上的话,是不能实现自动登陆的,因为他会弹出一个错误。各位不相信的话可以看看。
我用的是delphi 7。
各位如果能够自动登陆chinaren的话,请告诉我,我给100分。
chinacmb@163.net
 
procedure TFrmUrlCommit.CommitUrlData(vRefererUrl: OleVariant;
UserField, UserValue, PasswordField, PasswordValue: string;
OtherPostData: OleVariant);
// 内部小函数,把提交字符串写入variant;
function GetPostData(Content: string): OleVariant;
var
I: Integer;
begin
Result := VarArrayCreate([0, length(content)], varByte);
for i := 0 to Length(content) - 1 do
begin
Result := Ord(content[i + 1]);
end;
Result[Length(content)] := 0;
end;
// 内部小函数结束
var
vHeaders, vPostData, vFrame, vFlags, vCommitData: OleVariant;
aWBCommit: TWebBrowser;
begin
aWBCommit := TWebBrowser.Create(nil);
vHeaders := 'Content-Type: application/x-www-form-urlencoded' + #10#13#0;

if VarIsNull(OtherPostData) then
vCommitData := UserField + '=' + UserValue + '&' +
PasswordField + '=' + PasswordValue
else
vCommitData := UserField + '=' + UserValue + '&' +
PasswordField + '=' + PasswordValue;
vPostData := GetPostData(vCommitData);
vFlags := 31;
TVarData(vPostData).vType := varArray;
aWBCommit.Navigate2(vRefererUrl, vFlags, vFrame, vPostData, vHeaders);
FreeAndNil(aWBCommit);
end;

当然你要自己分析要提交什么东西。
Chinaren 没 验证 过。



 
上面的代码在Chinaren 中是不行的
 
可能要具体分析 提交的 方式,以及 参数,因为 不一定 提交的就是 账号 密码 类型的
可能 还有其它的比如 cookie 等具体验证信息,今天要走啦,明天试验以下 chinaren。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部