Определяется TimeZone и Виден реальный ip. Как обойти?

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
хай.
есть проблема, тестирую смену профиля на одной приватной системе, кроче научил зенку прятоться нормально, но система палит реальный ip и timezone

если руками выставить на локалке временную зону, то тогда все нормально, НО это же бред, под каждый proxy выставлять таймзону...
И еще один момент, то же не могу объяснить, если выставить зону с помощью шарпа, то хуер нормально ее показывает, что она изменилась, но при переходе на систему, все равно показывается реальная таймзона... жесть одним словом

и второй момент, прокси палятся до локальной машины, то есть если зайти под ВПН то показывает ip ВПН а не прокси...

как обойти эти темы, тайм зону и прокси?
 

copper12

Client
Регистрация
26.11.2016
Сообщения
1 111
Благодарностей
260
Баллы
63
Снипет какой используете для TimeZone?
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
Код:
int timezone = int.Parse(project.Variables["TimeZone"].Value);
if (timezone != 0) {
    return timezone * -60;
} else {
    return 0;
}
Код:
function ZP_SetTimezone(TimezoneOffset)
{
    if(typeof(Intl.DateTimeFormatOriginal) == "undefined")
    {
        Intl.DateTimeFormatOriginal = Intl.DateTimeFormat()
        Intl.ResolvedOptionsOriginal = Intl.DateTimeFormatOriginal.resolvedOptions();
        delete Intl.ResolvedOptionsOriginal["timeZone"];

        Object.defineProperty(Intl, 'DateTimeFormat', {
            configurable: true, get: function() {
                 return function(){
                     var dtres = Intl.DateTimeFormatOriginal;
                     dtres.resolvedOptions = function()
                    {
                        return Intl.ResolvedOptionsOriginal;
                    }
                     return dtres;
                 };
             }
         });
    }else
    {
        delete Intl.ResolvedOptionsOriginal["timeZone"];       
    }
   
    if(typeof(window.ZP_OriginalDate) == "undefined")
        window.ZP_OriginalDate = Date;

    function realLocalToUtc(realLocal)
    {
        return new window.ZP_OriginalDate(realLocal.getTime() - realLocal.getTimezoneOffset()*60*1000 + TimezoneOffset*60*1000);
    }
    function utcToLocal(utc)
    {
        return new window.ZP_OriginalDate(utc.getTime() - TimezoneOffset*60*1000);
    }
    function localToUtc(local)
    {
        return new window.ZP_OriginalDate(local.getTime() + TimezoneOffset*60*1000);
    }
    function twoDigit(n)
    {
        if (n < 10)
        {
            return "0" + n;
        }else
        {
            return "" + n;
        }
    }
    function timezoneName()
    {
        var zone = "GMT";
        var offset = Math.abs(TimezoneOffset);
        if (TimezoneOffset < 0) {
            zone = zone + "+";
        } else if (TimezoneOffset > 0) {
            zone = zone + "-";
        } else {
            return zone;
        }
        return zone + twoDigit(Math.floor(offset/60)) + twoDigit(offset%60);
    }

    var ProxyHandler =
    {
        get: function(target, name)
        {
            if(name in target)
                return target[name]

            return Date.prototype[name]
        }
    };

    Date = function()
    {
        var res = new window.ZP_OriginalDate();

        switch(arguments.length)
        {
            case 0:
                res.utc = new window.ZP_OriginalDate();
                break;
            case 1:
                if(typeof(arguments[0]) == "string")
                {
                    res.utc = realLocalToUtc(new window.ZP_OriginalDate(arguments[0]))
                }
                else
                    res.utc = new window.ZP_OriginalDate(arguments[0]);
                break;
            case 2:
                res.utc = realLocalToUtc(new window.ZP_OriginalDate(arguments[0], arguments[1]));
                break;
            case 3:
                res.utc = realLocalToUtc(new window.ZP_OriginalDate(arguments[0], arguments[1], arguments[2]));
                break;
            case 4:
                res.utc = realLocalToUtc(new window.ZP_OriginalDate(arguments[0], arguments[1], arguments[2], arguments[3]));
                break;
            case 5:
                res.utc = realLocalToUtc(new window.ZP_OriginalDate(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]));
                break;
            case 6:
                res.utc = realLocalToUtc(new window.ZP_OriginalDate(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]));
                break;
            default:
                res.utc = realLocalToUtc(new window.ZP_OriginalDate(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6]));
                break;
        }

           res.getDate = function() { return utcToLocal(this.utc).getUTCDate(); }
           res.getDay = function() { return utcToLocal(this.utc).getUTCDay(); }
        res.getFullYear = function() { return utcToLocal(this.utc).getUTCFullYear(); }
        res.getHours = function() { return utcToLocal(this.utc).getUTCHours(); }
        res.getMilliseconds = function() { return utcToLocal(this.utc).getUTCMilliseconds(); }
        res.getMinutes = function() { return utcToLocal(this.utc).getUTCMinutes(); }
        res.getMonth = function() { return utcToLocal(this.utc).getUTCMonth(); }
        res.getSeconds = function() { return utcToLocal(this.utc).getUTCSeconds(); }

        res.getUTCDate = function() { return this.utc.getUTCDate(); }
        res.getUTCDay = function() { return this.utc.getUTCDay(); }
        res.getUTCFullYear = function() { return this.utc.getUTCFullYear(); }
        res.getUTCHours = function() { return this.utc.getUTCHours(); }
        res.getUTCMilliseconds = function() { return this.utc.getUTCMilliseconds(); }
        res.getUTCMinutes = function() { return this.utc.getUTCMinutes(); }
        res.getUTCMonth = function() { return this.utc.getUTCMonth(); }
        res.getUTCSeconds = function() { return this.utc.getUTCSeconds(); }

        res.setDate = function() { var d = utcToLocal(this.utc); d.setUTCDate.apply(d, Array.prototype.slice.call(arguments, 0)); this.utc = localToUtc(d); return this.utc.getTime();}
        res.setFullYear = function() { var d = utcToLocal(this.utc); d.setUTCFullYear.apply(d, Array.prototype.slice.call(arguments, 0)); this.utc = localToUtc(d);return this.utc.getTime(); }
        res.setHours = function() { var d = utcToLocal(this.utc); d.setUTCHours.apply(d, Array.prototype.slice.call(arguments, 0)); this.utc = localToUtc(d);return this.utc.getTime(); }
        res.setMilliseconds = function() { var d = utcToLocal(this.utc); d.setUTCMilliseconds.apply(d, Array.prototype.slice.call(arguments, 0)); this.utc = localToUtc(d);return this.utc.getTime(); }
        res.setMinutes = function() { var d = utcToLocal(this.utc); d.setUTCMinutes.apply(d, Array.prototype.slice.call(arguments, 0)); this.utc = localToUtc(d);return this.utc.getTime(); }
        res.setMonth = function() { var d = utcToLocal(this.utc); d.setUTCMonth.apply(d, Array.prototype.slice.call(arguments, 0)); this.utc = localToUtc(d);return this.utc.getTime(); }
        res.setSeconds = function() { var d = utcToLocal(this.utc); d.setUTCSeconds.apply(d, Array.prototype.slice.call(arguments, 0)); this.utc = localToUtc(d);return this.utc.getTime(); }

        res.setUTCDate = function() { this.utc.setUTCDate.apply(this.utc, Array.prototype.slice.call(arguments, 0));return this.utc.getTime(); }
        res.setUTCFullYear = function() { this.utc.setUTCFullYear.apply(this.utc, Array.prototype.slice.call(arguments, 0)); return this.utc.getTime();}
        res.setUTCHours = function() { this.utc.setUTCHours.apply(this.utc, Array.prototype.slice.call(arguments, 0));return this.utc.getTime(); }
        res.setUTCMilliseconds = function() { this.utc.setUTCMilliseconds.apply(this.utc, Array.prototype.slice.call(arguments, 0));return this.utc.getTime(); }
        res.setUTCMinutes = function() { this.utc.setUTCMinutes.apply(this.utc, Array.prototype.slice.call(arguments, 0));return this.utc.getTime(); }
        res.setUTCMonth = function() { this.utc.setUTCMonth.apply(this.utc, Array.prototype.slice.call(arguments, 0));return this.utc.getTime(); }
        res.setUTCSeconds = function() { this.utc.setUTCSeconds.apply(this.utc, Array.prototype.slice.call(arguments, 0));return this.utc.getTime(); }


        res.getYear = function() { return this.getFullYear() - 1900; }
        res.setYear = function(v) { this.setFullYear(v + 1900); return this.utc.getTime(); }

        res.getTime = function() { return this.utc.getTime(); }
        res.setTime = function(v) { this.utc.setTime(v); return this.utc.getTime();}

        res.getTimezoneOffset = function() { return TimezoneOffset; }

        res.toDateString = function() { return utcToLocal(this.utc).toDateString(); }
        res.toLocaleDateString = function() { return utcToLocal(this.utc).toLocaleDateString(); }

        res.toISOString = function() { return this.utc.toISOString(); }
        res.toGMTString = function() { return this.utc.toGMTString(); }
        res.toUTCString = function() { return this.utc.toUTCString(); }

        res.toString = function() {
            var wkdays = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
            var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
            var d = utcToLocal(this.utc);
            var res = wkdays[d.getUTCDay()] + " " + months[d.getUTCMonth()] + " " + twoDigit(d.getUTCDate()) + " " + d.getUTCFullYear() +
                " " + twoDigit(d.getUTCHours()) + ":" + twoDigit(d.getUTCMinutes()) + ":" + twoDigit(d.getUTCSeconds()) + " " + timezoneName();

            return res;
        }
        res.valueOf = function() {return this.utc.getTime();}

        res.toLocaleString = function() { return this.toString(); }
        res.toLocaleTimeString = function() { return this.toString(); }
        res.toTimeString = function() { return this.toString(); }

        res.toJSON = function() { return this.utc.toJSON(); }

       return new Proxy(res, ProxyHandler);
    }



    Date.now = window.ZP_OriginalDate.now;
    Date.parse = window.ZP_OriginalDate.parse;
    Date.UTC = window.ZP_OriginalDate.UTC;
}

ZP_SetTimezone({-Variable.TimeZoneOffset-});
 

copper12

Client
Регистрация
26.11.2016
Сообщения
1 111
Благодарностей
260
Баллы
63
Используйте данный снипет.
instance.TimezoneWorkMode = ZennoLab.InterfacesLibrary.Enums.Browser.TimezoneMode.Emulate;
instance.SetTimezone(-4,0);
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
По умолчанию эмуляция часового пояса должна быть отключена
где это можно отключить?

хотя и при запуске шарпа, тоже норм меняет зону, как будет время протестирую на скрипте
 

copper12

Client
Регистрация
26.11.2016
Сообщения
1 111
Благодарностей
260
Баллы
63
Она уже отключена по умолчанию в ProjectMaker
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
как установить переменную?
делаю так, выдает ошибку компиляции
 

Protey

Client
Регистрация
09.01.2016
Сообщения
208
Благодарностей
29
Баллы
28

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113

Protey

Client
Регистрация
09.01.2016
Сообщения
208
Благодарностей
29
Баллы
28

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 552
Баллы
113

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)