Требуется аутентификация через прокси-сервер cefsharp

Я пытаюсь использовать прокси с аутентификацией на cefsharp, я попробовал этот код, и он работает с прокси без аутентификации только то, что я должен сделать, чтобы установить аутентификацию.

Cef.UIThreadTaskFactory.StartNew(delegate
                    {
                        string ip = "IP";
                        string port = "PORT";
                        var rc = chrome.GetBrowser().GetHost().RequestContext;
                        var dict = new Dictionary<string, object>();
                        dict.Add("mode", "fixed_servers");
                        dict.Add("server", "" + ip + ":" + port + "");
                        string error;
                        bool success = rc.SetPreference("proxy", dict, out error);
                    });

Я нашел эту ссылку, но я не понимаю, как это сделать

https://bitbucket.org/chromiumembedded/cef/wiki/GeneralUsage.md#markdown-header-proxy-resolution пожалуйста, напишите какой-то код, я начинающий.

2 ответа

На этот раз я вернулся с реальным ответом.

Что вам нужно сделать, это реализовать свой собственный класс с помощью IRequestHandler и вызвать GetAuthCredentials().

public class MyRequestHandler : IRequestHandler
{

    bool IRequestHandler.GetAuthCredentials(IWebBrowser browserControl, IBrowser browser, IFrame frame, bool isProxy, string host, int port, string realm, string scheme, IAuthCallback callback)
    {

        if (isProxy == true)
        {             
                callback.Continue("Username", "Password");

                return true;
        }

        return false;

     }
}

Callback.Continue() применит учетные данные для вас при вызове.

Затем вы реализуете обработчик для своего экземпляра браузера в коде, который у вас уже есть.

Cef.UIThreadTaskFactory.StartNew(delegate
{

      chrome.RequestHandler = new MyRequestHandler();

      string ip = "IP";
      string port = "PORT";
      var rc = chrome.GetBrowser().GetHost().RequestContext;
      var dict = new Dictionary<string, object>();
      dict.Add("mode", "fixed_servers");
      dict.Add("server", "" + ip + ":" + port + "");
      string error;
      bool success = rc.SetPreference("proxy", dict, out error);
});

Я использую Cefsharp версии 65, просто используйте этот код:

CefSharpSettings.Proxy = new ProxyOptions(ip: "myipaddress", port: "myport", username: "myusername", password: "mypassword");

Поместите это перед Cef.Initialize(), и это работает для меня

Другие вопросы по тегам