确是是非高手莫进,也许这儿就只有10人能解答。网页中的程序弹出对话框,怎么获取弹出对话框的信息?(100分)

  • 主题发起人 主题发起人 1Fuyi
  • 开始时间 开始时间
我现在又有另一个思路,就是不用TWebBrowser
而用THttp控件,直接对网页进行提交。(这样不会产生对话框)

但是我怎么查到页面提交到服务器的字符串的参数及顺序?
 
Timer时长有什么关系呢?你有没有用过timer啊?
timer 时长1秒不是说1秒后做一次,而是每秒都做1次。

》》》TTimer捕捉不到信息,不管就是了
这样是不行的,我的提交如果没有成功,我就应再次提交。

提交如果没有成功,也有失败的框出来吧?都说了你要根据
取得的内容进行处理。
捕捉不到信息 和 提交没有成功 是两回事,看来你都没有仔细
看我的回答啊。

 
我没看懂,试问试答。
如果是从客户页面弹出的对话框,它的具体内容不在客户页面上吗?就是没有
类似 onopen 这样的脚本吗?
用页面提交你看看 post 顺序,总是先写先编码的,变量间用 & 连接。
这个站在哪里,也让我们看看是怎么回事。
 
感谢大家支持:
To:小雨哥
弹出对话框有的是从客户端产生的,有的是从服务器端产生的。〕

先试试这个登录页面:
http://61.151.255.3/login.php
这是登录的帐号:lj3865 和密码: 3593665151

大家能找到 POST 要提交的参数和顺序。
这儿有一个附加码。这个附加码好象是在客户端检查的。
另外附加码上的数字识别你们可以不管,你们只要能找到图片就行。
 
弹出的对话框的 HTML 源文件如下:
<script>
alert('请按照系统提供的附加码在附加码框中输入附加码');
history.go(-1);
</script>
我用的是 HTTP POST ,这个附加码有什么特殊的含义吗?
 
呵呵,兄弟你就是那个要 500 分,才回答“关于用delphi编程实现从WEB网页提取数据的问题”
的 1Fuyi 啊。哈哈哈哈。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=971263
 
TO:小雨哥
那个贴子中,分我到是一分都没得到。(我天天时论坛,提问的分还是有的)
不过只要是给我发了邮件的,我都发了源程序的。

弹出对话框有的是从客户端产生的,有的是从服务器端产生的。〕

你用 HTTP POST 你能将这个站点提交至服务器的Post代码生成吗:
》》http://61.151.255.3/login.php
》》这是登录的帐号:lj3865 和密码: 3593665151

另外服务器的回复代码是什么呢?


 
1. 你用post和在页面上按对服务器来说是一样的

2. 弹出对话框所有的都是客户端产生的,服务器最多告诉
客户端干什么,他只能在自己的屏幕上弹出对话框。

3. 这个附加码好象是在客户端检查的。
这个在上次的帖子我也有过分析。
弄清楚“是”还是“不是”, “好象”是没用的。

4. 分数是没有用的,好玩而已,做条件的话就更好笑了。
只要你态度端正,多答问题,要分数不难的。有点技术,
不拿出来,过不多久也会烂了,一文不值。



 
同意,同意。同意 stlont 老大的说法。
简化后的代码如下:
<html>
<head>
<title>传 奇</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link rel="stylesheet" href="game.css" type="text/css">
</head>

<form method="post" name="form" action="http://61.151.255.3/chklogin.php">
<input type="hidden" name="PHPSESSID" value="4ea51d7c4df9825dc88b23cfe02a592f" />
<table width="358" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td><img src="image/t1.gif" width="358" height="5"></td>
</tr>
<tr>
<td background="image/tbg.gif" height="30">
用户名称:<input type="text" name="vendor_id" class="INPUT" size="30" value="lj3865">
</td>
</tr>
<tr>
<td background="image/tbg.gif" height="17">
用户密码:<input type="password" name="vendor_pwd" class="INPUT" size="30" value="3593665151">
</td>
</tr>
<tr>
<td background="image/tbg.gif" height="9">
附加码:<Img name="extimg" width=40 height=18 src = "http://61.151.255.3/check.inc.php?m=0.3039754954290232"></td>
</tr>
<tr>
<td background="image/tbg.gif" height="9">
请输入附加码:<input type="text" name="extcode" class="INPUT"><br>
</td>
</tr>
<tr>
<td background="image/t2.gif" height="19">
<div align="right"><img src="http://61.151.255.3/image/b1.gif"
width="75" height="19" align="absmiddle" border="0"
onclick="form.submit()" style="cursor:hand">
</div>
</td>
</tr>
</table>
</form>
</body>
</html>
 
注意 PHPSESSID 。按上面你只要输入 附加码 即可。
每一个 session 期间在 cookie 中保存,你正常打开登录页,查它的 PHPSESSID
(从查看源文件看),不要关闭这个浏览器的这次 session ,将 PHPSESSID 代入
上面代码就可以随意登录了。
 
如果你能确认当前没有这个站的 cookie ,上面代码可以直接改成 Post 串登录的。
或者在弹出对话框时刷新一次给个假 Session ,再登录就可以了。
另外,直接由服务器发过来,由浏览器直接解释的弹出对话框大约有如下类型:
1.直接登录失败 :
<script>
alert('请按照系统提供的附加码在附加码框中输入附加码');
history.go(-1);
</script>
这个和客户页原有的类似,只是不通过一些方法不易看到。
2.二次换页丢失 Session :
<script>
location.href="systemnews.php"
</script>
它不会出现对话框,但它引出下面代码:
<script>
alert('请登陆后在使用!');location.href='login.php'
</script>
由于设计者已经考虑了客户端防范,必须连续读内存缓冲区才能读到这些信息。
 
另外就是你说的 附加码图形文字,听说你已经完成了图形识别,如果是真的,这个
POST 就算完成了。我在测试的时候是基于简化代码的,没有识别图形,手工输入,反
正就一两次,手上也没有现成的图形识别例程。但如果你是为了破别人的密码,建议
直接读缓存的方法比 FindWindow 要容易做成多线程快速穷举。我不发言了。
 

我巳将上面的 PHPSESSID 代入上面代码,
>> <就可以随意登录了。> ????????
但是怎么登录,还要你指点. 因为我巳尝试了一个晚上.
如果用 THttp.Post
Post的参数是怎么样的?顺序?

我试了下面的两组 <PHPSESSID的值是实时替换了的>
http://61.151.255.3/chklogin.php?username=lj3865&password=3593665151
&PHPSESSID=48f54fed36feec2ae6379cfca45f1b6a
和 (只是多加了引号)
http://61.151.255.3/chklogin.php?username='lj3865'&password='3593665151'
&PHPSESSID=48f54fed36feec2ae6379cfca45f1b6a

返回的都是:
<script>alert('请您输入用户名和密码');history.go(-1);</script>

另外,在直接POst的情况下,好象不需要验证附加码 post 的时候不会有附加码提示
在IE的用户界面中.附加码没有或不对 会有以下提示:
<请按照系统提供的附加码在附加码框中输入附加码>
 
另外,烦你将你的Post代码帖出.

我用Post时,不会有任何附加码的提示出现.
(我估计在POst下不会有附加码的验证,附加码是在客户端产生和在用户界面验证的,无需提交至服务器)
获取的出错信息代码是:
<script>alert('请您输入用户名和密码');history.go(-1);</script>

现在我认为主要的问题是,找到Post的参数名及参数顺序(我不知PHP是否是以顺序来分离参数的)

在客户端,该站点确是没有Cookis

该站点原来我用WebBrowser实现自动登录巳完成,没有任何问题
只是基于效率,想把其转换成 Http 直接发送

另外图片扫描的功能,如你需要,我可做成一个Com给你.

我的QQ:8486671 EMail:yt818@etang.com
如方便,你的QQ ??
 
post用法:
with nmhttp1 do
begin
OutputFileMode:=false;
post('http://61.151.255.3/chklogin.php','username=lj3865&password=3593665151');
end;
 
TO:stlont
你的代码不能解决问题.(我不是不会用Post)
而是对其参数表弄不清楚. 你能找到其具体的参数吗?
 
我发现你总不细看别人的回答

看看上面的html原码:

<input type="hidden" name="PHPSESSID" value="4ea51d7c4df9825dc88b23cfe02a592f" />
用户名称:<input type="text" name="vendor_id" class="INPUT" size="30" value="lj3865">
用户密码:<input type="password" name="vendor_pwd" class="INPUT" size="30" value="3593665151">
请输入附加码:<input type="text" name="extcode" class="INPUT"><br>

参数就是里面的name, 4个, 顺序一般是没有关系的。

 
看来此问题确是是难题:
1 我巳将extcode 和 动态的 PHPSESSID 代入参数 提交
用Get方法
http://61.151.255.3/login.php?vendor_id=LJ3865
&vendor_pwd=3593665151&PHPSESSID=796fbbd879e1476cfd5fb49f0c1dc3e0&extcode=XXXX

但是得到的是一个网址转向 <script>location.href="systemnews.php"</script>
再用Get http://61.151.255.3/systemnews.php
得到 <script>alert('请登陆后在使用!');location.href='login.php'</script>

各位高手,是我的方法不对,还是此网站加了客户端防范,无方法可解?

诸位高手,若需源程序,请留下邮件地址,我随后邮过来,请帮忙研究研究,
应该只有最后一步了:
我只要能进入
http://61.151.255.3/systemnews.php 就成功了.
 
看来你有点搞昏了啊
action="http://61.151.255.3/chklogin.php
 

Similar threads

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