C# 如何使用C登录特定网站#

C# 如何使用C登录特定网站#,c#,httpwebrequest,C#,Httpwebrequest,我想通过C#登录到这个特定的网站:并在登录后阅读带有HtmlAgilityPack的页面,这些页面只有在登录后才可用 我知道有很多关于这个主题的文章——我读了很多关于如何登录网站的文章,但也读到没有标准的解决方案。因此,我认为我不想让它工作起来,但是如果您不是专业人士或者不了解单个步骤的细节,那么根据具体需要调整一些代码示例/代码行有时是非常困难的。我还阅读了关于fiddler的文章,以获得更多真正需要的信息,但我也刚刚开始使用这个工具,所以也不是专业人士 我用fiddler发现,当我手动登录页

我想通过C#登录到这个特定的网站:并在登录后阅读带有HtmlAgilityPack的页面,这些页面只有在登录后才可用

我知道有很多关于这个主题的文章——我读了很多关于如何登录网站的文章,但也读到没有标准的解决方案。因此,我认为我不想让它工作起来,但是如果您不是专业人士或者不了解单个步骤的细节,那么根据具体需要调整一些代码示例/代码行有时是非常困难的。我还阅读了关于fiddler的文章,以获得更多真正需要的信息,但我也刚刚开始使用这个工具,所以也不是专业人士

我用fiddler发现,当我手动登录页面时,POST请求如下所示:

POST https://login.tagesanzeiger.ch/api/user/loginticket?referrer= HTTP/1.1
Host: login.tagesanzeiger.ch
Connection: keep-alive
Content-Length: 86
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36
Content-Type: application/json
Accept: */*
Origin: https://login.tagesanzeiger.ch
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://login.tagesanzeiger.ch/
Accept-Encoding: gzip, deflate, br
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: _gcl_au=1.1.193175135.1600957983; creid=1678726120923237102; _ga=GA1.2.400865934.1600957984; _gid=GA1.2.1248943969.1600957985; __gads=ID=b21d9dfc7cdec251:T=1600957986:S=ALNI_MYA14LT6K0GkEDZ_Jb0rEBLnjsXkQ; _fbp=fb.1.1600957984972.1679708805; _hjid=b6dde1c9-e473-48ab-9cb7-0af73a07b9cb; plumbr_user_tracker=0b78c6f7-4d86-630c-61f2-3640d0c064c5; _parsely_visitor={%22id%22:%22pid=261f74426177e1f3591b73fb006c3696%22%2C%22session_count%22:3%2C%22last_session_ts%22:1600976611448}; plumbr_session_tracker_7skyp0=4dae59d4-44c4-90f7-606a-643effd21d8d|1601045450946

{"login":"username","password":"password","serviceId":"tagesanzeiger"}
我看到内容类型是application/json

因此,目前我的代码如下所示:

试试看
{
CookieContainer cc=新CookieContainer();
var httpWebRequest=(httpWebRequest)WebRequest.Create(“https://login.tagesanzeiger.ch/api/user/loginticket?referrer=");
httpWebRequest.ContentType=“应用程序/json”;
httpWebRequest.Method=“POST”;
httpWebRequest.CookieContainer=cc;
使用(var streamWriter=new System.IO.streamWriter(httpWebRequest.GetRequestStream()))
{
string json=new JavaScriptSerializer().Serialize(新
{
login=“username”,
password=“password”,
serviceId=“Tagesanzeiger”
});
streamWriter.Write(json);
}
var httpResponse=(HttpWebResponse)httpWebRequest.GetResponse();
使用(var streamReader=new System.IO.streamReader(httpResponse.GetResponseStream())
{
var result=streamReader.ReadToEnd();
}
}
捕获(例外e)
{
控制台写入线(e);
}
但我总是被授权。 在fiddler中,我的POST命令通过代码如下所示:

POST https://login.tagesanzeiger.ch/api/user/loginticket?referrer= HTTP/1.1
Content-Type: application/json
Host: login.tagesanzeiger.ch
Content-Length: 101
Expect: 100-continue
Connection: Keep-Alive

{"login":"username","password":"password","serviceId":"Tagesanzeiger"}

所以我的问题是:如何调整代码来创建正确的POST命令? 我的登录后页面(HttpWebRequestURL)是真的还是真的

contentType应该是正确的,带有“application/json”-在我看到的其他帖子中总是“application/x-www-form-urlencoded”

如果我让登录工作-如何在登录页面后读取需要登录过程的多个页面的代码?饼干可以用吗?还是我必须登录我想阅读的每一页

谢谢你的帮助