关于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") + " 开启代理\r\n";
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") + " 关闭代理\r\n";
77 FiddlerApplication.Shutdown();
78 }
79 }

 

posted @ 2019-04-03 19:06  辉辉爱编程  阅读(1552)  评论(0编辑  收藏  举报