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

[IE类操作] [已解决]winhttp或者xmlhttp如何Pot获取到Location头信息

  [复制链接]
发表于 2011-12-1 17:26:22 | 显示全部楼层 |阅读模式
本帖最后由 .個朲綉√ 于 2011-12-13 09:27 编辑

解决方法在6楼,用到的UDF传送门http://www.autoitx.com/thread-18528-1-3.html

Post提交以后,下面是抓包获取到的头信息,我想获取Location后面的网址
搜索帖子,http://www.autoitx.com/forum.php?mod=viewthread&tid=21038
在这个帖子里,看到同样的问题,但用他的方法,还是没有解决,不知道问题出在哪里...
HTTP/1.1 302 Found
Date: Thu, 01 Dec 2011 09:17:29 GMT
Server: IBM_HTTP_Server
Pragrma: no-cache
Expires: -1
P3P: CP=CAO PSA OUR
Set-Cookie: token=2sWzfxsVg_7Xm5eRD391A1b
Location: http://hn.ct10000.com:80/uam_uamChannel.do?url=http://hn.ct10000.com:80/service/account/service_DefaultInit.do?UATicket=B71314C15960A0271A768ADBD07802F7AF149FC798E492E2734F61D225AB8A7D
Content-Length: 0
Cache-Control: no-store, no-cache=set-cookie
Keep-Alive: timeout=10, max=100
Connection: Keep-Alive
Content-Type: text/plain
Content-Language: zh-CN
下面是我的Au3代码,请各位指教,谢谢!!

$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.SetTimeouts(15000,15000,15000,15000)
$oHTTP.Option(4) = 13056
$oHTTP.option(6)=0
$oHTTP.Open("post","http://uam.hn.ct10000.com/LoginIn",False)  ;GET 提交的地址
$oHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
$oHTTP.setRequestHeader("Referer", "http://uam.hn.ct10000.com/login-hn.jsp?bussiType=1&redirectUrl=http://hn.ct10000.com:80/uam_uamChannel.do?url=http://hn.ct10000.com:80/service/account/service_DefaultInit.do&sysCode=19101&trandId=")
$oHTTP.setRequestHeader("Accept-Encoding", "gzip, deflate")              
$oHTTP.setRequestHeader("Accept-Language", "zh-cn")
$oHTTP.setRequestHeader("User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET4.0C; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)")
$oHTTP.Send($sDataToSend)
$Location1=$oHTTP.getResponseHeader("Location")      ;这个是GET后服务器返回的 头信息~
MsgBox(0,'',$Location1)
$oHTTP=0
发表于 2011-12-1 22:48:43 | 显示全部楼层
回复 1# .個朲綉√
搜索 禁止重定向。

或者参考我的UDF:http://www.autoitx.com/thread-18528-1-3.html

PS:xmlhttp是不支持禁止重定向的。
 楼主| 发表于 2011-12-1 23:06:51 | 显示全部楼层
本帖最后由 .個朲綉√ 于 2011-12-1 23:39 编辑

回复 2# republican


    看你的UDF,看了很久,我头都疼,我把账号密码发你了,你能帮我写一段post登陆吗?我学习一下,谢谢您!!

下面是我研究你UDF写的,可一直获取不了重定向的网址

        $sDataToSend = "actionType=login&bussiType=&redirectUrl=http%3A%2F%2Fhn.ct10000.com%3A80%2Fuam_uamChannel.do%3Furl%3Dhttp%3A%2F%2Fhn.ct10000.com%3A80%2Fservice%2Faccount%2Fservice_DefaultInit.do&sysCode=19101&trandId=&acceptAccountTypeList=&passwdType=&user%2ForgID=&user%2Fshortnumber=&imgFlag=0&user%2FloginUserType=2000004&user%2FareaCode=00&user%2FloginPwdType=01&user%2Fnumber="&$Number&"&hciPasswordTypeuser%2Fpassword="&$Pass&"&sRand=1234&vCode=&x=0&y=0"
        $rContext=_WinHTTP_GetRespond($MyOpen,"http://uam.hn.ct10000.com/LoginIn",1 + 2 + 4 + 8,50000,$sDataToSend,"","Content-Type: application/x-www-form-urlencoded")        
        If @error Then Return MsgBox(0,"Error","登录失败")
        _ArrayDisplay($rContext)
        MsgBox(64,"",$rContext[4])
发表于 2011-12-2 00:07:41 | 显示全部楼层
回复 3# .個朲綉√

你的方法不对,现在的代码服务器确实是返回200状态码的,请仔细模拟浏览器的每一个请求,以便服务器接受POST数据。
 楼主| 发表于 2011-12-2 00:14:34 | 显示全部楼层
本帖最后由 .個朲綉√ 于 2011-12-2 00:17 编辑

回复 4# republican


    可能是用xmlhttp太简单了,你的UDF我怎么都参不透,我感觉写法也没有错啊,我现在一直是在按xmlhttp的思路在用你的UDF,不知道问题到底出在哪了...

   或许应该是要先get一次,然后再继续post操作吧,只有反复的试...

    我用xmlhttp获取的验证码,然后识别出来,能否直接用你的UDF调用呢???因为不知道怎么用你的UDF获取验证码...
 楼主| 发表于 2011-12-13 09:25:34 | 显示全部楼层
本帖最后由 .個朲綉√ 于 2011-12-13 09:29 编辑


#include<Winhttp_GetRespond.au3>
$i = _WinHTTP_GetRespond($MyOpen,"http://uam.hn.ct10000.com/LoginIn",8)
_WinHTTP_GetRespond($MyOpen,$i[4],8)

后面的标志8代表禁用重定向,也就是我1楼说的Location,返回的数组4就是我们需要的Location

标志介绍:
标志0或不写,默认为get
标志1,为post操作
标志2,为服务器返回的内容
标志4,为返回完整的Header
标志可以相加,1+2+4+8就是post返回Header、服务器返回的内容,并且禁用重定向!!

更详尽的介绍及例程,可以围观republican前辈的UDF:http://www.autoitx.com/forum.php ... &from=favorites
发表于 2012-12-27 15:21:50 | 显示全部楼层
哦哦。。围观一下了。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-18 08:18 , Processed in 0.083791 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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