C# 研究Twitter网站如何创建承载令牌

C# 研究Twitter网站如何创建承载令牌,c#,twitter,oauth,httprequest,token,C#,Twitter,Oauth,Httprequest,Token,为什么我在社区得到-4分? 没有人知道答案,所以他们给了我-4分,因为我问了一个你无法理解的问题?请解释一下。。。这是一个技术性很强、难度很大的问题,应该得到社区更好的反应。除非我开始问一些简单的问题 我得到了错误的答案: 1.“只需使用您的用户和密码调用OAuth端点” 否,我跟踪了从登录到follow操作(当需要承载令牌时)的所有浏览器请求,并且浏览器在任何时候都不会调用服务器来获取承载令牌。所以这并不容易。尽管如此,当您想要执行如下操作时,浏览器在登录后发送时仍具有承载令牌。(这就是它从登

为什么我在社区得到-4分? 没有人知道答案,所以他们给了我-4分,因为我问了一个你无法理解的问题?请解释一下。。。这是一个技术性很强、难度很大的问题,应该得到社区更好的反应。除非我开始问一些简单的问题

我得到了错误的答案: 1.“只需使用您的用户和密码调用OAuth端点” 否,我跟踪了从登录到follow操作(当需要承载令牌时)的所有浏览器请求,并且浏览器在任何时候都不会调用服务器来获取承载令牌。所以这并不容易。尽管如此,当您想要执行如下操作时,浏览器在登录后发送时仍具有承载令牌。(这就是它从登录数据在JS中生成它的原因)

  • “只要使用auth_toekn” 不,认证令牌和承载都是需要的,并且在您跟随时发送,如果其中一个丢失,则呼叫将失败,并且它们彼此非常不同

  • 请不要回答twitter有API,我知道,这不是问题所在

  • 对于真正的高级开发人员来说,这是一个很难回答的问题。我试图研究Twitter是如何创建无记名令牌的。此令牌稍后将在登录后提供,以便进行后续操作或执行任何其他操作

    我打开fiddler,在成功登录twitter网站(不是应用程序或任何东西)后,twitter呼叫:

    此函数返回5个cookie: 设置cookie:auth_token=7d7c0e23f8c669ff78b921b5a451c7e60f001b6b;Expires=Thu,2028年3月16日23:58:32 GMT;路径=/;域名=.twitter.com;保护HTTPOnly 稍后,当我跟踪某人的twitter呼叫时: 在此post请求上发送的标头中,一个重要标头是: “授权:持票人”aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaclxundekmxqa8h%2F40K4mouksoc%3DTYfbDKbT3jJPCEVnMYqilB28NHfOPqkca3qaAxGfsyKCs0wRbw

    我的问题很简单,但对我的研究很重要,这个不记名代币是如何产生的

  • 显然,它是通过Js在客户端创建的,因为它检查了从login到follow(使用bearer)的所有twitter调用,没有其他调用,调用服务器来获取bearer令牌。这是经过长期研究的事实

  • 我怀疑通过一些 某种编码方式,身份验证令牌、twid或kdt或这些头的组合在登录后发送给我,承载令牌在客户端创建,然后发送到服务器

  • 在调查了twitter的所有js文件(并使用在线工具对其进行了整理)之后,我想出了一些创建它的函数,但仍然找不到在我这方面创建承载令牌的方法? 任何帮助都将受到高度赞赏,我相信这个概念是通过登录cookies获得的数据在客户端生成的easy Bear token。但我无法解释是怎么回事,js很难理解

  • 以下是取自3个文件的一些剪贴画:

      <link rel="preload" href="https://abs.twimg.com/k/en/init.en.ace7071c803c455c5d97.js" as="script">
          <link rel="preload" href="https://abs.twimg.com/k/en/0.commons.en.de7b4986f9ad407bc0e4.js" as="script">
          <link rel="preload" href="https://abs.twimg.com/k/en/8.pages_home.en.9ee19c8cf9256226b254.js" as="script">
    
    this._addBearerTokenToUrl = function(t, e) {
                        return t ? h.a.addToUrl(e, {
                            bearer_token: t
                        }) : e
    
    
    
    
    function n() {
                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : u;
                return function(e, i) {
                    var n = {
                        authorization: "Bearer " + t
                    };
                    a.a.user.id && (n["x-twitter-auth-type"] = "OAuth2Session");
                    var o = Object(r.a)(c);
                    return o && (n["x-csrf-token"] = o), e.headers = s({}, e.headers, n), i(e)
                }
            }
    
     function n() {
                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : u;
                return function(e, i) {
                    var n = {
                        authorization: "Bearer " + t
                    };
                    a.a.user.id && (n["x-twitter-auth-type"] = "OAuth2Session");
                    var o = Object(r.a)(c);
                    return o && (n["x-csrf-token"] = o), e.headers = s({}, e.headers, n), i(e)
                }
            }
    
                        if (i.useOAuthSessionAuth) {
                            var E = this.getCsrfToken();
                            S = {
                                authorization: "Bearer " + k,
                                "x-twitter-auth-type": "OAuth2Session",
                                "x-csrf-token": E
                            }, x = {
                                withCredentials: !0
                            }
                        }
    
    
    这是函数(t,e){
    返回t?h.a.Addtoul(e{
    持票人代币:t
    }):e
    函数n(){
    var t=arguments.length>0&&void 0!==参数[0]?参数[0]:u;
    返回函数(e,i){
    变量n={
    授权:“持票人”+t
    };
    a、 a.user.id&(n[“x-twitter-auth-type”]=“OAuth2Session”);
    var o=对象(r.a)(c);
    返回o&(n[“x-csrf-token”]=o),e.headers=s({},e.headers,n),i(e)
    }
    }
    函数n(){
    var t=arguments.length>0&&void 0!==参数[0]?参数[0]:u;
    返回函数(e,i){
    变量n={
    授权:“持票人”+t
    };
    a、 a.user.id&(n[“x-twitter-auth-type”]=“OAuth2Session”);
    var o=对象(r.a)(c);
    返回o&(n[“x-csrf-token”]=o),e.headers=s({},e.headers,n),i(e)
    }
    }
    if(i.useAuthSessionAuth){
    var E=this.getCsrfToken();
    S={
    授权:“持票人”+k,
    “x-twitter-auth-type”:“OAuth2Session”,
    “x-csrf-token”:E
    },x={
    withCredentials:!0
    }
    }
    
    这个不记名代币是如何创建的

    这是特定于服务器实现的,但请确保它不会在客户端上生成。令牌包含一些信息,可以将该令牌返回给用户(类似于登录cookie)

    您自己不能生成这样的令牌。如果可以,您可以在不知道的情况下为我创建一个令牌,这是一个巨大的安全漏洞。但是,您可以通过某种身份验证端点(通常是类似OAuth的端点)来获取令牌(您可以在下面的


    据我所知,OWIN(ASP.NETOAuth服务器实现)使用一种加密机制,使用在
    machine.config
    中注册的机器密钥作为输入,以确保只有正确的服务器才能解密令牌。

    将在twitter中加载主页时,内容中包含barer,我通常从那里提取它,但我没有找到服务器端代码的请求来自何处因此,您必须等待页面加载,然后提取身份验证令牌

    搜索:无记名令牌


    此外,令牌在登录时只接收一次,然后被缓存如果您提取缓存,您可能会在那里找到它,尝试监视登录请求,并确保您清除缓存以查找请求

    简言之:我希望能够从成功登录后检索到的数据中创建承载令牌…我希望这不是真正的象征…如果是这样,你向我们公开了你的twitter帐户
      <link rel="preload" href="https://abs.twimg.com/k/en/init.en.ace7071c803c455c5d97.js" as="script">
          <link rel="preload" href="https://abs.twimg.com/k/en/0.commons.en.de7b4986f9ad407bc0e4.js" as="script">
          <link rel="preload" href="https://abs.twimg.com/k/en/8.pages_home.en.9ee19c8cf9256226b254.js" as="script">
    
    this._addBearerTokenToUrl = function(t, e) {
                        return t ? h.a.addToUrl(e, {
                            bearer_token: t
                        }) : e
    
    
    
    
    function n() {
                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : u;
                return function(e, i) {
                    var n = {
                        authorization: "Bearer " + t
                    };
                    a.a.user.id && (n["x-twitter-auth-type"] = "OAuth2Session");
                    var o = Object(r.a)(c);
                    return o && (n["x-csrf-token"] = o), e.headers = s({}, e.headers, n), i(e)
                }
            }
    
     function n() {
                var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : u;
                return function(e, i) {
                    var n = {
                        authorization: "Bearer " + t
                    };
                    a.a.user.id && (n["x-twitter-auth-type"] = "OAuth2Session");
                    var o = Object(r.a)(c);
                    return o && (n["x-csrf-token"] = o), e.headers = s({}, e.headers, n), i(e)
                }
            }
    
                        if (i.useOAuthSessionAuth) {
                            var E = this.getCsrfToken();
                            S = {
                                authorization: "Bearer " + k,
                                "x-twitter-auth-type": "OAuth2Session",
                                "x-csrf-token": E
                            }, x = {
                                withCredentials: !0
                            }
                        }