输入QQ号和QQ密码,再输入验证码,正确的话就打开QQ空间。
以下是我的代码

'首先,根据QQ号获取验证码,
Public Function GetCode(QQ As String, Ine As Inet, DownLoad As Downloader, Picture1 As PictureBox) As Boolean
Dim strtmp As String
Dim Url As String
Dim B() As Byte
Dim Yzm As String
Dim str1, str2 As String
On Error GoTo errfind
YZMstr = ""
ptunit = ""
GetCode = False
Url = "http://check.ptlogin2." & QQ & "&appid=549000912&js_ver=10071&js_type=1&login_sig=-V4T0qXVJwIkJtjoh4KJ-1kOgTtU9gWcUJnKKTl8*v5u-rh*1LVoA8pQv9f5l2iM&u1=http%3A%2F%2Fqzs." & GetRnd(17)
Ine.Execute Url, "GET", , "Referer: */*"
Do While Ine.StillExecuting
DoEvents
Loop
B = Ine.GetChunk(0, icByteArray)
strtmp = Utf8ToUnicode(B)
If Len(strtmp) = 0 Then
'验证码获取失败
Msg = "验证码获取失败"
GetCode = False
Else
'验证码获取成功
PtUin = Mid(strtmp, InStr(strtmp, "\x"), 32)
If InStr(strtmp, "!") > 0 Then '自动获取
YZMstr = Mid(strtmp, InStr(strtmp, "!"), 4)
Picture1.Picture = Nothing
Picture1.Print "免验证"
GetCode = True
Else '手动获取
str1 = InStr(strtmp, "ptui_checkVC('1','")
str2 = InStr(strtmp, "','\x") '"','\x00\x00\x00\x00\x5e\xc1\xfe\x85');")
str1 = Mid(strtmp, str1, str2 - str1)
YZMstr = Replace(str1, "ptui_checkVC('1','", "")
If Len(YZMstr) = 0 Then
Msg = "手动获取验证码失败"
GetCode = False
Exit Function
Else
'下载验证码
DownLoad.BeginDownload "http://captcha." & GetRnd(17) & "&uin=" & QQ & "&vc_type=" & YZMstr, App.path & "\yzm.jpeg"
Picture1.Picture = Nothing
Picture1.Picture = LoadPicture(App.path & "\yzm.jpeg")
GetCode = True
End If
End If
End If
Exit Function
errfind:
GetCode = False
End Function
'然后是登录
'登录qq空间
Public Function QQLogin(QQ As String, Pwd As String, Vcode As String, Ine As Inet, Webb As WebBrowser)
Dim PwdStr As String
Dim B() As Byte
Dim Url As String
Dim strtmp, Msg1, Msg2 As String
On Error GoTo errfind
'----------------------------------------------------------初始化数据
QQUin = Trim(QQUin)
Vcode = Trim(Vcode)
'----------------------------------------------------------加密数据
B = Sta2Arr(MD5_S(Pwd) & PtUin)
PtPwd = MD5_B(B)
PwdStr = MD5_S(PtPwd & UCase(Vcode))
'----------------------------------------------------------开始登录
Url = "http://ptlogin2." & QQ & "&p=" & PwdStr & "&verifycode=" & Vcode & "&aid=549000912&u1=http%3A%2F%2Fqzs." & _ "3Dreload&h=1&ptredirect=0&ptlang=2052&from_ui=1&dumy=&low_login_enable=0®master=&fp=loginerroralert&action=5-25-1395363680734&mibao_css=&t=1&g=1&js_ver=10072&js_type=1&login_sig=0I-a1UyIm6ABfOzt6u18Q*RoScwY4bnAYrKb73MhxLnQe3oQU0BNS51k*g4v93yG&pt_rsa=0&pt_3rd_aid="
Debug.Print Url
Ine.Execute Url ', "GET", , "Accept: */*"
Do While Ine.StillExecuting
DoEvents
Loop
B = Ine.GetChunk(0, icByteArray)
strtmp = Trim(Replace(Utf8ToUnicode(B), Chr(0), ""))
Debug.Print strtmp
If Len(strtmp) = 0 Then
Msg = "加载失败"
Else
If InStr(strtmp, "ptuiCB('1','0','','0','") > 0 Then
Msg1 = InStr(strtmp, "ptuiCB('1','0','','0','")
Msg2 = InStr(strtmp, "', '" & QQ & "');")
Msg = Mid(strtmp, Msg1, Msg2 - Msg1)
Msg = Replace(Msg, "ptuiCB('1','0','','0','", "")
'Msg = "系统繁忙,请稍后再试"
' Exit Function
ElseIf InStr(strtmp, "ptuiCB('2','0','','0','") > 0 Then
Msg1 = InStr(strtmp, "ptuiCB('2','0','','0','")
Msg2 = InStr(strtmp, "', '" & Trim(QQ) & "');")
Msg = Mid(strtmp, Msg1, Msg2 - Msg1)
Msg = Replace(Msg, "ptuiCB('2','0','','0','", "")
' Msg = "已经过期的QQ号"
' Exit Function
ElseIf InStr(strtmp, "ptuiCB('3','0','','0','") > 0 Then
Msg1 = InStr(strtmp, "ptuiCB('3','0','','0','")
Msg2 = InStr(strtmp, "', '" & Trim(QQ) & "');")
Msg = Mid(strtmp, Msg1, Msg2 - Msg1)
Msg = Replace(Msg, "ptuiCB('3','0','','0','", "")
'Msg = "您输入的密码有误,请重试"
' Exit Function
ElseIf InStr(strtmp, "ptuiCB('4','0','','0','") > 0 Then
Msg1 = InStr(strtmp, "ptuiCB('4','0','','0','")
Msg2 = InStr(strtmp, "', '" & Trim(QQ) & "');")
Msg = Mid(strtmp, Msg1, Msg2 - Msg1)
Msg = Replace(Msg, "ptuiCB('4','0','','0','", "")
' Msg = "您输入的验证码有误,请重试"
' Exit Function
ElseIf InStr(strtmp, "ptuiCB('5','0','','0','") > 0 Then
Msg1 = InStr(strtmp, "ptuiCB('5','0','','0','")
Msg2 = InStr(strtmp, "', '" & Trim(QQ) & "');")
Msg = Mid(strtmp, Msg1, Msg2 - Msg1)
Msg = Replace(Msg, "ptuiCB('5','0','','0','", "")
' Msg = "校验失败"
' Exit Function
ElseIf InStr(strtmp, "ptuiCB('6','0','','0','") > 0 Then
Msg1 = InStr(strtmp, "ptuiCB('6','0','','0','")
Msg2 = InStr(strtmp, "', '" & Trim(QQ) & "');")
Msg = Mid(strtmp, Msg1, Msg2 - Msg1)
Msg = Replace(Msg, "ptuiCB('6','0','','0','", "")
' Msg = "密码错误,如果您刚修改过密码,请稍后再登录"
Exit Function
ElseIf InStr(strtmp, "ptuiCB('7','0','','0','") > 0 Then
Msg1 = InStr(strtmp, "ptuiCB('7','0','','0','")
Msg2 = InStr(strtmp, "', '" & Trim(QQ) & "');")
Msg = Mid(strtmp, Msg1, Msg2 - Msg1)
Msg = Replace(Msg, "ptuiCB('7','0','','0','", "")
' Msg = "您输入有误,请重试"
' Exit Function
ElseIf InStr(strtmp, "ptuiCB('8','0','','0','") > 0 Then
Msg1 = InStr(strtmp, "ptuiCB('8','0','','0','")
Msg2 = InStr(strtmp, "', '" & Trim(QQ) & "');")
Msg = Mid(strtmp, Msg1, Msg2 - Msg1)
Msg = Replace(Msg, "ptuiCB('8','0','','0','", "")
' Msg = "您的IP输入错误的次数过多,请重试"
' Exit Function
ElseIf InStr(strtmp, "ptuiCB('9','0','','0','") > 0 Then
Msg1 = InStr(strtmp, "ptuiCB('9','0','','0','")
Msg2 = InStr(strtmp, "', '" & Trim(QQ) & "');")
Msg = Mid(strtmp, Msg1, Msg2 - Msg1)
Msg = Replace(Msg, "ptuiCB('9','0','','0','", "")
' Msg = "您的账号不正确,请重试"
' Exit Function
ElseIf InStr(strtmp, "ptuiCB('10','0','','0','") > 0 Then
Msg1 = InStr(strtmp, "ptuiCB('10','0','','0','")
Msg2 = InStr(strtmp, "', '" & Trim(QQ) & "');")
Msg = Mid(strtmp, Msg1, Msg2 - Msg1)
Msg = Replace(Msg, "ptuiCB('10','0','','0','", "")
' Msg = "您输入的账号不正确,请重试"
' Exit Function
ElseIf InStr(strtmp, "ptuiCB('0','0','") > 0 Then
Webb.Navigate "http://user.qzone." & QQ
Msg = "登录成功"
End If
End If
Exit Function
errfind:
Msg = "异常错误"
Exit Function
End Function
现在问题出来了,如果 验证码是自动获取的那就没问题,可以正常登录。
要是验证码不是自动获取的,是用手动输入的,当然输入的验证是正确的,就是图片框里显示的。然后就提示:ptuiCB('4','0','','0','您输入的验证码不正确,请重新输入。
请哪位高手给看看我到底错哪了,我弄了三天了,还是没好,郁闷死了。
跪拜感激……
有不明白 的地方可以加我QQ说,409148370
[ 本帖最后由 醉红尘 于 2014-3-21 11:29 编辑 ]