小编Rya*_*dry的帖子

从Internet Explorer检索所有cookie

我正在尝试检索与我打开的特定页面关联的所有Cookie(我已经过身份验证).有几个与网页相关的cookie,我需要检索每个cookie,以便稍后进行POST.

我尝试了几种方法,但没有人给我完整列表.到目前为止,我已经在VBA中编写了代码,但我也很喜欢它在.NET中.

获得指向IE的指针后的第一次尝试.

arraycookie = Split(ie.document.Cookie, ";")

For i = LBound(arraycookie) To UBound(arraycookie)
    Debug.Print arraycookie(i)
Next i
Run Code Online (Sandbox Code Playgroud)

这给了我一些饼干,但不是全部.我可以在开发人员工具(F12)中查看cookie,并且我确认没有cookie标记了仅HTTP标记.见下图.

没有HTTP标志

我也试过了InternetGetCookie windows API.它返回一个cookie,但只返回一个,无论名称是什么,它都是相同的(例如下面的FedAuth).

Private Sub GetCookieAttempt()
Dim sCookieVal As String * 256
Dim bRet As Boolean
bRet = InternetGetCookie("https://mywebsiteaddresshere.com", _
    "FedAuth", sCookieVal, 255)
    If bRet = False Then
        MsgBox "Failed"
    Else
        MsgBox sCookieVal
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

这只是一个猜测(任何想法我怎么能找到?),但从我读到的可能是cookie受到保护.我看了一下IEGetProtectedModeCookie API,但我无法让它返回cookie信息.

不知道为什么我可以通过开发人员工具看到这一点,但是当我尝试公开信息时,它并不会返回所有内容.

任何帮助将不胜感激 :)

谢谢!


编辑

因此,在深入研究这个问题后,我想我会尝试使用不同的浏览器访问相同的网页并再次查看Cookie详细信息.

使用Firebug我试图检索的cookie现在显示HTTPOnly标志.根据我的理解,我可以使用InternetGetCookieEx并指定INTERNET_COOKIE_HTTPONLY标志.但是我不能让它返回任何东西.

有没有人有我可以效仿的工作样本?

.net cookies vba

12
推荐指数
1
解决办法
3023
查看次数

如何处理VBA中的DLL错误?

API声明:

Private Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcA" ( _
                         ByVal lpPrevWndFunc As Long, _
                         ByVal HWnd As Long, _
                         ByVal msg As Long, _
                         ByVal wParam As Long, _
                         ByVal lParam As Long) As Long
Run Code Online (Sandbox Code Playgroud)

lpPrevWndFunc参数提供不存在的函数指针时,Excel将崩溃。

同样,

Private Declare Sub RtlMoveMemory Lib "kernel32" (ByRef Destination As LongPtr, _
                                                  ByRef Source As LongPtr, _
                                                  ByVal Length As Long)
Run Code Online (Sandbox Code Playgroud)

DestinationSource不存在时不高兴。

我认为这些错误是内存访问冲突。我假设Windows告诉调用者它正在做某件事,而它做不到1-也许它向Excel发送了一条消息,并且没有处理程序?MSDN对此有以下说法:

调用Windows动态链接库(DLL)或Macintosh代码资源期间的系统错误不会引发异常,也无法使用Visual Basic错误捕获来捕获。调用DLL函数时,应检查每个返回值是否成功(根据API规范),如果失败,请检查Err对象的LastDLLError属性中的值。在Macintosh上,LastDLLError始终返回零。 (强调我自己)

但是在这些情况下,我没有任何值可以检查错误,只是崩溃了。

1:如果它捕获的错误不是经常发生的,例如说内存重写有效但未定义,则错误可能会一直存在。但是可以肯定的是,在执行限制之前,应该捕获对受限内存的写入或调用伪指针吗?

我最感兴趣的是:

  1. 导致此崩溃的原因是什么(这是 …

error-handling excel winapi vba memory-access

12
推荐指数
1
解决办法
332
查看次数

标签 统计

vba ×2

.net ×1

cookies ×1

error-handling ×1

excel ×1

memory-access ×1

winapi ×1