Монитор трафика Titanium не передается основной программе - PullRequest
0 голосов
/ 22 мая 2019

Я использую монитор трафика HTTP, используя Titanium.Web.Proxy. Похоже, он не передает информацию на сервер, работающий на том же ПК. Это REST-сервер, и я обращаюсь к почтальону с моего локального ПК. Когда прокси работает, я не получаю ответа. Прокси регистрирует трафик от Почтальона, но ничего не отвечает. Сервер REST также не регистрирует получение каких-либо команд. Это как если бы прокси не проходил через команды. Я не уверен, что происходит внутри сервера, но я, конечно, могу подсказать действительные пакеты. Кто-нибудь знает, какими должны быть мои следующие шаги?

Я запустил прокси локально, проблем с трафиком не видно, и он не мешает.

    public void StartHTTPMonitor(string ipAddress)
    {
        proxyServer = new ProxyServer();

        proxyServer.BeforeRequest += OnRequest;
        proxyServer.BeforeResponse += OnResponse;
        proxyServer.ServerCertificateValidationCallback += OnCertificateValidation;
        proxyServer.ClientCertificateSelectionCallback += OnCertificateSelection;


        explicitEndPoint = new ExplicitProxyEndPoint(IPAddress.Parse(ipAddress), 5050, true);
        proxyServer.AddEndPoint(explicitEndPoint);

        proxyServer.Start();

        foreach (var endPoint in proxyServer.ProxyEndPoints)
            WriteLog($"Listening on '{endPoint.GetType().Name}' endpoint at Ip {endPoint.IpAddress} and port: {endPoint.Port}");

        //Only explicit proxies can be set as system proxy!
        proxyServer.SetAsSystemHttpProxy(explicitEndPoint);
    }

    public async Task OnRequest(object sender, SessionEventArgs e)
    {
        WriteLog(e.HttpClient.Request.Url);

        //var uri = e.HttpClient.Request.RequestUri.AbsoluteUri;
        var method = e.HttpClient.Request.Method.ToUpper();
        if (method == "POST")
        {
            //Get/Set request body as string
            string bodyString = await e.GetRequestBodyAsString();
            e.UserData = bodyString;
            WriteLog(bodyString);
        }
    }

    //Modify response
    public async Task OnResponse(object sender, SessionEventArgs e)
    {

        //if (!e.ProxySession.Request.Host.Equals("medeczane.sgk.gov.tr")) return;
        if (e.HttpClient.Request.Method == "GET" || e.HttpClient.Request.Method == "POST")
        {
            if (e.HttpClient.Response.StatusCode == 200)
            {
                string rspBody = await e.GetResponseBodyAsString();
                WriteLog(rspBody);
                string reqBody = (string) e.UserData;

                if (e.HttpClient.Response.ContentType != null && e.HttpClient.Response.ContentType.Trim().ToLower().Contains("application/json"))
                {
                    ReqRspQueue.Enqueue(new HTTPReqRsp(reqBody, rspBody));
                }
            }
        }
    }
...