【发布时间】: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 标志)。试试看... :)