Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我想爬网的网站,需要认证和;安全证书_C#_Asp.net Mvc - Fatal编程技术网

C# 我想爬网的网站,需要认证和;安全证书

C# 我想爬网的网站,需要认证和;安全证书,c#,asp.net-mvc,C#,Asp.net Mvc,我想抓取需要身份验证的网站。身份验证后,我移动到启用安全证书的新页面。创建SSL连接后,它返回的响应对于爬网来说是不完整的 总结: 我使用凭据在登录页面成功登录,之后我创建了另一个受SSL保护的页面的请求。因此,我可以在安装证书时检索页面。它返回的响应不完整。谢谢,请帮帮我好吗 public async Task<ActionResult> TestWebsite() { string loginUrl = "http://www.example.com/login";

我想抓取需要身份验证的网站。身份验证后,我移动到启用安全证书的新页面。创建SSL连接后,它返回的响应对于爬网来说是不完整的

总结: 我使用凭据在登录页面成功登录,之后我创建了另一个受SSL保护的页面的请求。因此,我可以在安装证书时检索页面。它返回的响应不完整。谢谢,请帮帮我好吗

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();
单据加载(结果);
}
返回视图();
}
捕获(例外情况除外)
{
投掷;
}
返回视图();
}

你的问题看起来更像是一个答案,而不是一个问题。事实上,我非常接近结果。这就是为什么?你的问题看起来更像是一个答案而不是一个问题。事实上,我非常接近结果。这就是为什么?