C# HttpWebRequest使用Cookie重定向

C# HttpWebRequest使用Cookie重定向,c#,asp.net-4.0,C#,Asp.net 4.0,我知道有人问了很多关于HttpWebRequest的问题。然而,我找不到任何解决我的问题的答案 我需要模仿浏览器重定向URL的方式。我的代码工作正常,但不适用于以下URL: 我的代码: sURL = "http://ad2.adfarm1.adition.com/redi*lid=689397953768/sid=404178/kid=253598/bid=847344/c=33349/keyword=/sr=0/clickurl=&ClickTarget=_blank&"; C

我知道有人问了很多关于HttpWebRequest的问题。然而,我找不到任何解决我的问题的答案

我需要模仿浏览器重定向URL的方式。我的代码工作正常,但不适用于以下URL:

我的代码:

sURL = "http://ad2.adfarm1.adition.com/redi*lid=689397953768/sid=404178/kid=253598/bid=847344/c=33349/keyword=/sr=0/clickurl=&ClickTarget=_blank&";
CookieContainer oCookies = new CookieContainer();
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(sURL);
myHttpWebRequest.CookieContainer = oCookies;
myHttpWebRequest.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)";    
myHttpWebRequest.Accept = "text/html, application/xhtml+xml, */*";
myHttpWebRequest.Headers["Accept-Language"] = "en-GB";
myHttpWebRequest.Headers["Accept-Encoding"] = "gzip, deflate";

HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
sNewURL = myHttpWebResponse.GetResponseHeader("Location");
IE的小提琴手,请求:

GET http://ad2.adfarm1.adition.com/redi*lid=689397953768/sid=404178/kid=253598/bid=847344/c=33349/keyword=/sr=0/clickurl=&ClickTarget=_blank& HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: en-GB
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: ad2.adfarm1.adition.com
Cookie: fc3=101c3; co=1; UserID1=19177152736; lv_248940=w=470167|t=1321974830; lv_249431=w=125082|t=1321974853; lc_253598=w=404178|t=1321977996
GET http://ad2.adfarm1.adition.com/redi*lid=689397953768/sid=404178/kid=253598/bid=847344/c=33349/keyword=/sr=0/clickurl=&ClickTarget=_blank& HTTP/1.1
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Accept: text/html, application/xhtml+xml, */*
Accept-Language: en-GB
Accept-Encoding: gzip, deflate
Host: ad2.adfarm1.adition.com
Connection: Keep-Alive
按代码排列的小提琴手,请求:

GET http://ad2.adfarm1.adition.com/redi*lid=689397953768/sid=404178/kid=253598/bid=847344/c=33349/keyword=/sr=0/clickurl=&ClickTarget=_blank& HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: en-GB
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: ad2.adfarm1.adition.com
Cookie: fc3=101c3; co=1; UserID1=19177152736; lv_248940=w=470167|t=1321974830; lv_249431=w=125082|t=1321974853; lc_253598=w=404178|t=1321977996
GET http://ad2.adfarm1.adition.com/redi*lid=689397953768/sid=404178/kid=253598/bid=847344/c=33349/keyword=/sr=0/clickurl=&ClickTarget=_blank& HTTP/1.1
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Accept: text/html, application/xhtml+xml, */*
Accept-Language: en-GB
Accept-Encoding: gzip, deflate
Host: ad2.adfarm1.adition.com
Connection: Keep-Alive
IE的小提琴手,回应:

HTTP/1.1 302 Found
Server: ADITIONSERVER v1.0
Date: Tue, 22 Nov 2011 17:37:39 +0100
Connection: close
Content-Type: text/plain
Location: &ClickTarget=_blank&
P3P: policyref="http://imagesrv.adition.com/w3c/p3p.xml",CP="NOI DSP COR NID ADMo OUR NOR COM"
Set-Cookie: co=1; expires=Wed, 01-Jan-2025 00:00:00 GMT; path=/; domain=.adfarm1.adition.com
Set-Cookie: UserID1=19177152736; expires=Sun, 20-May-2012 18:37:39 GMT; path=/; domain=.adfarm1.adition.com
Set-Cookie: lc_253598=w=404178|t=1321979859; expires=Tue, 22-Nov-2011 18:07:39 GMT; path=/; domain=.adfarm1.adition.com
HTTP/1.1 302 Found
Server: ADITIONSERVER v1.0
Date: Tue, 22 Nov 2011 18:07:39 +0100
Connection: close
Content-Type: text/plain
Location: http://ad2.adfarm1.adition.com:80/redi?co=1&bid=847344&c=33349&keyword=&kid=253598&lid=689397953768&sid=404178&sr=0&clickurl=%26ClickTarget%3D%5Fblank%26
P3P: policyref="http://imagesrv.adition.com/w3c/p3p.xml",CP="NOI DSP COR NID ADMo OUR NOR COM"
Set-Cookie: co=1; expires=Wed, 01-Jan-2025 00:00:00 GMT; path=/; domain=.adfarm1.adition.com
按代码排列的小提琴手,响应:

HTTP/1.1 302 Found
Server: ADITIONSERVER v1.0
Date: Tue, 22 Nov 2011 17:37:39 +0100
Connection: close
Content-Type: text/plain
Location: &ClickTarget=_blank&
P3P: policyref="http://imagesrv.adition.com/w3c/p3p.xml",CP="NOI DSP COR NID ADMo OUR NOR COM"
Set-Cookie: co=1; expires=Wed, 01-Jan-2025 00:00:00 GMT; path=/; domain=.adfarm1.adition.com
Set-Cookie: UserID1=19177152736; expires=Sun, 20-May-2012 18:37:39 GMT; path=/; domain=.adfarm1.adition.com
Set-Cookie: lc_253598=w=404178|t=1321979859; expires=Tue, 22-Nov-2011 18:07:39 GMT; path=/; domain=.adfarm1.adition.com
HTTP/1.1 302 Found
Server: ADITIONSERVER v1.0
Date: Tue, 22 Nov 2011 18:07:39 +0100
Connection: close
Content-Type: text/plain
Location: http://ad2.adfarm1.adition.com:80/redi?co=1&bid=847344&c=33349&keyword=&kid=253598&lid=689397953768&sid=404178&sr=0&clickurl=%26ClickTarget%3D%5Fblank%26
P3P: policyref="http://imagesrv.adition.com/w3c/p3p.xml",CP="NOI DSP COR NID ADMo OUR NOR COM"
Set-Cookie: co=1; expires=Wed, 01-Jan-2025 00:00:00 GMT; path=/; domain=.adfarm1.adition.com
正如您所看到的,我从代码中获得的位置值与IE不同。我从Fiddler中看到的唯一区别是Cookie不是由请求发送的。但是,这些饼干是从哪里来的?我如何设置它们


非常感谢,

它在使用IE时发送的Cookie必须保存在您的会话中或您的hd中,之前的请求以设置的Cookie头响应

如果您想手动设置cookies以随初始请求一起发送,您可以执行以下操作

CookieContainer oCookies = new CookieContainer();
            CookieCollection cookieGroup = new CookieCollection();
            Cookie userId = new Cookie("UserID1","19177152736", "/", ".adfarm1.adition.com");
            cookieGroup.Add(userId);
            oCookies.Add(cookieGroup);
然后像这样将其添加到HTTPWebRequest中

myHttpWebRequest.CookieContainer = oCookies;

如果您想在任何后续请求中包含cookie,请确保将httpWebRequests CookieContainer设置为oCookies。

我认为您不需要在初始请求中设置或发送任何cookie

如果您从未访问过该URL,则不应该从中获取任何cookie

我已经通过HttpRequestObject进行了大量的网络抓取,从我的记忆中,我从来都不需要设置任何cookies

您的CookieContainer对象将从第一个响应开始填充,您将在将来的请求中使用它来维护状态

我会清除你的缓存并修改你的请求,直到它在fiddler中完全匹配

另外,根据我记忆中的情况,重定向在响应中得到了注意和捕获

当我回到家的时候,我会看一些代码,如果可以的话,我会发布更多的帮助

  • 乔恩

在尝试您的请求时,您是否确保您的IE没有任何饼干?