尝试创建可以关注DeviantArt下载按钮的程序

时间:2016-02-10 20:02:44

标签: c# http

我一直在修改一个程序,让我可以在网上批量下载图片库,因为我喜欢从视频游戏中收集艺术品等等。我一直在尝试调整它以便能够从DeviantArt下载,我让它适用于所有事情,除非我试图让它按照那里附带许多图像的下载按钮。我已经做了我能想到的所有尝试重新创建一个真实的Web请求,但到目前为止,我在响应中得到的是一个重定向回主图像页面的HTML页面。以下是我目前正在尝试的方法:

                HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(im.Groups[1].Value);
                req.MaximumAutomaticRedirections = 5;
                req.Method = "HEAD";
                req.Accept = "*/*";
                req.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36";
                req.Headers.Add("Accept-Encoding", "gzip, deflate, sdch");
                req.Headers.Add("Accept-Language", "en-US,en;q=0.8");
                req.Headers.Add("Upgrade-Insecure-Requests", "1");
                req.Referer = m.Value;
                if (!String.IsNullOrWhiteSpace(this.lastSetCookie))
                {
                    CookieContainer cc = new CookieContainer();
                    string[] cookie_sections = this.lastSetCookie.Split(';');
                    Dictionary<String, String> cookie_arge = new Dictionary<string, string>();
                    foreach(String cookie_section in cookie_sections)
                    {
                        cookie_arge.Add(cookie_section.Split('=')[0].Trim(), cookie_section.Split('=')[1].Trim());
                    }
                    cc.Add(new Uri("http://deviantart.com"), new Cookie("userinfo",cookie_arge["userinfo"]));
                }

                HttpWebResponse res = (HttpWebResponse)req.GetResponse();
                image_url = res.ResponseUri.AbsoluteUri;
                res.Close();

正如您所看到的,我创建了一个请求,确保它允许一些重定向,然后手动设置我验证的一些标题字段由常规Chrome浏览器发送。正在发送的引用是图像的主页面。下一位检查存储在请求图像页面时从服务器接收的cookie的变量,然后在新请求上设置这些cookie。 Deviantart会做一些会话魔法,因此保留cookie非常重要。然后发送请求,并返回带有javascript和元标记的HTML页面重定向回图像页面。有什么想法可以尝试吗?

0 个答案:

没有答案