1

我正在从事一个从 Amazon.co.uk 上的页面抓取内容的项目。我可以成功提交登录表单,并将 cookie 存储在 CookieContainer 中,一切正常,我已成功登录网站。但是,当我浏览到某些页面时,它似乎已注销,再次提示登录屏幕。我永远无法以编程方式访问该页面。

我想我可能会陷入此处报告的错误,该错误与 .NET 4 上带有子域的 Cookie 容器有关:https ://connect.microsoft.com/VisualStudio/feedback/details/771651/cookiecontainer-subdomain-handling-issue-in -net-4-0#

此链接上存在两种解决方法:

解决方法 #1:收到 Version=1 cookie 的响应后,将它们作为 >plain cookie 添加到新的 CookieContainer 中,然后使用这个新容器发出后续请求。

解决方法 #2:在收到父域的 Version=1 cookie 的响应后,将它们再次添加到相同的 >CookieContainer 中,现在用于子域。

我不确定我是否了解如何实现这一点,在此之前有没有人经历过可以与我分享解决方案?我正在运行.NET 4.0。

谢谢,科林。

4

1 回答 1

2

I found the solution to this was to recreate the CookieContainer with each request and modify the Version 1 Cookies to 0:

CookieContainer newCookies = new CookieContainer();
newCookies.Add(new Uri("https://www.amazon.co.uk/"), new Cookie
            {
                Name = c.Name,
                Version = 0,
                Comment = c.Comment,
                CommentUri = c.CommentUri,
                Discard = c.Discard,
                Domain = c.Domain,
                Expired = c.Expired,
                Expires = c.Expires,
                HttpOnly = c.HttpOnly,
                Path = c.Path,
                Port = c.Port,
                Secure = c.Secure,
                Value = c.Value
            });

An annoying bug that MS is refusing to fix it seems. Hope this helps someone out!

于 2014-02-19T18:00:55.357 回答