使用WebBrowser cookie的c#WebRequest
我使用WebBrowser登录到一个站点,然后我想使用正则表达式获取一些数据,但webRequest没有使用web浏览cookie 我的网络浏览器在公共场合,使用WebBrowser cookie的c#WebRequest,c#,browser,webrequest,C#,Browser,Webrequest,我使用WebBrowser登录到一个站点,然后我想使用正则表达式获取一些数据,但webRequest没有使用web浏览cookie 我的网络浏览器在公共场合, 有没有办法在webRequest中使用WebBrowser cookie?您可以在webRequest中使用CookieContainer web_cookies = new CookieContainer(); // Create a 'WebRequest' object with the specified url.
有没有办法在webRequest中使用WebBrowser cookie?您可以在webRequest中使用CookieContainer
web_cookies = new CookieContainer();
// Create a 'WebRequest' object with the specified url.
HttpWebRequest myWebRequest = (HttpWebRequest)WebRequest.Create(url);
myWebRequest.CookieContainer = web_cookies;
希望这有帮助
好的,您要登录。这是另一回事。您可以为此使用NetworkCredential
public string get_secure_webpage(string url, string username, string password)
{
WebRequest myWebRequest = WebRequest.Create(url);
NetworkCredential networkCredential = new NetworkCredential(username, password);
myWebRequest.Credentials = networkCredential;
这将适用于大多数站点,但是使用子域的站点可能会出现问题 这是silverlight吗?
如果是这样的话,因为silverlight 3如果您使用浏览器网络堆栈,那么您应该免费获得cookies。默认情况下,使用WebRequest.create()方法创建n HttpWebrequest时,将获得浏览器堆栈。注意:如果您使用CreateHTTP方法,您将获得一个客户端堆栈,默认情况下,该堆栈不包括浏览器cookie(如前所述,您必须进行欺骗才能获得它们)
请参阅silverlight中的网络堆栈,因为版本3非常简单,我想使用它获取新闻:)但是站点受登录页面保护,因此这种方式最容易登录:)我不确定您想要做什么。也许这个页面会有帮助:实际上,大多数网站使用cookies进行身份验证而不是HTTP身份验证,所以使用networkCredential不会有帮助。附加cookie容器将工作,只要它得到IE cookie;如果没有,PInvoke to InternetGetCookie()此解决方案似乎不再有效,因为Cookie使用了“httponly”修饰符。您可以通过InternetGetCookieEx访问HttpOnly Cookie
public CookieContainer GetCookieContainer()
{
CookieContainer container = new CookieContainer();
foreach (string cookie in webBrowser1.Document.Cookie.Split(';'))
{
string name = cookie.Split('=')[0];
string value = cookie.Substring(name.Length + 1);
string path = "/";
string domain = ".google.com"; //change to your domain name
container.Add(new Cookie(name.Trim(), value.Trim(), path, domain));
}
return container;
}