.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; private Uri ProxyUri; public ICredentials Credentials { get => credentials; set => throw new NotImplementedException(); } //获取代理地址
public Uri GetProxy(Uri destination)
{
return ProxyUri; // your proxy Uri
}
//主机host是否绕过代理服务器,设置false即可
public 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 = new HttpClient(httpClientHandler);
HttpRequestMessage httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, "https://www.baidu1.com");
httpClient.SendAsync(httpRequestMessage);
3-Copy2-也可以使用.net core中的注入客户端的方法为特定命名下的客户端统一默认添加代理:
//命名客户端注入
services.AddHttpClient("domainServiceClient").ConfigurePrimaryHttpMessageHandler(() =>
{
return new HttpClientHandler()
{
AllowAutoRedirect = false,
UseDefaultCredentials = true,
Proxy = new MyProxy(new Uri("http://127.0.0.1:8888"))
};
}); //构造函数使用,使用的名称需与命名保持一致 public HttpClient HttpClient = null;
public DomainMappingMiddleware(IHttpClientFactory clientFactory)
{
this.HttpClient = clientFactory.CreateClient("domainServiceClient");
}
最后查看Fiddler的监控请求,可以看到我们已经抓到了请求域名为:www.baidu1.com的程序内的请求了(模拟程序内代理请求成功):

.net core使用HttpClient发送代理请求_程序内抓包_Fiddler抓包的更多相关文章
- Android系列之网络(三)----使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- 【JAVA】通过HttpClient发送HTTP请求的方法
HttpClient介绍 HttpClient 不是一个浏览器.它是一个客户端的 HTTP 通信实现库.HttpClient的目标是发 送和接收HTTP 报文.HttpClient不会去缓存内容,执行 ...
- (一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
(一)----使用HttpClient发送HTTP请求(通过get方法获取数据) 一.HTTP协议初探: HTTP(Hypertext Transfer Protocol)中文 “超文本传输协议”,是 ...
- Httpclient发送json请求
一.Httpclient发送json请求 public String RequestJsonPost(String url){ String strresponse = null; try ...
- .Net core webapi使用httpClient发送异步请求遇到TaskCanceledException: A task was canceled
前言:本人最近较多使用.net core的项目,最近在使用httpClient发送请求的时候,遇到服务器处理时间较长时,就老是会报异常:TaskCanceledException: A task wa ...
- java httpclient发送json 请求 ,go服务端接收
/***java客户端发送http请求*/package com.xx.httptest; /** * Created by yq on 16/6/27. */ import java.io.IOEx ...
- 通过 Apache Commons HttpClient 发送 HTTPS 请求
1.通过 HTTPS 发送 POST 请求: 2.HTTPS 安全协议采用 TLSv1.2: 3. 使用代理(Proxy)进行 HTTPS 访问: 4.指定 Content-Type 为:applic ...
- 使用HttpClient发送HTTPS请求以及配置Tomcat支持SSL
这里使用的是HttpComponents-Client-4.1.2 package com.jadyer.util; import java.io.File; import java.io.FileI ...
随机推荐
- CCF-CSP题解 201609-3 炉石传说
模拟. 注意随从的编号在\(summon\)和\(attack\)随从死亡时都可能改变. #include <bits/stdc++.h> using namespace std; str ...
- 格式化字符串漏洞 format string exploit(一)
本文系原创,转载请说明出处 本文为基于CTF WIKI的PWN学习 0x00 格式化字符串原理 先附一张经典的图,如下 其栈上布局如下: some value 3.14 123456 addr of ...
- Python:日期和时间的处理模块及相关函数
Python:日期和时间的处理模块及相关函数 Python 提供 time 模块和 calendar 模块用于格式化日期和时间. 一.时间戳 在Python中,时间戳是以秒为单位的浮点小数,它是指格林 ...
- visualStudio 的一些常用使用操作总结
今年苟了差不多一整年,期间断断续续把c++ prime plus 看完了 ,发现并没有什么鸟用 ,但是对代码怎么形成二进制的过程 动态内存管理 这些模模糊糊的确实理解更深刻些了 特别是c++过度到c# ...
- JPA中实现双向一对一的关联关系
场景 JPA入门简介与搭建HelloWorld(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103473937 ...
- JDK1.8新特性-Lambda表达式
Lambda 表达式 Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性. Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中). 使用 Lambda 表 ...
- MSP430系列单片机特性及应用领域
概述 MSP430系列单片机是德州仪器1996年开始推向市场的一种16位超低功耗的混合信号处理器,给人们留下的最大的亮点是低功耗而且速度快,汇编语言用起来很灵活,寻址方式很多,指令很少,容易上手.主要 ...
- 从源码角度看 PHP 字符串类型转换
PHP 的类型转换是比较方便的,但是越是容易使用的东西,底层的实现越是复杂,而且在使用中像我这样的新手也往往不清楚转换后的结果到底是什么.有时候,对于 Java 这种强类型的语言,使用的时候需要强制进 ...
- Appium+Java 自动化测试系列一:环境搭建
Appium+Java 自动化测试框架搭建主要分为以下几个方面的下载安装及环境配置 1.Java开发环境 涉及到的内容又jdk.编译器工具(推荐jdk 1.8.Eclipse编译器或者IDEA编译工具 ...
- SpringCloud之Feign 负载均衡请求超时时间
版本声明: SpringCloud:Greenwich.SR4 SpringBoot:2.1.9.RELEASE Feign调用服务的默认时长是1秒钟,也就是如果超过1秒没连接上或者超过1秒没响应,那 ...