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

[IE类操作] 同一个IE窗口,$Obj.cookie 得到的Cookie 比httpwatch里看到的要少,为什么,何解?

[复制链接]
发表于 2017-3-12 11:20:21 | 显示全部楼层 |阅读模式
本帖最后由 fenhanxue 于 2017-3-12 14:47 编辑
#include <IE.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ARRAY.AU3>
#include <WinAPI.au3>
$Form1 = GUICreate("Form1", 623, 600, 192, 114)
$ieobj = _IECreateEmbedded()
GUICtrlCreateObj($ieobj, 0, 0, 617, 393)
_IENavigate($ieobj, "https://passport.yhd.com/passport/login_input.do?")
$Ele = _IEGetObjById($ieobj,"un")
_IEFormElementSetValue($Ele,"13078480989")
$Ele = _IEGetObjById($ieobj,"pwd")
_IEFormElementSetValue($Ele,"9zuzz4yk9")
;账号:13078480989        密码:9zuzz4yk9

$Edit1 = GUICtrlCreateEdit("", 0, 400, 617, 140, $WS_VSCROLL)
$button = GUICtrlCreateButton("提交", 270, 560, 80, 30)
GUISetState(@SW_SHOW)
 
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $button
                        getjson()
        EndSwitch
        $cookies = _IEDocGetObj($ieobj).cookie
        If GUICtrlRead($Edit1) <> $cookies Then GUICtrlSetData($Edit1, $cookies)
WEnd
Func getjson()
        Global $INTERNET_COOKIE_HTTPONLY = 8192 ;Requires IE 8 or higher
        Global $INTERNET_COOKIE_THIRD_PARTY = 131072
        Global $INTERNET_FLAG_RESTRICTED_ZONE = 16
        Global $sUrl = _IEPropertyGet($ieobj ,"locationurl")
        Global $sCookieName = 'ut'
        Global $tSize = DllStructCreate("dword[10000]")
        Global $tBuffer = DllStructCreate('char[10000]')
        Global $getcookies = DllCall("wininet.dll", _
                        "bool", "InternetGetCookieExW", _
                        'wstr', $sUrl, _
                        'wstr', $sCookieName, _
                        "ptr", DllStructGetPtr($tBuffer), _
                        "ptr", DllStructGetPtr($tSize), _
                        "dword", $INTERNET_COOKIE_HTTPONLY, _
                        "ptr", Null _
                        )
        If Not _WinAPI_GetLastError() Then ConsoleWrite(DllStructGetData($tBuffer, 1) & @CRLF)
        ConsoleWrite(_WinAPI_GetLastError() & @CRLF)
        _ArrayDisplay($getcookies)
EndFunc   ;==>getjson
以一号店登陆为例,一号店登陆之后,用httpwatch  , 能看到有下面这个叫做 ut  的cookie
但是用_IEDocGetObj($ieobj).cookie  却得到不这个  ut
不知是为什么,如何才能获取到?



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2017-3-12 13:08:32 | 显示全部楼层
比如在这个页面:
http://cart.yhd.com/cart/cart.do?action=view

httpwatch 可以看到有 ut  这个cookie
但是用$Cookie = $Obj.cookie  得到的结果里面,却没有   ut
发表于 2017-3-13 00:18:31 | 显示全部楼层
发表于 2017-3-13 00:20:02 | 显示全部楼层
HttpOnly属性的COOKIE好像用对象无法获取到的
发表于 2017-3-13 08:46:04 | 显示全部楼层
楼上正解,基本很难获取。
发表于 2017-3-13 11:07:33 | 显示全部楼层
;账号:13078480989        密码:9zuzz4yk9
你不要发出来啊。。帐号安全问题
 楼主| 发表于 2017-3-13 12:04:33 | 显示全部楼层
heavenm 发表于 2017-3-13 00:18



    上面的源码就是参考这个帖子里来的,可惜获取不到,也不知道如何是好
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-22 11:00 , Processed in 0.088926 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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