Измените ResponseBytes с помощью DotNetBrowser

Nov 07 2020

Образец:

br.instance.engine.Network.ResponseBytesReceived += (s, e) =>
            {
                try
                {
                    byte[] data = e.Data;
                    string resp = System.Text.Encoding.UTF8.GetString(data);
                    resp = resp.Replace("old value", "new value");
                    byte[] newdata = System.Text.Encoding.UTF8.GetBytes(resp);
                    //e.Data = newdata;
                    
                }
                catch { }
            };

e.Data = newdata; - это невозможно, потому что получить

Как мы можем преобразовать этот код? потому что необходимо изменить реальные данные перед созданием контекста скрипта

Ответы

АрхиповВладимир Nov 07 2020 at 19:33

Сделал костыль и его работу:

br.instance.engine.Network.ResponseBytesReceived += (s, e) =>
            {
                try
                {
                    byte[] data = e.Data;
                    string resp = System.Text.Encoding.UTF8.GetString(data);
                    string resp2 = resp.Replace("old value", "new value");
                    string urlr = e.UrlRequest.Url;
                    
                    if (e.UrlRequest.Url == urltext&&resp!=resp2)
                    {
                        br.instance.browser.MainFrame.LoadData(new LoadDataParameters(resp2)
                        {
                            BaseUrl = urltext,
                            MimeType = MimeType.TextHtml,
                            Replace = true,
                            TextEncoding = "UTF-8"
                        });
                    }
                }
                catch { }
            };