Search code examples
c#vb.nettwitterhttpwebrequestwebrequest

ui_metrics in twitter login form


I'm doing some apps which require login into a twitter account using HttpWebRequest. In the POST request there's a parameter called "ui_metrics", What is this parameter used for? Is there a problem if I didn't send it? enter image description here

The content of it is generated by this script: https://twitter.com/i/js_inst?c_name=ui_metrics

Edit: I also want to convert this script to C# or VB.NET, I know how to download it to a string, but how to get the value it returns, which is ui_metrics as shown in the above screen. so, To be clear of what I want:

  1. What is this parameter used for?
  2. Why this javascript is called 3 times? ( I knew this by monitoring web traffic )
  3. Is there a problem if I didn't send it?
  4. How to generate the value it returns from the javascript in C# or VB.NET?

Solution

  • I deobfuscate this script, the result I reached is this:

    'use strict';
    function function_A() {
        var detectIdle = function load() 
        {
            function init() 
            {
                var y2 = 97;
                var y1 = 29;
                var y = 21;
                var res = 254;
                y1 = y1 | res;
                y1 = function(s, name, overrideY) {
                    function Rule(dayRule) {
                        this.USghQ = function() {
                        return this.qpGvE ^ dayRule;
                        };
                    }
                    var undefined = {
                        qpGvE : overrideY
                    };
                    var rule = new Rule(s);
                    rule.qpGvE = name;
                    Rule.prototype = undefined;
                    return rule.USghQ() | (new Rule(name)).USghQ();
                }
                (y1, y2, y2);
                y = function(namespace, value, data) {
                    function get(item, value) {
                        var i = 0;
                        for (; i < 8; i++) {
                            var t = document.createElement("div");
                            item.appendChild(t);
                            t.innerText = value;
                            
                            if ((value & 1) == 0) {
                                item = t;
                            }
                            value = value >> 1;
                        }
                        return item;
                    }
                    
                    function update(element, object, end) {
                        if (!element || element == object) {
                            return end % 256;
                        }
                        for (; element.children.length > 0;) {
                            element.removeChild(element.lastElementChild);
                        }
                        return update(element.parentNode, object, end + parseInt(element.innerText));
                    }
                    
                    var i = document.createElement("div");
                    i.setAttribute("style", "display:none;");
                    document.getElementsByTagName("body")[0].appendChild(i);
                    var a = update(get(get(get(i, namespace), value), data), i, 0);
                    i.parentNode.removeChild(i);
                    return a;
                }
                (y, y2, y);
                res = function(s, name, overrideY) {
                    function Rule(dayRule) {
                    this.AGAog = function() {
                    return this.QWVxt ^ dayRule;
                    };
                    }
                    var undefined = {
                    QWVxt : overrideY
                    };
                    var rule = new Rule(s);
                    rule.QWVxt = name;
                    Rule.prototype = undefined;
                    return rule.AGAog() | (new Rule(name)).AGAog();
                }
                (res, y2, y1);
                y1 = ~y1;
                y1 = function(name, s, overrideY) {
                    function Rule(dayRule) {
                        this.bjQRh = function() {
                        return this.XMmHE ^ dayRule;
                        };
                    }
                    var undefined = {
                        XMmHE : overrideY
                    };
                    var rule = new Rule(name);
                    rule.XMmHE = s;
                    Rule.prototype = undefined;
                    return rule.bjQRh() | (new Rule(s)).bjQRh();
                }
                (y1, res, y2);
                y1 = y1 ^ (new Date(y1 * 10000000000)).getUTCDate();
                y2 = y2 ^ res;
                y2 = ~(y2 & y1);
                y = y | y2;
                y1 = y1 ^ res;
                y1 = function(value, namespace, data) {
                    function get(item, value) {
                        var i = 0;
                        for (; i < 8; i++) {
                            var t = document.createElement("div");
                            item.appendChild(t);
                            t.innerText = value;
                            if ((value & 1) == 0) {
                                item = t;
                            }
                            value = value >> 1;
                        }
                        return item;
                    }
                    function update(element, object, end) {
                    if (!element || element == object) {
                    return end % 256;
                    }
                    for (; element.children.length > 0;) {
                    element.removeChild(element.lastElementChild);
                    }
                    return update(element.parentNode, object, end + parseInt(element.innerText));
                    }
                    var i = document.createElement("div");
                    i.setAttribute("style", "display:none;");
                    document.getElementsByTagName("body")[0].appendChild(i);
                    var a = update(get(get(get(i, value), namespace), data), i, 0);
                    i.parentNode.removeChild(i);
                    return a;
                }
                (y1, y, y);
                y = y ^ y1;
                y1 = ~(y1 & y);
                y2 = y2 ^ y2;
                res = function(spec, y, n24) 
                {
                    function Date(s) {
                        this.zzqeC = function() {
                            return this.FnqRf ^ s;
                        };
                    }
                    var original = {
                        FnqRf : n24
                    };
                    var c = new Date(spec);
                    c.FnqRf = y;
                    Date.prototype = original;
                    return c.zzqeC() | (new Date(y)).zzqeC();
                }
                (res, y1, y);
                y1 = ~y1;
                y = y & res;
                y = ~y;
                y1 = function(name, data, objResponse) {
                    function Section(value) {
                    this.iGKhJ = function() {
                    return this.eCRWB ^ value;
                    };
                    }
                    var _Date_prototype = {
                    eCRWB : objResponse
                    };
                    var section = new Section(name);
                    section.eCRWB = data;
                    Section.prototype = _Date_prototype;
                    return section.iGKhJ() | (new Section(data)).iGKhJ();
                }
                (y1, y, res);
                y1 = y1 ^ (new Date(y1 * 10000000000)).getUTCDate();
    
                y2 = function(value, namespace, data) 
                {
                    function get(item, value) {
                        var i = 0;
                        for (; i < 8; i++) {
                            var t = document.createElement("div");
                            item.appendChild(t);
                            t.innerText = value;
                            if ((value & 1) == 0) {
                                item = t;
                            }
                            value = value >> 1;
                        }
                        return item;
                    }
                    function update(element, object, end) {
                        if (!element || element == object) {
                        return end % 256;
                        }
                        for (; element.children.length > 0;) {
                            element.removeChild(element.lastElementChild);
                        }
                        return update(element.parentNode, object, end + parseInt(element.innerText));
                    }
    
                    var i = document.createElement("div");
                    i.setAttribute("style", "display:none;");
                    document.getElementsByTagName("body")[0].appendChild(i);
                    var a = update(get(get(get(i, value), namespace), data), i, 0);
                    i.parentNode.removeChild(i);
                    return a;
                }
    
                (y2, y, y);
                y2 = function(value, key, status) 
                {
                    function get(item, value) {
                        var i = 0;
                        for (; i < 8; i++) {
                            var t = document.createElement("div");
                            item.appendChild(t);
                            t.innerText = value;
                            if ((value & 1) == 0) {
                            item = t;
                            }
                            value = value >> 1;
                        }
                        return item;
                    }
                    function update(element, object, end) {
                        if (!element || element == object) {
                        return end % 256;
                        }
                        for (; element.children.length > 0;) {
                        element.removeChild(element.lastElementChild);
                        }
                        return update(element.parentNode, object, end + parseInt(element.innerText));
                    }
                    var i = document.createElement("div");
                    i.setAttribute("style", "display:none;");
                    document.getElementsByTagName("body")[0].appendChild(i);
                    var a = update(get(get(get(i, value), key), status), i, 0);
                    i.parentNode.removeChild(i);
                    return a;
                }
                (y2, y1, y1);
                y = y ^ y2;
                res = ~(res & y2);
                res = res & res;
                y2 = y2 ^ y1;
                y1 = ~y1;
                y1 = ~(y1 & y2);
                y2 = function(name, json, overrideY) {
                    function Section(value) {
                    this.DJrcU = function() {
                    return this.OCEGA ^ value;
                    };
                    }
                    var _Date_prototype = {
                    OCEGA : overrideY
                    };
                    var s = new Section(name);
                    s.OCEGA = json;
                    Section.prototype = _Date_prototype;
                    return s.DJrcU() | (new Section(json)).DJrcU();
                }
                (y2, res, y1);
                y1 = y1 ^ (new Date(y1 * 10000000000)).getUTCDate();
                return {
                    "rf" : {
                    "ac133410c945cc4ec78ca58122a0d846d3b68bf81460c0ccd5d1d63a2573066a" : y2,
                    "c4564511aef468a7853ced7853bc4440ce63dad605706f0caab8f2088bed1899" : y1,
                    "a01041174f8b8fcc122f49a86656b6d994e61f028f2f39d200be3b408f617a61" : y,
                    "a93442d9c7d65cb1bbb21984d5261c7de76c8b3b6bf37c1918059f6f0dfefc58" : res
                    },
                    "s" : "caeM1pzDfd3B7lRINfvP-_jYwuXsE8WuEk9oRuy1WebhbLM9hGtM7nY6SemooLmlQUtAQDMN6fX1TGBl6C3fcRe_jDgevtWJTLR8MZQYxRNsCdIgHdfEj3nb0rManz0VnQeAhzLD1MWJfMuP3dlxGv3sATF7u6GJd1MKbqZ5JTQnV64Vx_B4s6jio82LhJy3QFmg4S_nHIckJFdCwHsrZa-VcIpwPTSO1pQPOSVV-CXCp89Sos944wXgdBxhh-TFEDUZnoWxDdcZFuN7ATsLC2QSO5PVQEty4BfLuOBq0--85BNcwwPVToI4sgTd7XSVtE3t5nSrrCXQ20KIZ0fjlQAAAXap9JSx"
                };
            }
            var completion;
            try 
            {
                completion = JSON.stringify(init());
            } 
            catch (endQuote) 
            {
                completion = "exception " + endQuote;
            }
    
            var in_tokens;
            in_tokens = document.getElementsByName("ui_metrics");
            var i = 0;
    
            for (; i < in_tokens.length; i++) {
                in_tokens[i].value = completion;
            }
        };
        var $__jsx_onload = function $__jsx_onload() {
            document.removeEventListener("DOMContentLoaded", $__jsx_onload);
            window.removeEventListener("load", $__jsx_onload);
            window.setTimeout(detectIdle);
        };
        if (document.readyState === "complete") 
        {
            window.setTimeout(detectIdle);
        }else 
        {
            document.addEventListener("DOMContentLoaded", $__jsx_onload);
            window.addEventListener("load", $__jsx_onload);
        }
    }
    function_A();