Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 从Internet Explorer检索所有Cookie_.net_Vba_Cookies - Fatal编程技术网

.net 从Internet Explorer检索所有Cookie

.net 从Internet Explorer检索所有Cookie,.net,vba,cookies,.net,Vba,Cookies,我正在尝试检索与我打开的特定页面相关联的所有cookie(我已经通过身份验证)。有几个cookie与该网页相关,我需要检索每个cookie以便稍后发布文章 我尝试过几种方法,但都没有给出完整的列表。到目前为止,我已经用VBA编写了代码,但我也很满意它也在.NET中 第一次尝试,在获得指向IE的指针之后 arraycookie = Split(ie.document.Cookie, ";") For i = LBound(arraycookie) To UBound(arraycookie)

我正在尝试检索与我打开的特定页面相关联的所有cookie(我已经通过身份验证)。有几个cookie与该网页相关,我需要检索每个cookie以便稍后发布文章

我尝试过几种方法,但都没有给出完整的列表。到目前为止,我已经用VBA编写了代码,但我也很满意它也在.NET中

第一次尝试,在获得指向IE的指针之后

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

For i = LBound(arraycookie) To UBound(arraycookie)
    Debug.Print arraycookie(i)
Next i
这给了我一些饼干,但不是全部。我可以查看开发者工具(F12)中的cookie,并确认没有cookie标记了HTTP only标志。见下图

我还尝试了InternetGetCookie windows API。它返回一个cookie,但只有一个,并且无论名称是什么,它都是相同的(例如下面的FedAuth)

这只是一个猜测(你知道我是怎么发现的吗?),但从我读到的信息来看,可能是cookie受到了保护。我查看了IEGetProtectedModeCookie API,但无法让它返回cookie信息

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

任何帮助都将不胜感激:)

谢谢


编辑

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

使用Firebug,我试图检索的Cookie现在显示HTTPOnly标志。据我所知,我可以使用指定了INTERNET_COOKIE_HTTPONLY标志的InternetGetCookieEx。但是我不能让它归还任何东西


有人有我可以跟踪的工作示例吗?

尝试从
shell:cookies
文件夹检索IE cookies。以下代码作为示例:

选项显式
子GetIECookies()
暗淡的史酷基像绳子一样
作为对象的模糊oCookies
物体的暗度
作为对象的文件夹的尺寸
淡色
像字符串一样模糊的内容
将()变暗为字符串
我想我会坚持多久
迪姆艾特姆斯
Dim aCookies()
'读取IE cookie文件
sCookiesPath=CreateObject(“shell.application”).Namespace(“shell:Cookies”).self.Path
设置oCookies=CreateObject(“Scripting.Dictionary”)
Set of so=CreateObject(“Scripting.FileSystemObject”)
文件夹集=oFSO.GetFolder(ScookeSpath)
对于oFolder.Files中的每个文件
如果LCase(oFSO.GetExtensionName(oFile.Name))=“txt”,那么
使用oFile.OpenAsTextStream(1,0)'只读,ascii
sContent=.ReadAll
.结束
以
sContent=替换(sContent,vbCr,“”)
'在文件中拆分Cookie
a=拆分(内容、vbLf&“*”和vbLf)
对于i=0到UBound(a)-1
oCookies.添加oCookies.计数,a(i)
下一个
如果结束
下一个
'解析数据,重新打包到二维数组
aItems=oCookies.Items()
如果UBound(aItems)=-1,则
MsgBox“未找到Cookie”
其他的
重播音频(1到UBound(aItems)+1,1到6)
对于i=1到UBound(aItems)+1
a=拆分(aItems(i-1),vbLf)
aCookies(i,1)=a(0)
aCookies(i,2)=a(1)
aCookies(i,3)=a(2)
aCookies(i,4)=GetInetCookieFlags(a(3))
aCookies(i,5)=ConvDT(a(4),a(5))
aCookies(i,6)=ConvDT(a(6),a(7))
下一个
"产出",
使用此工作簿。工作表(1)
.Cells.Delete
.Range(“A1:F1”)=数组(“名称”、“值”、“主机/路径”、“标志”、“过期”、“已创建”)
输出范围(“A2”),aCookies
以
如果结束
端接头
函数ConvDT(sLowNTFmt作为字符串,sHighNTFmt作为字符串)作为日期
双精度dNTFmt
Dim dUnixFmt为双精度
'FILETIME format是自1601年1月1日00:00(UTC)以来的100纳秒刻度数。
dNTFmt=sHighNTFmt*4294967296#+sLowNTFmt
'Unix时间格式是自1970年1月1日00:00起的秒数
dUnixFmt=0.0000001*dNTFmt-116444473600#
'VB time format是自1900年1月1日00:00起的天数
ConvDT=CDate(dUnixFmt/86400+25569)
端函数
函数GetInetCookieFlags(sFlags作为字符串)作为字符串
时间和时间一样长
暗黄
'重置位32以避免溢出
如果sFlags>=2147483648,则lFlags=CLng(sFlags-2147483648),否则lFlags=CLng(sFlags)
'将标志位转换为字符串表示形式
使用CreateObject(“Scripting.Dictionary”)
对于数组中的每个aFlag(_
数组(&H1,“是安全的”)_
数组(&H2,“IS会话”)_
阵列(&H10,“第三方”)_
数组(&H20,“需要提示”)_
数组(&H40,“评估P3P”)_
阵列(&H80,“应用P3P”)_
阵列(&H100,“已启用P3P”)_
数组(&H200,“受限制”)_
阵列(&H400,“IE6”)_
阵列(&H800,“是传统的”)_
数组(&H1000,“非脚本”)_
阵列(&H2000,“仅HTTPONLY”)_
阵列(&H4000,“仅限主机”)_
阵列(&H8000,“仅应用主机”)_
阵列(&H20000,“限制区”)_
数组(&H20000000,“所有COOKIES”)_
数组(&H40000000,“无回调”)_
阵列(&H8000000,“第三方ECTX”)_
)
如果lFlags和aFlag(0),那么.Add.Count,aFlag(1)
下一个
GetInetCookieFlags=Join(.Items(),vbCrLf)
以
端函数
子输出(oDstRng作为范围,aCells作为变型)
使用oDstRng
.Parent.Select
使用。调整大小(_
UBound(aCells,1)-LBound(aCells,1)+1_
UBound(aCells,2)-LBound(aCells,2)+1_
)
.NumberFormat=“@”
.Value=aCells
.Columns.AutoFit
以
以
端接头
删除所有Cookie并导航到后,我的输出如下:

<
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