左手猫头鹰 发表于 2010-10-22 21:08:08

回复 14# qq123123
要真的是有密钥,不知道生成规则就无解了

qq123123 发表于 2010-10-23 21:24:39

回复 3# pusofalse


    第3天继续等待!继续关注!

hzxymkb 发表于 2010-10-23 21:31:22

回复 1# qq123123

P版对错误字很反感的!    {:face (229):}

19377708 发表于 2010-10-24 03:12:00

支持下,看来楼主也是au3爱好者!

qq123123 发表于 2010-10-25 06:09:54

第4天继续关注

republican 发表于 2010-10-25 08:17:19

测试一下:

LZ没对另有一个帖子作出回复,所以这个正常的话给源码,不正常就算了。

qq123123 发表于 2010-10-25 20:45:17

回复 21# republican


脚本测试正常,请发源代码!谢谢!

republican 发表于 2010-10-25 22:49:07

回复 22# qq123123 #include <WinHttp_GetRespond.au3>
#include <array.au3>
$MyOpen=_WinHttpOpen()      

$TelNumber = InputBox("请输入用户名","请输入用户名")
$rContext=_WinHTTP_GetRespond($MyOpen,"http://mail.10086.cn/Register/default.aspx",0,2)
$ViewValue=StringRegExp(BinaryToString($rContext),'<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="(.*?)" />',3)
If @error Then MsgBox(48,"Error","Error")
$Cookies=StringRegExpReplace($rContext,"(.+); path=/.*","$1")
$ViewValue=$ViewValue
$context="__EVENTTARGET=subSendMsm&__EVENTARGUMENT=&__VIEWSTATE="&AnsiURLEncode($ViewValue)&"&txtUserNumber="&$TelNumber&"&hdSource=&hdInviteUid=0&hdInviteSeqno=&hdInviteType=&hdInviteGroup="
$rContext=_WinHTTP_GetRespond($MyOpen,"http://mail.10086.cn/Register/default.aspx",1,2,10000,1,$context,$Cookies,"Content-Type: application/x-www-form-urlencoded")
Switch $rContext
        Case 302
                MsgBox(64,"Congratulation!","用户: "&$TelNumber&" 未被注册~")
        Case Else
                MsgBox(48,"I'm Sorry~","用户: "&$TelNumber&" 已经被注册!")
EndSwitch

_WinHttpCloseHandle($MyOpen)

Func AnsiURLEncode($str, $falg = 0)
      ;转换字符串为ANSI(GB2312)URL编码By afan
      ;可选参数$falg = 0,不转换字母及数字(默认);$falg = 1,全部转换(字符头http://除外)
      Local $str_s = StringRegExpReplace($str, '^(http://).+', '$1')
      If @extended = 0 Then $str_s = ''
      If @extended > 0 Then $str = StringRegExpReplace($str, '^http://', '')
      Local $astr, $i, $s2d, $sS = StringSplit($str, '')
      For $i = 1 To UBound($sS) - 1
                If StringRegExp($sS[$i], '[^\x00-\xff]') Then
                        $s2d = StringToBinary($sS[$i] & ' ')
                        $astr &= '%' & StringMid($s2d, 3, 2) & '%' & StringMid($s2d, 5, 2)
                ElseIf StringRegExp($sS[$i], '[^\w]') Then
                        $s2d = StringToBinary($sS[$i])
                        $astr &= '%' & StringMid($s2d, 3, 2)
                Else
                        If $falg = 0 Then $astr &= $sS[$i]
                        If $falg <> 0 Then
                              $s2d = StringToBinary($sS[$i])
                              $astr &= '%' & StringMid($s2d, 3, 2)
                        EndIf
                EndIf
      Next
      $astr = StringReplace($astr, '%20', '+') ;转换空格的编码为'+'号,也可不要此行
      Return $str_s & $astr
EndFunc   ;==>AnsiURLEncode

qq123123 发表于 2010-10-25 23:13:02

回复 23# republican


    _WinHTTP_GetRespond.au3

这个函数,到底怎么处理,我搜索了BBS有介绍,但是我怎么放,都不正确,

请教!

republican 发表于 2010-10-25 23:15:00

_WinHTTP_GetRespond.au3
winhttp.au3
winhttp_constatn.au3
都放在include或者同级目录即可。

rho123 发表于 2010-10-28 16:38:53

我来整个简单的 一看就会$oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")

$txtUserNumber = "13727004206"
$oHTTP = ObjCreate("Microsoft.xmlhttp")
$oHTTP.Open("POST", "https://mail.10086.cn/Register/Default.aspx", False)
$oHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
$oHTTP.Send("__EVENTTARGET=subSendMsm&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwULLTExMjE0NzQ2NjMPFgIeCGNsaWVudGlkAusHFgICAQ9kFgRmDxYCHgdWaXNpYmxlaGQCCg8WAh8BaGRk&txtUserNumber=" & $txtUserNumber & "&hdSource=&hdInviteUid=0&hdInviteSeqno=&hdInviteType=&hdInviteGroup=");post关键数据
$oText = $oHTTP.responsetext

Select
        Case StringInStr($oText, '您已是139邮箱用户') <> 0;已经注册过
                MsgBox(0, "", "您已是139邮箱用户")
               
        Case StringInStr($oText, '短信验证码将下发到您的手机,请注意查收。收取短信验证码是免费的') <> 0;可以注册
                MsgBox(0, "", "短信验证码将下发到您的手机" & $txtUserNumber)
               
        Case $oText = "";返回为空,可以处理为超时了。也有可能是提交的数据有误导致返回为空
                MsgBox(0, "", "超时错误")
               
               
        Case Else;其他错误 日志保存在Log.txt,看返回的是什么在加判断
                FileWrite('Log.txt', $oText)
                MsgBox(0, "", "出现未知错误")
               
EndSelect


Func MyErrFunc()
;可以什么都不做,目的为了防止忘了超时导致程序崩溃。
EndFunc   ;==>MyErrFunc

MicroBlue 发表于 2012-7-17 14:49:59

我最近也在学习Post 啊。。
页: 1 [2]
查看完整版本: POST提交【数据】的问题!正在改源代码(已解决)