首页 > 解决方案 > 从 Webbrowser 获取 Authorization Bearer 到 WebRequest

问题描述

我在网站上使用 Webbrowser 控件登录。

网络浏览器包含授权:

承载 Vw1Ta8yPpKV6N2bUOdyy....

在标题中。

我能以某种方式从控制中获取它的信息吗?我用“GetCookieContainer()”检查了 cookie,但找不到任何授权字段。

标签: c#winforms

解决方案


我找到了下一个解决方案,将 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;
                }
            }
        }
    }

推荐阅读