本帖最后由 lujd0429 于 2012-10-5 21:24 编辑
最近在学习POST登录方面的知识,并且也能够POST登录成功!但是我发现一个问题就是POST登录的速度慢的真是离谱,就拿我下面的ACN论坛POST登录为例吧,我等待至少20秒左右才能执行完脚本代码,并提示登录成功!请教这是为什么?或是该如何修改代码? 谢谢!
$UserName = '你的用户名'
$password = '你的密码'
$LoginPage = 'http://www.autoitx.com/space-uid-7653501.html' ; 登录信息填写页
$PostPage = 'http://www.autoitx.com/logging.php?action=login&loginsubmit=yes' ;POST地址
$CheckPage = 'http://www.autoitx.com/index.php' ; 检测帐号登录情况页
$xmlHttpReq = ObjCreate("MSXML2.XMLHTTP.3.0")
#cs
下列代码段用于检查之前帐号有无退出。因为如果没有退出的话,就获取不到Post数据中的formhash值。
#ce
$xmlHttpReq.open("GET", $CheckPage, false)
$xmlHttpReq.send()
$Content = BinaryToString($xmlHttpReq.responseBody,1)
If StringRegExp($Content,'class="noborder">'&$UserName&'</a></cite>',0) Then ;存在此段网页代码则说明帐号已经登录。
$FormHash11 = StringRegExp($Content,'formhash=(.*?)">退出</a>',3) ;获取退出时所要使用的formhash值
$xmlHttpReq.open("GET", 'http://www.autoitx.com/logging.php?action=logout&formhash='&$FormHash11[0]&'', false) ; 退出帐号
$xmlHttpReq.send()
EndIf
$xmlHttpReq.abort()
#cs
下列代码段用于获取POST数据中的formhash值以及提交POST数据登录
#ce
$xmlHttpReq.open("GET", $LoginPage, false)
$xmlHttpReq.send()
$Content = BinaryToString($xmlHttpReq.responseBody,1)
$FormHash = StringRegExp($Content,'name="formhash" value="(.*?)\"',3)
If @error = 0 Then
$xmlHttpReq.open("POST",$PostPage,false)
$xmlHttpReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
$xmlHttpReq.send('formhash='&$FormHash[0]&'&loginfield=username&username='&$UserName&'&password='&$password&'&questionid=0&answer=&loginsubmit=%B5%C7%C2%BC')
$Content = BinaryToString($xmlHttpReq.responseBody,1)
$xmlHttpReq.abort()
If StringRegExp($Content,'<p>欢迎您回来,'&$UserName&'。现在将转入登录前页面。 </p>',0) Then
MsgBox(0,"","登录成功!")
Else
MsgBox(0,"","登录失败!")
EndIf
EndIf
|