【问题标题】:Have WinInet share sessions/cookies with Internet Explorer让 WinInet 与 Internet Explorer 共享会话/cookie
【发布时间】:2013-02-04 13:25:32
【问题描述】:

我想要的是以下内容:

1) 使用 Internet Explorer 登录页面

2) 让我的使用 WinInet API 抓取网站的软件重用相同的 cookie/会话(即,让抓取工具“登录”)

我自己尝试使用 INDY 构建登录,虽然会话 cookie 登录效果很好,但现在许多网站使用更复杂的登录机制,将客户端和服务器端的东西结合起来进行初始登录。

...

我相信的原因,例如WordPress、ASP.Net 等使用客户端/AJAX 的东西以及哈希/时间/用户代理代码/检查和类似的东西,是因为我可以在 30 秒后从我自己的爬虫程序发送完全相同的 HTTP 标头,例如登录时使用了 FireFox,但它不起作用。

(将此与基于会话 cookie 的正常登录进行比较,我自己的爬虫程序可以正常登录。)

【问题讨论】:

  • Internet Explorer 在内部使用 WinInet,因此它已经与其他基于 WinInet 的应用程序共享所有内容。
  • 我也希望如此。但是,如果您在 WordPress 上使用 IE 登录,然后使用 WinInet,它似乎不再登录。如果您说的是真的,我怀疑原因可能是 WordPress 检测到用户代理更改或类似情况?
  • 很可能是因为您正在做的事情也可能被恶意软件完成以控制帐户或您正在访问的任何内容。
  • 显然 WinInet 在每个进程基础上处理 cookie:stackoverflow.com/questions/443567/…
  • 我从未测试过它。如果您可以通过 InternetGetCookie/Ex 获得ASP.NET_SessionId,您也许可以通过 InternetSetCookie/Ex 在您的 WinInet 请求中设置它。 (对于 HttpOnly cookie 使用 INTERNET_COOKIE_HTTPONLY 标志)。试试看... :)

标签: delphi cookies wininet


【解决方案1】:

IE 似乎默认不共享“Internet cookie”。在工具 > 互联网选项 > 安全中,有不同的区域。 Internet 区域默认启用保护模式,您无法使用 Wininet API 访问此 cookie。但是,本地 Intranet 区域默认未启用保护模式,因此您可以使用 Wininet API 访问此 cookie。

保护模式 cookie 存储在 %appdata%\Microsoft\Windows\Cookies\Low 中,非保护模式 cookie 存储在 %appdata%\Microsoft\Windows\Cookies强>.

要修复您的软件,请取消选中 Internet 区域中的启用保护模式,重新启动 IE 并在您的网站上再次登录以获取 cookie。

【讨论】:

  • 今天晚些时候我要试试这个
  • 这似乎不适用于我测试过的 WordPress 网站。如果我找到/获得更多信息,我会回来
猜你喜欢
  • 2011-09-12
  • 1970-01-01
  • 2023-03-06
  • 2011-01-27
  • 1970-01-01
  • 2016-09-24
  • 2015-04-10
  • 2012-11-01
  • 2020-02-25
相关资源
最近更新 更多