前言:  通过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抓包的更多相关文章

  1. Android系列之网络(三)----使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据)

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  2. Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  3. 【JAVA】通过HttpClient发送HTTP请求的方法

    HttpClient介绍 HttpClient 不是一个浏览器.它是一个客户端的 HTTP 通信实现库.HttpClient的目标是发 送和接收HTTP 报文.HttpClient不会去缓存内容,执行 ...

  4. (一)----使用HttpClient发送HTTP请求(通过get方法获取数据)

    (一)----使用HttpClient发送HTTP请求(通过get方法获取数据) 一.HTTP协议初探: HTTP(Hypertext Transfer Protocol)中文 “超文本传输协议”,是 ...

  5. Httpclient发送json请求

    一.Httpclient发送json请求 public String RequestJsonPost(String url){    String strresponse = null;    try ...

  6. .Net core webapi使用httpClient发送异步请求遇到TaskCanceledException: A task was canceled

    前言:本人最近较多使用.net core的项目,最近在使用httpClient发送请求的时候,遇到服务器处理时间较长时,就老是会报异常:TaskCanceledException: A task wa ...

  7. java httpclient发送json 请求 ,go服务端接收

    /***java客户端发送http请求*/package com.xx.httptest; /** * Created by yq on 16/6/27. */ import java.io.IOEx ...

  8. 通过 Apache Commons HttpClient 发送 HTTPS 请求

    1.通过 HTTPS 发送 POST 请求: 2.HTTPS 安全协议采用 TLSv1.2: 3. 使用代理(Proxy)进行 HTTPS 访问: 4.指定 Content-Type 为:applic ...

  9. 使用HttpClient发送HTTPS请求以及配置Tomcat支持SSL

    这里使用的是HttpComponents-Client-4.1.2 package com.jadyer.util; import java.io.File; import java.io.FileI ...

随机推荐

  1. ajax结合sweetalert实现删除按钮动态效果

    目录 一.ajax结合sweetalert实现删除按钮动态效果 二.bulk_create批量插入数据 1. 一条一条插入 2. 批量插入 三.自定义分页器 一.ajax结合sweetalert实现删 ...

  2. 为什么要使用Unix时间戳

    概念: UNIX时间戳:Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp) 是从1970年1月1日(UTC/GMT的午夜)开始 ...

  3. java基础集合简介List/Vector(三)上

    集合特点: 1:对象封装数据,对象多了也需要存储.集合用于存储对象. 2:集合是可变长度的. 集合和数组的区别: 1:数组是固定长度的:集合可变长度的. 2:数组可以存储基本数据类型,也可以存储引用数 ...

  4. Blockchain 基本知识

    本文是前奏,本来要介绍Azure上的Azure Blockchain Service,发现,需要从什么是区块链开始讲起... 什么是区块链?我们从比特币说起, 2008年11月,中本聪提出了比特币白皮 ...

  5. 4、看源码MVC Controller如何调用Action

    Controller继承ControllrBase,ControllerBase继承IController,而IController里只有一个Execute方法 1.ControllrBase里的Ex ...

  6. Linux-3.14.12内存管理笔记【伙伴管理算法(4)】

    此处承接前面未深入分析的页面释放部分,主要详细分析伙伴管理算法中页面释放的实现.页面释放的函数入口是__free_page(),其实则是一个宏定义. 具体实现: [file:/include/linu ...

  7. PKUWC 2020 游记

    由于 CSP 的暴力分太高,我来了这里. 我将告诉大家,我在暴力分不高时是个怎样的 sb 选手. Day -17 又停课啦. 旁边坐着 pb,每天刷题特别猛,然后就凸显了我有多颓. 怎么想打开个猫国都 ...

  8. 2019icpc徐州区域赛F

    F. The Answer to the Ultimate Question of Life, The Universe, and Everything. 我的第一道真·打表题 这次是真的打表啊,不是 ...

  9. 记一个AbstractMethodError

    如下,引入FastJsonHttpMessageConverter 之后,导致了新的错误: @Override public void configureMessageConverters( List ...

  10. Java面试官:兄弟,你确定double精度比float低吗?

    我有一个朋友,叫老刘,戴着度数比我还高的近视镜,显得格外的"程序员":穿着也非常"不拘一格",上半身是衬衣西服,下半身是牛仔裤运动鞋. 我和老刘的感情非常好,每 ...