Получите носитель авторизации от Webbrowser к WebRequest - PullRequest
0 голосов
/ 10 мая 2018

Я авторизируюсь с помощью веб-браузера.

Веб-браузер содержит Авторизацию:

Носитель Vw1Ta8yPpKV6N2bUOdyy ....

в шапке.

Могу ли я как-нибудь получить эту информацию из-под контроля? Я проверил cookie с помощью «GetCookieContainer ()», но не смог найти поля авторизации.

1 Ответ

0 голосов
/ 19 октября 2018

Я нашел следующее решение, сделать инъекцию на странице javascript.После этого вы можете использовать _Bearer_Access_token для отправки любого запроса на ваш сайт.

    string _Bearer_Access_token = "";
    HtmlElement head = webBrowser1.Document.GetElementsByTagName("head")[0];
    HtmlElement scriptEl_ = webBrowser1.Document.CreateElement("script");
    IHTMLScriptElement element = (IHTMLScriptElement)scriptEl_.DomElement;
    element.text = @"function GetBearer() 
                    {   


                        var parent = document.getElementsByTagName('head')[0];
                        var aTag = document.createElement('a');
                        for ( var i = 0, len = localStorage.length; i < len; ++i ) {
                          aTag.innerHTML += localStorage.getItem( localStorage.key( i ) );
                        } 
                        parent.appendChild(aTag);

                    }";

    head.AppendChild(scriptEl_);
    webBrowser1.Document.InvokeScript("GetBearer");

    HtmlElement head2 = webBrowser1.Document.GetElementsByTagName("head")[0];
    HtmlElement scriptEl2_ = webBrowser1.Document.GetElementsByTagName("a")[0];

    if (scriptEl2_.InnerText.IndexOf('{') > 0)
    {
        string LocalVariables_ = scriptEl2_.InnerText.Substring(scriptEl2_.InnerText.IndexOf('{'));
        LocalVariables_ = LocalVariables_.Replace("}{", "}@@@BTWOBJ@@@{");
        string[] ObjectArr_ = LocalVariables_.Split(new string[] { "@@@BTWOBJ@@@" }, StringSplitOptions.RemoveEmptyEntries);

        for (int i_ = 0; i_ < ObjectArr_.Length; i_++)
        {
            JToken token_ = JObject.Parse(ObjectArr_[i_]);
            token_ = token_.SelectToken("access_token");
            if (token_ != null)
            {
                _Bearer_Access_token = token_.Value<string>();
                if (_Bearer_Access_token.Length > 0)
                {
                    break;
                }
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...