get网页碰到的问题(50分)

  • 主题发起人 主题发起人 unki
  • 开始时间 开始时间
U

unki

Unregistered / Unconfirmed
GUEST, unregistred user!
先祝看这帖的朋友新年快乐,今年发大财
========================
我最近在写一个验证YAHOO聊天入口(http://tw.chat.yahoo.com)登陆的一个小模块碰到一点小问题
研究过http://tw.chat.yahoo.com的表单后我是这么做的
放一个 button1,idhttp1,memo1,editzhuantai

button1的click代码如下:

var
Stream: TStringStream;
begin
try
Stream := TStringStream.Create('');
id1.Get('http://login.yahoo.com/config/login?

hasMsgr=1&.tries=1&.done=http://tw.chat.yahoo.com&.src=chat&.lg=b5&.intl=tw&login='+editname

.Text+'&passwd='+editpass.Text,Stream);
Memo1.text:=Stream.DataString;
Stream.Free;
except
editzhuantai.Text:='Soft Error';
end;
end;
========================
问题出来了,怎么总是不能成功的得到网页的代码,我这么做验证思路有错吗?我是初学,是不是代码有问题,麻烦帮忙改一下
 
有些网站还需要http header里面的一些东西,比如referr
 
光看代码好象写得没什么大问题,但是我刚才试了一下确实不可以
所以顶~~~~
 
不知道什么原因,看看下面登陆串,不知道有没有用:
'http://login.yahoo.com/config/login?
hasMsgr=1&
.tries=1&
.done=http://tw.chat.yahoo.com&
.src=chat&
.lg=b5&
.intl=tw&
login='+You Name Text (without Spaces)+'&
passwd='+You Password Text (without Spaces)+'&
.chkP=Y&
.persistent=Y'
 
多谢雨兄的指点,但是肯定不是我表单分析错误,我分析后的表单是这样的,在浏览器打以下地址是肯定可以进去的
http://login.yahoo.com/config/login?hasMsgr=1&.tries=1&.done=http://tw.chat.yahoo.com&.src=chat&.lg=b5&.intlftw&login=show_form25&passwd=7185958
 
知道原因了。这个登陆过程,在第一次响应的时候向本地 Cookie 写入登陆信息,转而向
POP3 验证有效性。我对 idhttp 控件能否处理 Cookie 不清楚,以前的 ics 可以控制和
转发 Cookie 。Cookie 可以和会话期挂钩,所以,这个登陆过程大概需要在一个会话期中
返回 Cookie 才行。
 
另外,如果是 web 聊天,应该使用 ShellExecute 直接打开浏览器并发送 URL 比较简单吧。
ShellExecute(0,nil,'IEXPLORE.EXE',PChar('http://login.yahoo.com/config/login?
hasMsgr=0&.tries=1&.done=http://tw.chat.yahoo.com
&.src=chat&.lg=b5&.intlftw&login=YOU NAME&passwd=YOU PASSWORD'),nil,1);
 
我现在是想登陆后验证是否登陆成功,如果按照你上一回复的方法用ShellExecute的话,我怎么才能得到打开的这个网页的title信息呢,如果我同时还打开着别的网站的话。。。。。
能给个比较好的方法吗

同时祝雨兄新年快乐
 
如果登录成功了,在id1的response头里面应该会有个COOKIE吧
 
那具体应该怎么做呢
 
如果是一个类似溯雪这样的破解密码的软件,还是应该按照你的思路去设计,不过正如我
前面所说的,你必须处理好 cookie 的回送。作为设计破解软件,你还应该利用一些工具
软件来协助你,比如网络包截获工具,这样对你的设计会很有帮助的。具体怎么做,我想
你已经有了一个好的开始,又知道了大概的方向,应该不会太困难的。
 
id1.Response.ExtraHeaders.Values['Cookie']
差不多应该是这个,你可以看看登录后的整个头,你把这个存在mycookie中,以后取页面的时候,
id1.request.extraheaders.values['Cookie'] := mycookie;
带着这个cookie
 
感谢citytramper和小雨的大力帮助,是的,我正在做的就是破解YAHOO非法ID的一个东西,因为是非法ID而且比较少所以花点时间去破解还是蛮有趣的,结帐算了
 
后退
顶部