C# 我想爬网的网站,需要认证和;安全证书
我想抓取需要身份验证的网站。身份验证后,我移动到启用安全证书的新页面。创建SSL连接后,它返回的响应对于爬网来说是不完整的 总结: 我使用凭据在登录页面成功登录,之后我创建了另一个受SSL保护的页面的请求。因此,我可以在安装证书时检索页面。它返回的响应不完整。谢谢,请帮帮我好吗C# 我想爬网的网站,需要认证和;安全证书,c#,asp.net-mvc,C#,Asp.net Mvc,我想抓取需要身份验证的网站。身份验证后,我移动到启用安全证书的新页面。创建SSL连接后,它返回的响应对于爬网来说是不完整的 总结: 我使用凭据在登录页面成功登录,之后我创建了另一个受SSL保护的页面的请求。因此,我可以在安装证书时检索页面。它返回的响应不完整。谢谢,请帮帮我好吗 public async Task<ActionResult> TestWebsite() { string loginUrl = "http://www.example.com/login";
public async Task<ActionResult> TestWebsite()
{
string loginUrl = "http://www.example.com/login";
string uri = "~/Security_certificate.p12";
string CertPass = "00804";
string host = "https://www.example.net/ex";
CookieContainer myContainer = new CookieContainer();
Cookie cookobj = new Cookie();
var nvc = new List<KeyValuePair<string, string>>();
nvc.Add(new KeyValuePair<string, string>("Username", "user"));
nvc.Add(new KeyValuePair<string, string>("Password", "123123"));
//Getting Certificate ready
X509Certificate2Collection certificates = new X509Certificate2Collection();
certificates.Import(uri, CertPass, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet);
ServicePointManager.ServerCertificateValidationCallback = (a, b, c, d) => true;
try
{
using (var client = new HttpClient())
{
var req1 = new HttpRequestMessage(HttpMethod.Post, loginUrl) { Content = new FormUrlEncodedContent(nvc) };
var res = await client.SendAsync(req1);
var con = await res.Content.ReadAsStringAsync();
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(con);
/*RequestCrawledPage*/
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(host);
req.AllowAutoRedirect = true;
req.Method = "GET";
req.Headers.Add("cache-control", "no-cache");
req.ClientCertificates = certificates;
req.ContentType = "application/x-www-form-urlencoded";
WebResponse resp = req.GetResponse();
var result = resp.GetResponseStream();
//var resa = await client.SendAsync(req1);
//var cona = await res.Content.ReadAsStringAsync();
doc.Load(result);
}
return View();
}
catch (Exception ex)
{
throw;
}
return View();
}
public异步任务TestWebsite()
{
字符串loginUrl=”http://www.example.com/login";
字符串uri=“~/Security\u certificate.p12”;
字符串CertPass=“00804”;
字符串主机=”https://www.example.net/ex";
CookieContainer myContainer=新CookieContainer();
Cookie cookobj=新Cookie();
var nvc=新列表();
添加(新的KeyValuePair(“用户名”、“用户”));
添加(新的KeyValuePair(“密码”,“123123”));
//准备好证书
X509Certificate2Collection certificates=新的X509Certificate2Collection();
导入(uri、CertPass、X509KeystrageFlags.MachineKeySet | X509KeystrageFlags.PersistKeySet);
ServicePointManager.ServerCertificateValidationCallback=(a、b、c、d)=>true;
尝试
{
使用(var client=new HttpClient())
{
var req1=newhttprequestmessage(HttpMethod.Post,loginUrl){Content=newformurlencodedcontent(nvc)};
var res=await client.SendAsync(请求1);
var con=await res.Content.ReadAsStringAsync();
HtmlAgilityPack.HtmlDocument doc=新的HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(con);
/*请求爬网页面*/
HttpWebRequest req=(HttpWebRequest)WebRequest.Create(主机);
req.AllowAutoRedirect=真;
req.Method=“GET”;
添加(“缓存控制”、“无缓存”);
req.ClientCertificates=证书;
req.ContentType=“应用程序/x-www-form-urlencoded”;
WebResponse resp=req.GetResponse();
var result=resp.GetResponseStream();
//var resa=await client.SendAsync(请求1);
//var cona=await res.Content.ReadAsStringAsync();
单据加载(结果);
}
返回视图();
}
捕获(例外情况除外)
{
投掷;
}
返回视图();
}
你的问题看起来更像是一个答案,而不是一个问题。事实上,我非常接近结果。这就是为什么?你的问题看起来更像是一个答案而不是一个问题。事实上,我非常接近结果。这就是为什么?