.net core使用HttpClient发送代理请求_程序内抓包_Fiddler抓包
前言:? 通过Fiddler抓取浏览器请求数据,相信大家已经都会用了,我们知道Fiddler是通过在本机计算器添加一个默认的代理服务器来实现的抓包数据的,端口号为:8888。 其实当我们打开Fiddler的设置也可以看到: ? ? ?然后查看本地计算器的网络代理设置: ? ? ? 基于上面的原理,Fiddler就实现了经过本机计算器请求的数据抓包了。。。 ? 那么,我们通过C#代码,在.net Core中使用HttpClient发送的请求,是不是也能被Fiddler抓包呢???? ? 实际上默认情况是抓不到的,但是微软给我们预留了一个可以配置请求代理服务器的口子,我们可以通过这个口子,来设置程序的代理服务器, 将代理服务器设置为本机:127.0.0.1,端口号设置为:8888,这样就可以被Fiddler抓包了。? 通过程序内抓包呢,我们能监控到我们发送的数据包,请求头,Cookie,票据等等到底是什么样的,就能分析出一些问题所在。 下面就贴出本人在.net Core3.0的框架下,测试使用程序内抓包的代码: ? 1-自定义代理类: /// <summary> /// 我的代理类 </summary> public class MyProxy : IWebProxy { //代理的地址 public MyProxy(Uri proxyUri) { //设置代理请求的票据 credentials = new NetworkCredential("用户名",密码"); ProxyUri = proxyUri; } private NetworkCredential credentials; Uri ProxyUri; public ICredentials Credentials { get => credentials; set => throw new NotImplementedException(); } 获取代理地址 Uri GetProxy(Uri destination) { return ProxyUri; your proxy Uri } 主机host是否绕过代理服务器,设置false即可 bool IsBypassed(Uri host) { return false; } ? 2-使用代理发送请求: MyProxy myProxy = new MyProxy(new Uri(http://127.0.0.1:8888)); var httpClientHandler = new HttpClientHandler() { Proxy = myProxy }; var httpClient = HttpClient(httpClientHandler); HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Post,1)">https://www.baidu1.com); httpClient.SendAsync(httpRequestMessage); ? 3-Copy2-也可以使用.net core中的注入客户端的方法为特定命名下的客户端统一默认添加代理: ? 命名客户端注入 services.AddHttpClient(domainServiceClient").ConfigurePrimaryHttpMessageHandler(() => { HttpClientHandler() { AllowAutoRedirect = ,UseDefaultCredentials = true"http://127.0.0.1:8888)) }; }); 构造函数使用,使用的名称需与命名保持一致 public HttpClient HttpClient = null; DomainMappingMiddleware(IHttpClientFactory clientFactory) { this.HttpClient = clientFactory.CreateClient(); } ? ? 最后查看Fiddler的监控请求,可以看到我们已经抓到了请求域名为:www.baidu1.com的程序内的请求了(模拟程序内代理请求成功): ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET (C#) 应用篇-数据列分页操作-01_Adapter_Fill
- asp.net-mvc-4 – @ Html.Raw坚持编码引号
- asp.net – 找不到ID为“xxx”的UpdatePanel.如果它正在动态
- asp.net-mvc – 使用ASP.NET会员资格和配置文件与MVC,如何创
- asp.net-mvc – 在WCF项目中设置Web API
- asp.net – 你可以添加一个HtmlGenericControl的子控件吗?
- 在asp.net中验证字符串是否为json
- ASP.NET MVC通过ActionLink传递模型
- 利用EntLib授权机制实现对ASP.NET页面的自动授权
- ASP.NET C# 实现钉钉签名算法
- ASP.NET MVC Web应用程序中视图逻辑和域逻辑之间
- asp.net – 使用Roslyn动态编译控制器
- API身份验证的最佳实践是什么?
- asp.net-mvc – 在数据实体框架中显示名称
- asp.net – Linq对sql对象是否可序列化为会话状态
- Asp.Net上传前检查文件大小
- asp.net-mvc – 从基本控制器继承LINQ-to-SQL数据
- asp.net-mvc-4 – 为什么MVC4 @ Styles.Render()
- asp.net – ClientScriptManager.GetPostBackEve
- ASP.Net CMS推荐,果园,Sitefinity,Umbraco或N2?