Добавил стандартное окно браузера от Cefsharp, пытаюсь авторизоваться на сайте и получить ответ при помощи IRequestHandler, но в итоге из за OnBeforeResourceLoad страница перезагружается и ожидает заново авторизации.
Без использования IRequestHandler авторизация проходит успешно. Подскажите пожалуйста как мне настроить возвращение данных с авторизацией что бы дальше работать с ними?
public void InitializeChromiuim()
{
if (chromiumBrowser == null)
{
chromiumBrowser = new ChromiumWebBrowser("https://site.com/ru")
{
Dock = DockStyle.Fill,
};
chromiumBrowser.FrameLoadEnd += OnIsBrowserInitializedChanged;
Controls.Clear();
Controls.Add(chromiumBrowser);
var requestHandler = new MyRequestHandler();
chromiumBrowser.RequestHandler = requestHandler;
}
}
public class MyRequestHandler : IRequestHandler
{
public bool CanGetCookies(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request)
{
return false;
}
public bool CanSetCookie(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, Cookie cookie)
{
return false;
}
public bool GetAuthCredentials(IWebBrowser browserControl, IBrowser browser, IFrame frame, bool isProxy, string host, int port, string realm, string scheme, IAuthCallback callback)
{
return false;
}
public IResponseFilter GetResourceResponseFilter(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response)
{
return null;
}
public bool OnBeforeBrowse(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool userGesture, bool isRedirect)
{
var model = request;
return false;
}
public CefReturnValue OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback)
{
return CefReturnValue.Continue;
}
public bool OnCertificateError(IWebBrowser browserControl, IBrowser browser, CefErrorCode errorCode, string requestUrl, ISslInfo sslInfo, IRequestCallback callback)
{
return false;
}
public bool OnOpenUrlFromTab(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, WindowOpenDisposition targetDisposition, bool userGesture)
{
return false;
}
public void OnPluginCrashed(IWebBrowser browserControl, IBrowser browser, string pluginPath)
{
}
public bool OnProtocolExecution(IWebBrowser browserControl, IBrowser browser, string url)
{
return false;
}
public bool OnQuotaRequest(IWebBrowser browserControl, IBrowser browser, string originUrl, long newSize, IRequestCallback callback)
{
return false;
}
public void OnRenderProcessTerminated(IWebBrowser browserControl, IBrowser browser, CefTerminationStatus status)
{
}
public void OnRenderViewReady(IWebBrowser browserControl, IBrowser browser)
{
}
public void OnResourceLoadComplete(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response, UrlRequestStatus status, long receivedContentLength)
{
// You can also check the request URL here
}
public void OnResourceRedirect(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response, ref string newUrl)
{
}
public bool OnResourceResponse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response)
{
return false;
}
public bool OnSelectClientCertificate(IWebBrowser browserControl, IBrowser browser, bool isProxy, string host, int port, System.Security.Cryptography.X509Certificates.X509Certificate2Collection certificates, ISelectClientCertificateCallback callback)
{
return false;
}
}
/// <summary>
/// Выполняемые действия при полной загрузке страницы
/// </summary>
private void OnIsBrowserInitializedChanged(object sender, FrameLoadEndEventArgs args)
{
ChromiumWebBrowser browser = sender as ChromiumWebBrowser;
if (args.Url == "https://site.com/ru")
chromiumBrowser.ExecuteScriptAsync("document.querySelector('.btn-link').click();");
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Хочу сделать TreeView но в таком виде и с нуля
Задание: Если переменная $text не содержит специальных символов - вывести соответствующее сообщениеНикак не получается заставить программу...
как сделать логику, выбираешь страну(таксономия = lftcat) и после него выводятся записи этой таксономии в другом селекте