回复 3# vigiles
你的观点是正确的,因为第一次写post代码,2楼的代码基本上是照葫芦画瓢,一半是按照你给的示例写的。
今天又重新抓包分析了一下,觉得以下这个代码比较靠谱。
对于post我也是新手,在给你回帖的同时,也希望能起到抛砖引玉的作用,能让post高手能指点一下。
Global $UserName, $password
Global $LoginPage, $PostPage, $CheckPage
Global $xmlhttp, $bodytext
Global $PostData, $sValue, $Formhash, $loginhash, $cookietime
$UserName = 'username'
$password = 'password'
$CheckPage = 'http://www.unitymanual.com/'
$LoginPage = "http://www.unitymanual.com/member.php?mod=logging&action=login"
$xmlhttp = ObjCreate("MSXML2.XMLHTTP.3.0")
;===========以下是检测帐号是否登录,如果登陆就先退出==============
$xmlhttp.open("GET", $CheckPage, False)
$xmlhttp.send()
$sValue = BinaryToString($xmlhttp.responseBody, 4)
If StringInStr($sValue, 'title="访问我的空间">' & $UserName & '</a>') Then
$Formhash = StringRegExp($sValue, 'formhash=(.*?)"', 3)
$xmlhttp.open("GET", 'http://www.unitymanual.com/member.php?mod=logging&action=logout&formhash=' & $Formhash[0] & '', False)
$xmlhttp.send()
EndIf
$xmlhttp.abort()
;=============以下是获取loginhash\$cookietime\$Formhash的值==============================
$xmlhttp.open("GET", $LoginPage, False)
$xmlhttp.send()
$bodytext = BinaryToString($xmlhttp.responseBody, 4)
$loginhash = StringRegExp($bodytext, 'loginhash=(.*?)"', 3)
If Not @error Then $PostPage = 'http://www.unitymanual.com/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=' & $loginhash[0] & '&inajax=1'
$cookietime = StringRegExp($bodytext, 'name="cookietime".*?value="(.*?)"', 3)
$Formhash = StringRegExp($sValue, 'formhash=(.*?)"', 3)
If Not @error Then $PostData = 'cookietime=' & $cookietime[0] & 'formhash=' & $Formhash[0] & '&loginfield=username&username=' & $UserName & '&password=' & $password & '&questionid=0&answer='
;============以下是发送post数据,并检测登录是否成功================
$xmlhttp.open("POST", $PostPage, False)
$xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
$xmlhttp.setRequestHeader('referer', 'http://www.unitymanual.com/')
$xmlhttp.send($PostData)
$sValue = BinaryToString($xmlhttp.responseBody, 4)
ConsoleWrite($sValue)
If StringInStr($sValue, '欢迎您回来') Then
MsgBox(0, "", "登录成功!")
Else
MsgBox(0, "", "登录失败!")
EndIf
$xmlhttp.abort()
|