找回密码
 加入
搜索
查看: 3893|回复: 6

[IE类操作] 【已解决】关于使用WinHttp_GetRespond来登陆百度知道

  [复制链接]
发表于 2012-5-19 14:28:41 | 显示全部楼层 |阅读模式
本帖最后由 chenronting 于 2012-7-7 21:08 编辑

大家好,下面是我看了论坛里的东西后,自己弄出的一个登陆代码 ,可是得到的信息好像是登陆失败了。
请问我这个代码里有哪里是不对的吗,另,如何显示一个IE窗口,来测试是否成功 。
在此谢过!!!

原来是Get地址不对。。不过我也不知道为什么不对。!

#include <Array.au3>
#include <WinHttp_GetRespond.au3>

;Opt("MustDeclareVars",1)


Global $MyOpen,$rContext


$MyOpen=_WinHttpOpen()  
$rContext=_WinHTTP_GetRespond($MyOpen,"http://zhidao.baidu.com/html/userlogin.html?t=1337390692718",2+4)
_ArrayDisplay($rContext,'Debug~~~')
;$ck = StringRegExp($rContext[3],'(BAIDUID=.+;) expires',3)
;$ck = $ck[0]
$ck = $rContext[3]
$Name = AnsiURLEncode('你自己的用户名')
$PassWord = AnsiURLEncode('你自己的密码')
$rContext=_WinHTTP_GetRespond($MyOpen,"https://passport.baidu.com/v2/api/?login",1 + 2 + 4,50000, _
"charset=gb2312&codestring=&token=6f4ff0a44bfbc5e06e5165b9808c9b71&isPhone=false&index=0&u=http%3A%2F%2Fzhidao.baidu.com/&safeflg=0&staticpage=http%3A%2F%2Fzhidao.baidu.com%2Fhtml%2Fjump.html&" & _
"loginType=1&tpl=ik&callback=parent.bdPass.api.login._postCallback&username=" & $Name & "&password=" & $PassWord & "&verifycode=", _
$ck,"Content-Type: application/x-www-form-urlencoded")
If @error Then MsgBox(0,"Error","登录失败")
MsgBox(0,1,$rContext[0])
_ArrayDisplay($rContext)
$rContext=_WinHTTP_GetRespond($MyOpen,"http://zhidao.baidu.com/submit/user",1,0,"cm=100509&t=1337391020625",$ck)
If @error Then MsgBox(0,"Error","失败")
_ArrayDisplay($rContext)
$rContext=_WinHTTP_GetRespond($MyOpen,"http://zhidao.baidu.com",2,0,"",$ck)
If @error Then MsgBox(0,"Error","获取失败")
MsgBox(64,2,StringTrimLeft($rContext[0],1000))


_WinHttpCloseHandle($MyOpen) 
Func AnsiURLEncode($str, $falg = 0)
        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
发表于 2012-5-19 16:14:02 | 显示全部楼层
留名关注一下…
 楼主| 发表于 2012-5-19 17:01:54 | 显示全部楼层
回复 2# javarike


    呃, 兄弟,帮下忙。
 楼主| 发表于 2012-5-19 21:03:54 | 显示全部楼层
我顶上去, 怎么没有人帮我看看, 论坛里的那个, 为什么是写Cookie写到注册表里的。?
发表于 2012-5-20 15:47:29 | 显示全部楼层
 楼主| 发表于 2012-5-21 23:02:20 | 显示全部楼层
回复 5# whitehead


    可以告诉我, 这是为什么吗。?谢谢你的回答 。!
发表于 2012-5-22 21:12:48 | 显示全部楼层
回复  whitehead


    可以告诉我, 这是为什么吗。?谢谢你的回答 。!
chenronting 发表于 2012-5-21 23:02


只有试过才能知道
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-6-17 06:37 , Processed in 0.080256 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表