gpt4 book ai didi

c# 屏幕抓取并获取所有 cookie 以安全访问网站

转载 作者:太空宇宙 更新时间:2023-11-03 16:11:45 28 4
gpt4 key购买 nike

我正在尝试通过 C# 程序访问网站。访问该网站似乎需要三个 cookie,但我的 cookie 容器中只收到两个,因此当我尝试访问该网站的其他部分时,我无法访问。我首先执行 GET,然后执行 POST。我之所以以这种方式编程,是因为从 Chrome 开发工具来看,我确定它首先使用 GET 获取前两个,然后使用 POST 登录并获取第三个。 POST 显示 302 Moved Temporarily,然后是重定向。我认为这是我无法获得最后一个 cookie 的原因,任何人都可以解释一下吗?

                 cookieJar = new CookieContainer();
string formParams = string.Format("USERNAME={0}&PASSWORD={1}", username, password);

Console.Write(" \n 1st count before anything : " + cookieJar.Count + "\n"); // 0 cookies
//First go to the login page to obtain cookies
HttpWebRequest loginRequest = (HttpWebRequest)HttpWebRequest.Create("https://server.com/login/login.jsp");

loginRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
//.Connection = "keep-alive";
loginRequest.Method = "GET";
loginRequest.UseDefaultCredentials = true;
loginRequest.CookieContainer = cookieJar;
loginRequest.AllowAutoRedirect = false;



HttpWebResponse loginResponse = (HttpWebResponse)loginRequest.GetResponse();
Console.Write(" \n 2nd count after first response : " + cookieJar.Count + "\n"); // Only 2 are recorded.

//Create another request to actually log into website
HttpWebRequest doLogin = (HttpWebRequest)HttpWebRequest.Create("https://server.com/login/login.jsp");

doLogin.Method = "POST";
doLogin.ContentType = "application/x-www-form-urlencoded";
doLogin.AllowAutoRedirect = false;
byte[] bytes = Encoding.ASCII.GetBytes(formParams);
doLogin.ContentLength = bytes.Length;
using (Stream os = doLogin.GetRequestStream())
{
os.Write(bytes, 0, bytes.Length);
}
oLogin.CookieContainer = cookieJar;
doLogin.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36";
doLogin.Referer = "https://server.com/login/login.jsp";

HttpWebResponse Response = (HttpWebResponse)doLogin.GetResponse();

Console.Write("\n 第二次响应后的第三次计数:"+ cookieJar.Count + "\n");//还是两个

最佳答案

HttpWebRequest 的 cookie 有问题。

问题是分配给“server.com”的 cookie 将更改为“.server.com”。但是,“server.com”与“.server.com”不匹配。

如果您使用的框架早于(我认为是 3),您可能遇到了这个问题。

解决方法是使用例如您请求中的“www.server.com”,这将匹配分配给“.server.com”的 cookie。

关于c# 屏幕抓取并获取所有 cookie 以安全访问网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17176768/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com