zoukankan      html  css  js  c++  java
  • 关于c# winform使用FidderCore.dll 遇到的一些问题,请求支援

    小弟最近再研究winform用fidder抓取包的过程。开始都很顺利,并且成功开启了代理网络。同时手机也设置代理,并且手机可以上网,而且电脑也能抓到手机的请求。

    但是遇到两个问题。

    1.,这里的关闭代理按钮,我已经设置了shutdown,但是实际上等我关闭这个代理,或者当我直接关闭窗口的时候,浏览器还是无法上网。这个时候重新打开软件开启代理就可以了。这个问题百度无果。

    2.第二个问题有点特殊。就是我在抓一个app的请求数据。某个app我进入页面,如果直接通过Fidder工具。是可以抓到cookie,以及post数据的。如图中画圈的cs_session

    但是当我透过winform的FidderCore.dll确无法获取这个cookie数据。我分别在三个地方设置了断点:BeforeRequest,BeforeResponse,AfterSessionComplete

    百度有人oS.RequestHeaders["Cookie"];,但是调试过程中发现为空,而且分析了oSession的数据也没发现哪里有cookie,如下图

    折腾一个下午了。成果就是程序可以跑起来代理,并且能抓到手机的请求数据,但是这两个问题实在是无能为了。还请打大家指教,不甚感激!!!!!

    最终附上个人初步代码,还请大家指导。

     1 public partial class Form1 : Form
     2 {
     3 static Proxy oSecureEndpoint;
     4 static string sSecureEndpointHostname = "localhost";
     5 static int iSecureEndpointPort = 8866;
     6 
     7 public Form1()
     8 {
     9 InitializeComponent();
    10 }
    11 
    12 private void btn_Click(object sender, EventArgs e)
    13 {
    14 string strCollected = string.Empty;
    15 
    16 MessageBox.Show(strCollected.ToString());
    17 }
    18 
    19 private void button1_Click(object sender, EventArgs e)
    20 {
    21 if (!FiddlerApplication.IsStarted())
    22 {
    23 //设置别名
    24 Fiddler.FiddlerApplication.SetAppDisplayName("FiddlerCoreDemoApp");
    25 
    26 //启动方式
    27 FiddlerCoreStartupFlags oFCSF = FiddlerCoreStartupFlags.Default;
    28 
    29 //定义http代理端口
    30 int iPort = 8866;
    31 FiddlerApplication.BeforeRequest += FiddlerApplication_BeforeRequest;
    32 FiddlerApplication.BeforeResponse += FiddlerApplication_BeforeResponse;
    33 FiddlerApplication.AfterSessionComplete += AfterSessionComplete;
    34 //启动代理程序,开始监听http请求
    35 //端口,是否使用windows系统代理(如果为true,系统所有的http访问都会使用该代理)我使用的是
    36 Fiddler.FiddlerApplication.Startup(iPort, false, false, true);
    37 
    38 // 我们还将创建一个HTTPS监听器,当FiddlerCore被伪装成HTTPS服务器有用
    39 // 而不是作为一个正常的CERN样式代理服务器。
    40 oSecureEndpoint = FiddlerApplication.CreateProxyEndpoint(iSecureEndpointPort, true, sSecureEndpointHostname);
    41 
    42 this.textBox1.Text += DateTime.Now.ToString("HH:MM:ss") + " 开启代理
    ";
    43 }
    44 else
    45 {
    46 MessageBox.Show("不能重复开启,正在抓取数据。");
    47 }
    48 }
    49 
    50 private void AfterSessionComplete(Session oSession)
    51 {
    52 if (oSession.fullUrl.Contains("creditcard"))
    53 {
    54 Console.WriteLine(oSession.url);
    55 }
    56 }
    57 
    58 private void FiddlerApplication_BeforeResponse(Session oSession)
    59 {
    60 if (oSession.fullUrl.Contains("creditcard"))
    61 {
    62 Console.WriteLine(oSession.url);
    63 }
    64 }
    65 
    66 private void FiddlerApplication_BeforeRequest(Session oSession)
    67 {
    68 if (oSession.fullUrl.Contains("creditcard") && !string.IsNullOrEmpty(oSession.oRequest["Cookie"]))
    69 {
    70 Console.WriteLine(oSession.url);
    71 }
    72 }
    73 
    74 private void button2_Click(object sender, EventArgs e)
    75 {
    76 this.textBox1.Text += DateTime.Now.ToString("HH:MM:ss") + " 关闭代理
    ";
    77 FiddlerApplication.Shutdown();
    78 }
    79 }
  • 相关阅读:
    一些开发海学网站过程中的Javascript
    准备学习 Windows Forms 2.0 Programming
    终于买了个Dell d400二手笔记本
    Asp.Net应用程序中为什么要MachineKey?如何生成MachineKey?
    今天装了苏州数字电视
    windows Forms 编程实战 源代码
    重新整理 .net core 实践篇——— filter[四十四]
    not noly go —— 运行轨迹[一]
    .NET CLR基本术语
    [转]SqlServer四个排名函数(row_number、rank、dense_rank和ntile)的比较
  • 原文地址:https://www.cnblogs.com/daiyonghui/p/10650893.html
Copyright © 2011-2022 走看看