C#使用 WebRequest 异步获取网页并自动忽略SSL证书
C#使用 WebRequest 模拟浏览器请求访问网页并自动忽略HTTPS安全证书
以下两个C#异步方法,封装了WebRequest请求,支持忽略SSL证书。
作者:张赐荣
1.Get请求
public static Task<string> HTTP_Get(string URL, string[] headers = null) // HTTP Get 请求
{
Task<string> ts = Task.Run(() => {
System.Net.HttpWebRequest hwr = System.Net.HttpWebRequest.Create(URL) as System.Net.HttpWebRequest;
hwr.Proxy = null;
hwr.Method = "GET";
hwr.UserAgent = @"Mozilla/5.0 (Windows NT 10.0; Win64; x64; Trident/7.0; MSIE/11.0; rv:11.0;) like Gecko";
hwr.Referer = URL;
hwr.ServerCertificateValidationCallback = (_s, _x509s, _x509c, _ssl) => { return (true); };
try
{
if (headers != null)
{
foreach (var item in headers)
{
hwr.Headers.Add(item);
}
}
using (System.IO.StreamReader sr = new System.IO.StreamReader(hwr.GetResponseAsync().Result.GetResponseStream()))
{
return (sr.ReadToEnd());
}
}
catch (Exception ex)
{
Program.Log(ex.ToString());
return ("");
}
});
return (ts);
}
2.Post 请求:
public static Task<string> HTTP_Post(string URL, string Data, string[] headers = null) // HTTP Post 请求
{
Task<string> ts = Task.Run(() => {
System.Net.HttpWebRequest hwr = System.Net.HttpWebRequest.Create(URL) as System.Net.HttpWebRequest;
hwr.Method = "POST";
hwr.Proxy = null;
hwr.ContentType = "application/x-www-form-urlencoded";
hwr.UserAgent = @"Mozilla/5.0 (Windows NT 10.0; Win64; x64; Trident/7.0; MSIE/11.0; rv:11.0;) like Gecko";
hwr.ServerCertificateValidationCallback = (_s, _x509s, _x509c, _ssl) => { return (true); };
try
{
if (headers != null)
{
foreach (var item in headers)
{
hwr.Headers.Add(item);
}
}
byte[] tmp = Encoding.GetEncoding("UTF-8").GetBytes(Data);
hwr.GetRequestStream().WriteAsync(tmp, 0, tmp.Length);
using (System.IO.StreamReader sr = new System.IO.StreamReader(hwr.GetResponseAsync().Result.GetResponseStream()))
{
return (sr.ReadToEnd());
}
}
catch (Exception ex)
{
Program.Log(ex.ToString());
return ("");
}
});
return (ts);
}
参考:
WebRequest 文档:
https://docs.microsoft.com/zh-cn/dotnet/api/system.net.webrequest?redirectedfrom=MSDN&view=net-6.0
C#使用 WebRequest 异步获取网页并自动忽略SSL证书的更多相关文章
- ubuntu 下获取Let's Encrypt免费ssl证书
# ubuntu 下获取Let's Encrypt免费ssl证书 # 一.安装Nginx https://www.cnblogs.com/watermeloncode/p/15476317.html ...
- Python: PySide(Qt)异步获取网页源码
学习PyQt UI编程笔记.相对PyQt来说,PySide资料为少. 此篇记录异步获取代码后,同步显示于界面窗体中,涉及线程网步,此为知识点. 直录代码: # encoding: utf-8 from ...
- Nginx 通过 certbot 为网站自动配置 SSL 证书并续期
一.背景知识 1.1.http 和 https 是什么? 简单来说,http 是一个传输网页内容的协议,比如你看到的 http 开头的网站 http://www.163.com ,其网页上的文字.图片 ...
- C++ 与 php 的交互 之----- C++ 异步获取 网页文字内容,异步获取 php 的 echo 值。
已搬迁至 http://www.cnblogs.com/linguanh/p/4543836.html
- Docker Compose + Traefik v2 快速安装, 自动申请SSL证书 http转https 初次尝试
前言 昨晚闲得无聊睡不着觉,拿起服务器尝试部署了一下Docker + Traefik v2.1.6 ,以下是一些配置的总结,初次接触,大佬勿喷. 我的系统环境是 Ubuntu 18.04.3 LTS ...
- 在Docker上部署自动更新ssl证书的nginx + .NET CORE
突发奇想要搞一个ssl的服务器,然后我就打起了docker的主意,想着能不能搞一个基于Docker的服务器,这样维护起来也方便一点. 设想 想法是满足这么几点: .NET CORE on Docker ...
- 利用SSL For Free工具3分钟获取Let's Encrypt免费SSL证书
https://www.sslforfree.com/
- c#利用WebClient和WebRequest获取网页源代码的比较
前几天举例分析了用asp+xmlhttp获取网页源代码的方法,但c#中一般是可以利用WebClient类和WebRequest类获取网页源代码.下面分别说明这两种方法的实现. WebClient类获取 ...
- c#利用WebClient和WebRequest获取网页源代码
C#中一般是可以利用WebClient类和WebRequest类获取网页源代码.下面分别说明这两种方法的实现. WebClient类获取网页源代码 WebClient类 WebClient ...
随机推荐
- windows更改pip源(可用)
中国科学技术大学 : https://pypi.mirrors.ustc.edu.cn/simple 清华:https://pypi.tuna.tsinghua.edu.cn/simple 豆瓣:ht ...
- Linux上天之路(十六)之Shell编程一
用户在命令行输入命令后,一般情况下Shell会fork并exec该命令,但是Shell的内建命令例外,执行内建命令相当于调用Shell进程中的一个函数,并不创建新的进程.以前学过的cd.alias.u ...
- Mybatis实现分包定义数据库
Mybatis实现分包定义数据库 背景 业务需求中需要连接两个数据库处理数据,需要用动态数据源.通过了解mybatis的框架,计划 使用分包的方式进行数据源的区分. 原理 前提: 我们使用mybati ...
- 对飞猪H5端API接口sign签名逆向实验
免责声明 本文章所提到的技术仅用于学习用途,禁止使用本文章的任何技术进行发起网络攻击.非法利用等网络犯罪行为,一切信息禁止用于任何非法用途.若读者利用文章所提到的技术实施违法犯罪行为,其责任一概由读者 ...
- python极简教程08:对象的方法
测试奇谭,BUG不见. 讲解之前,我先说说我的教程和网上其他教程的区别: 1 我分享的是我在工作中高频使用的场景,是精华内容: 2 我分享的是学习方法,亦或说,是指明你该学哪些.该重点掌握哪些内容: ...
- 字符串工具类ToStringBuilder常用方法介绍
一.简介与引入 1.ToStringBuilder.HashCodeBuilder.EqualsBuilder.ToStringStyle.ReflectionToStringBuilder.Co ...
- Android开发-页面绘制
今天主要绘制了记账页面 记账页面用到的布局是TableLayout加Viewpager联动的方式,通过设置一个标题头可以实现页面的左右滑动,viewpager中添加两个fragment. 需要制作两个 ...
- 码风QwQ
注:卡常.压行时怎么有效怎么来QwQ 快读真香.( 不喜欢用字符数组,使用string. 此时cin cout输入前会加这样三句以优化: ios::sync_with_stdio(0); cin.ti ...
- 使用Xamarin开发移动应用示例——数独游戏(五)保存游戏进度
项目代码可以从Github下载:https://github.com/zhenl/ZL.Shudu .代码随项目进度更新. 保存进度是移动应用的基本功能,在应用的使用过程中会有各种各样的可能导致使用中 ...
- Redis下载安装与配置(windows)
一.Redis下载 Redis官网建议使用Linux进行部署,未提供windows版本的Redis,但微软开发和维护着Windows64版本的Redis. Windows64版本的Redis下载地址: ...