Перейти к содержимому
Zone of Games Forum
Goddy

[Интервью] Системы защиты в играх. Авторитетное мнение (PC)

Рекомендованные сообщения

Защита игровых программных продуктов — задача, по мнению разработчиков с издателями, наиважнейшая. Авторы вкладывают многие тысячи вечнозеленых президентов, дабы оградить время топ-продаж от пиратских «набегов». Дело это сложное, дорогое и не всегда результативное. При этом системы бывают разные, с различным подходом, степенью вовлечения геймера и общим архетипом. Мало кто знает, чем отличается та или иная защита от других, поэтому, в целях просвещения играющей публики, мы выцыганили некоторое количество интереснейшей информации о драконовских (и не только) методах у представителя одного из лучших на сегодня тематических ресурсов, Антона (ClericV).

Доброго дня, Антон! Спасибо, что заглянул.

Привет, ZoG!

Как известно, многие разработчики/издатели встраивают в свои игры системы защиты. Расскажи, какими они бывают?

Заранее уточню, что мы будем говорить только про компьютерные игры и защиты на них. Если брать программное обеспечение, то говорить можно много и долго. В широком представлении, защиты бывают «навесные» (также известные как «протекторы»), а также встраиваемые еще на этапе разработки. Последних пока очень мало, самые известные — это недавние разработки Ubisoft и Electronic Arts. Если же брать более узкое представление, то спектр классификации расширяется. Можно выделить защиты, работающие по принципу привязки к физическому DVD-диску, требующие онлайн-активации или доступа в интернет, или привязывающиеся к конкретной системе пользователя (наработки такого плана есть, например, у StarForce).

Давайте разберем каждую чуть подробнее.

Навесные защиты, такие как SecuRom, SolidShield, StarForce и покойная ныне SafeDisc — самые яркие примеры, знакомые практически любому пользователю. Это целые защитные комплексы, которые включают в себя не просто проверку на наличие диска в приводе, но и более совершенные методы его распознавания, а также широкие возможности по защите исполняемых файлов от хакеров. Например, сильные антиотладочные приемы, шифрование данных, эмуляция работы системных функций, собственные виртуальные машины. Кроме того, широко известны приемы более глубокой интеграции: к примеру, известная всем StarForce File System (SFFS) или SecuRom с защитой от изменения ресурсов игры (GTA 4).

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

Защиты, работающие на привязке к физическому носителю, появились очень давно. Самая простая, массовая и, если можно так выразиться, «первопроходная» — это, конечно CDCheck. Как видно из названия, эта защита просто проверяет наличие диска в приводе. Возможности этой защиты сильно ограничены: максимум она способна проверить метку диска, сравнить имена файлов и их размер. Десятки строк кода — и практически никакой пользы. Более современные методики уже используют собственные драйвера для определения подлинности диска, специальные процедуры проверки целостности исполняемых файлов и многие другие приемы.

Системы, требующие онлайн-активации или доступа в интернет — это механизмы наподобие Steam, Ubisoft DRM и так далее. Сейчас модули онлайн-активации стали встраивать и в «протекторы», которые раньше могли быть привязаны только к диску. Смысл этих защит предельно понятен — копия игры распространяется с уникальным ключом (идентификационным номером), который должен быть проверен на сервере активации компании издателя. Дальнейшие действия защиты предугадать несложно — от банальной команды «разрешить запуск игры» до расшифровки ресурсов или «докачивания» недостающих файлов.

Защиты с привязкой к системе пользователя достаточно редки, здесь стоит рассказать разве что о StarForce, которая проверяет все цифровые данные устройств компьютера, и если при проверке они не совпадут с эталонными (полученными при первом «валидном» запуске), то StarForce не позволит запустить игру.

А как реализуется многоуровневая и ступенчатая система защиты? То, что это затратно (GTA 4) мы поняли. Но удобно ли это?

На самом деле, не так страшен черт, как его малюют. Такие меры вряд ли особо эффективны, но то, что именно они надоедают пользователям, а некоторых вообще вводят в ступор — факт. Если брать в пример все тот же многострадальный GTA 4, то тут присутствует три этапа реализации защиты — это онлайн-активация, CDCheck и проверка целостности данных во время игры. Вот только ни к каким выдающимся результатам этот метод не привел, и все это можно «сломать», даже не имея на руках копии игры, ограничившись ее исполняемыми файлами. Говоря об удобстве, нужно упомянуть о двух сторонах медали — разработчики и пользователи, причем проблемы возникают и у тех, и у других. Первым все это сулит большие затраты и недовольство пользователей, ну а вторым головную боль приносит так надоевший за годы диск в приводе. К тому же, любой CD (как и привод) со временем изнашивается, а это еще один немаловажный вопрос.

Какая самая непробиваемая защита из тех, что представлены на рынке, сможет дать издателям нужный результат?

Смотря какого результата хотят добиться разработчики: угодить пользователям или предотвратить пиратство. А может компромиссный вариант? Честно говоря, издатели всегда хотят предотвратить пиратство, а решений для остальных двух пунктов просто не существует. Даже простой CDCheck, установленный, например, на «Dragon Age: Начало», The Sims 3 или Mass Effect 2 заставляет пользователей негодовать... И напрасно авторы идут на уступки, а пользователи, особенно те, кто поддался стадному инстинкту, начинают на каждом углу интернетов вопить о том, что их в очередной раз обделили. Что же касается желаемого результата — это защиты собственной разработки, которые внедряются на стадии разработки и имеют глубокую интеграцию в код игры. Нужно только трезво оценивать свои возможности и помнить, что «ничто не вечно под луной».

Тот же вопрос, но теперь говоря об удобстве пользователя. Какие защиты не ущемляют общечеловеческих прав, и при этом являются наиболее удобными?

Как я уже сказал, пользователи не примут никакой защиты, а зря. Действительно, большинство защит доставляет немало проблем (а в случае StarForce третьей версии, это еще мягко сказано). Но нужно осознавать, что издатели и разработчики должны получить те деньги, что они затратили на продукт. Во всех цивилизованных странах игры скачивают... большими объемами скачивают... а потом идут и покупают, если игра понравилась. Когда же начнет вопить совесть отечественных геймеров — загадка. Ответ же на вопрос прост — любая защита, которая позволит, подчеркиваю, без проблем создать резервную копию, положенную по закону. Такие защиты не дают никакого противодействия пиратству, но от повального распространения немного сберегут.

В чем, по твоему, заключается ошибка Ubisoft в просчетах с их DRM?

О, это отдельная тема для большого разговора :) Основная ошибка, конечно, в том, что они не смогли адекватно провести тесты, и, по сути, сдержать обещание — их сервера несколько раз не выдерживали наплыва пользователей и «падали». Было невозможно играть на протяжении определенного количества времени... неужели за это платили пользователи? А ведь стоимость игры включает в себя пусть и небольшую, но все-таки долю средств, потраченных на разработку и поддержку защиты. И что мы слышим? Что защита будет улучшаться и дорабатываться. А кому это надо? Разработчики буквально сообщают нам, что их защита станет еще злее и кусачей. Неужто они хотят сделать шаг в сторону пользователей? Это очень маловероятно: из-за особенностей защиты это почти невозможно. А ведь первый настоящий взлом такой защиты состоялся только 21 апреля. Если говорить о просчетах, то разработчики напортачили и с реализацией. Не спорю, идея хороша, хоть и доставляет неудобства пользователям, зато издатели, казалось бы, могли спать спокойно. Но не тут то было! Опять же, думаю, каждый пользователь слышал о том, что игру смогли эмулировать, на это ушло немало времени и сил, но все-таки результат оправдал средства. Но взломом защиты это назвать никак нельзя: те, кто предрекли защите смерть после эмулятора, очень сильно заблуждались. Эмуляция и взлом защиты — практически диаметрально противоположные вещи! Гору можно перейти, а можно и обойти... но, опять же, факт фактом — придуманы уже и обходные, «народные» средства борьбы с защитой. А самое интересное то, что Ubisoft ничего не говорит о будущем защиты: если бы они пообещали, что по истечению какого-либо времени выйдет патч, снимающий эту защиту (слухи есть, подтверждений — нет), то пользователи бы спокойнее и охотнее шли в магазины.

Ну а как обстоят дела на фронте StarForce?

Классическая StarForce уже отжила свой век. О смерти защиты речи не идет, но как только не ухищрялись разработчики: и онлайн активацию прикручивали, и виртуальную машину переписывали, и к железу привязку делали, и даже пытались создать систему резервного копирования (очень неудачная была реализация). И сейчас, делая вид, что услышали пользователей, даже позволяют определенное количество дней не засовывать диск в привод (но, на самом деле, дело совсем не в пользователях — так просто «ломать» сложнее). Как сильная и уверенная защита — да, как передовая и инновационная — уже нет и, вероятней всего, не будет. На счет «раз» ломаются даже очень свежие игры с последними версиями этой защиты.

Ну а каким тебе видится будущее защитных систем для игр? Что нового, на твой взгляд смогут придумать занимающиеся этим делом товарищи, дабы сохранить при себе свои пиастры?

Я более чем уверен, что все типы защит уйдут в онлайн. На самом деле, это будет удобно и разработчикам и пользователям (при условии покупки в онлайн-магазинах, конечно). Хотя найдутся и недовольные, причем с обеих сторон. В плане защиты информации чего-то революционно нового пока ждать не приходится. Скорее всего, все останется на нынешнем уровне, а активно будет развиваться онлайн-составляющая, но она зависит, как нетрудно догадаться, от развития интернета в целом, ведь разработчики ориентируются на широкую аудиторию, а не отдельно взятую страну (хотя и такое бывает, но о каких доходах тогда речь?). Пока каждый геймер не будет иметь дешевый и доступный интернет, недовольных будет много.

Какая из систем вам кажется наиболее серьезной и, может быть, «красивой» в плане выполнения заявленных задач?

Лично мой фаворит сегодня — Ubisoft DRM. Да, я не люблю эту защиту, да она уже давно взломана, да она не поддерживается на должном уровне. Но один тот факт, что эта защита заставляет задуматься о себе, уже о многом говорит. Да и плюсов у нее достаточно: наконец-то мы отходим от привязки к диску, мы получаем онлайн-хранилище для файлов сохранений, мы видим достойного конкурента всем остальным защитам. Ubisoft не радует ни перспективами, ни нынешним положением дел, но привносит позитив своими новыми идеями. К тому же, как и у любой уважающей себя защиты, у Ubisoft DRM есть несколько версий с разной степенью защищенности. Плюсов вышло меньше, чем минусов, о которых я говорил выше, но тут важно понимать, что каждая защита отживает свой жизненный цикл и каждая делает это по-разному. Например, тот же непобедимый SolidShield уже можно отправлять на свалку — недавно он был полностью разобран, а вот творение Ubisoft только начало свой жизненный путь. Посмотрим, добьется ли оно каких либо высот и сможет ли вылезти из моря позора и недовольных отзывов и cможет ли остаться в геймерско-издательских сердцах, как средство защиты от пиратов, а не от честных пользователей, отдавших свои кровные.

Понятно, значит системы, практикующие хранение пользовательских данных на серверах, побеждают. Вообще мы такое уже видели: так было в изначальном противостоянии «Microsoft Internet Explorer vs. Netscape Navigator», так будет работать «облачная» Onlive. А как ты думаешь, эффективна ли методика создания DLC после релиза в качестве метода защиты от пиратства?

Да, безусловно, эта идея эффективна, но только при добросовестном подходе со стороны разработчиков и разумной цене. Из-за нового пистолета на третьем уровне или нового костюма секретарши директора офиса из седьмой заставки никто игру проходить заново не станет, а вот несколько действительно новых, не нарушающих баланс «плюшек» вкупе с новой квестовой «веткой» — очень интересное предложение. Никто не против миниганов и новых костюмов, но тогда не стоит брать за это деньги — лучше приложите это в виде бонуса к серьезному DLC, и игроки будут счастливы.

И, напоследок, каково твое личное мнение на тему сегодняшней ситуации в контексте темы нашего обсуждения?

Что касается лично моего мнения, то защиты, равно как и хакеры, были, есть и будут! Если Вы действительно хотите что-то изменить в этом направлении, то принимайте активное участие и отстаивайте свою позицию. Если вы продолжите покупать игры с драконовской защитой, то ее и дальше будут эксплуатировать. А если нет, то... в качестве протеста аргумента лучше не найти.

Поделиться сообщением


Ссылка на сообщение

Хорошая статейка, познавательная.

Если вы продолжите покупать игры с драконовской защитой, то ее и дальше будут эксплуатировать. А если нет, то... в качестве протеста аргумента лучше не найти.

Вот тут я не согласен, если не будут покупать, то 1) Игры перестанут поступать. 2) Защита станет еще более драконовская.

Поделиться сообщением


Ссылка на сообщение

статья хорошая. пираты будут всегда. как говорится "что придумано человеком, то легко может быть сломано другим человеком", идеальная фраза, всегда найдется ключ к любому замку.

а защита действительно в перспективе уйдет в онлайн больше. По мне идеальной машиной цифровой дистрибьюции это Стим, а Юбисофт хороший ДРМ защитник, хотя со своими косяками.

тут ничего по-моему не придумаешь, да методы будут разные, но всегда найдется способ это обойти. и еще такой момент - ресурсы на перевод лучше мне кажется всегда оставлять открытыми, потому что не все знают языки МультиШестого региона, или изначально выкладывать общий доступ и варианты переводов, короче в этом нет ничего плохого, но добавит то чего так многие хотели)

Поделиться сообщением


Ссылка на сообщение

Пусть делаю щащиты, а то вообще перестануи игры на Пк издавать и все из-за пиратов сранных!

Поделиться сообщением


Ссылка на сообщение

А мне кажется существование пиратов даже порой выгодно для игростроевцев :big_boss: Хотя это вопрос скользкий

Поделиться сообщением


Ссылка на сообщение

MS сказали, что будут поддерживать ПК-гейминг, и других на это подбивать, так что все ок =))

Поделиться сообщением


Ссылка на сообщение
MS сказали, что будут поддерживать ПК-гейминг, и других на это подбивать, так что все ок =))

Ну да, несколько лет класть на ПК а потом влдруг....

Поделиться сообщением


Ссылка на сообщение

Самая лучшая защита - интересный онлайн-мультиплеер.

Поделиться сообщением


Ссылка на сообщение
Самая лучшая защита - интересный онлайн-мультиплеер.

+100

Поделиться сообщением


Ссылка на сообщение

Пираты стимулируют разрабов делать хорошие игры на пк. Ибо никто не будет покупать какое-то уг, если это можно скачать бесплатно. По крайней мере я не помню ни одного шедевра выпущенного на пк и при этом обломавшегося в плане прибыли. (mass effect, dragon age, ведьмак, starcraft, тот же кол оф дьюти и батлфилд.) Вощем я бы даже сказал, что пираты - это даже небольшой плюс, иначе бы нас кормили хламов, ведь зачем тратить дофига времени и делать что-то качественное, если можно сделать трешачёк и получить нормальную прибыль? ИМХО

Поделиться сообщением


Ссылка на сообщение
По крайней мере я не помню ни одного шедевра выпущенного на пк и при этом обломавшегося в плане прибыли.

Не помню всех названий. Арканум, Фаренгейт(на всех платформах), Какаято РПГ про где играли за зомби (не помню название, еще на движке БАлдурс гейт), Фолаут 1и2, Шенму1и2(правда это дримкаст), даже ДеусИк, Психонавты, За Гранью добра и зла. КОроче примеров шедевров которые обломались в прибыли масса.

Поделиться сообщением


Ссылка на сообщение

 

Bkmz, возможно, они обламались на ПК в не очень хорошой раскрутке и пиаре своих проектов.

Поделиться сообщением


Ссылка на сообщение

Статья интересная.

Во всех цивилизованных странах игры скачивают... большими объемами скачивают... а потом идут и покупают, если игра понравилась.

В этом увидел себя. Очень жаль, что у нас до сих пор качают все (Уже и до ПС3 добрались).

Самой лучше защитой считаю Steam. Это, как минимум, удобно. Правда, нашим издателям стоит работать мозгами периодически (Фэйл Буки с Darksiders).

Изменено пользователем Radeon

Поделиться сообщением


Ссылка на сообщение
Не помню всех названий. Арканум, Фаренгейт(на всех платформах), Какаято РПГ про где играли за зомби (не помню название, еще на движке БАлдурс гейт), Фолаут 1и2, Шенму1и2(правда это дримкаст), даже ДеусИк, Психонавты, За Гранью добра и зла. КОроче примеров шедевров которые обломались в прибыли масса.

Planescape: Torment!

И гг там не зомби)

На мании каждую неделю отчет по продажам есть. Разница в продаже игр на консолях и пк колоссальная. В десятки раз. Наличие/отсутствие защиты на это никак не влияет))

Поделиться сообщением


Ссылка на сообщение

Что то по Федю (FADE) ничего не сказал, а жаль.

Очень забавная штука :)

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас популярно

  • Продвигаемые темы

  • Последние сообщения

    • Ты сказал, что достаточно лишь “выдержать стиль” в коде, оправдывая свои орфографические ошибки на письме, то есть логично предположить, что раз достаточно выдержать стиль кода, то ты допускаешь ошибки в коде по аналогии. Достаточно ведь только стиль выдержать и ничего более, разве нет, с твоих же слов?) И всё-таки стиль речи и ошибки в написании, это, мягко говоря, вещи разные, странно, что ты ставишь между ними равенство. Пока ты не начал впаривать, что твои ляпы якобы когда-нибудь станут нормой, оправдываясь, заметь, что лично я тебе до того момента вообще ничего не говорил. Пока другой человек не попросил подсветить ошибки, я опять-таки спокойно прошёл мимо них. К чему приведёт? Ну, на сколько могу судить, приводит пока что только к смайликам. Заметь, тебя никто тут не минусует, ну и до тех пор, пока ты сам не ёрничаешь, то тебя и не поддевают даже, тебе показывают путь к самосовершенствованию в весьма спокойной манере с шутками и прибаутками.
    • Пускай следуют, я им что не даю что ли? Ты когда отвечаешь, ты понимаешь на что ты отвечаешь? Стиль это вот это. float playerGold = 3f; float _playerGold = 3; float playergold = 3f; float PlayerGold = 3f;   bool inventoryOpen; bool menuClose; if(inventoryOpen && !menuClose) {
      }   if(inventoryOpen==true & menuClose==false)
      {
      }

      это стиль, на что тут компилятор будет ругаться? все будет работать, некоторые варианты тут совсем не правильные, но ошибкой они не будут восприняты движком.   Пойми, что мне все равно, кто что как пишет, включая меня самого. Пока я понимаю других, и пока они понимают меня — все равно. Успокойся уже. Хочешь идти править каждую ошибку в каждом посте за каждым человеком? Дерзай. Посмотришь к чему это приведет.
    • по тому, что есть в стиме выглядит как игра из 2010х или с мобилок. локации на детализацию слабы. какой то полёт и беготня с видом со спины и бой как с любой РПЖ на мобиле в изометрии. так, что похоже, что перемещения будут типа Subway Surfers и бой аля мобилка с двумя-четырьмя скилами. CGI ролик симпатичен, но на этом как то всё...
    • Вводное слово “пожалуйста”, выделяется запятыми. Есть нюансы, впрочем, то есть не всегда выделяется как одно слово. Первая запятая не помню точно, как обзывается случай, вроде бы обособление или что-то такое. Вторая — что-то про деепричастия.
    • Ты это, свои хотелки за вероятное будущее-то не выставляй. Есть нормы русского языка, которым люди следуют. А в это время ты своё незнание пытается выставить в свете того, что авось когда-нибудь твои ошибки станут нормами языка. Даже если вдруг когда-нибудь и станут, но сейчас-то нет. Любой интерпретатор с тобой не согласится. А компилятор и вовсе тебя красным подчёркнутым матом покроет и пошлёт править ошибки. Пойми, что ты всё-таки ты не средневековый крестьянин, да и не деревенский рубаха-парень, да и стилизовать себя под него ты явно не пытаешься, чтобы твои детские ошибки были хоть как-то оправданы. К обычным оЧепяткам, оговоркам и простым мелким ошибкам в т.ч. с запятыми и т.п. тут никто не докапывается (обычно), но когда ты пытаешься выставлять своё банальное невежество за норму — это уже перебор всё-таки. Ну а если на то дело пошло, то даже у просторечного стиля есть свои нормы, правила и нормы, которым следуют, когда нужно расписать персонажа подобного типажа. Это не просто взять и наобум налепить ошибок и исковеркать слова.
    • [vFonts.r01] В связи с внедрением разработчиков русского перевода от сообщества в игру, оставил только аутентичные кириллические шрифты.
    • Языки в мире вообще не совершенны и полны логических ошибок сами по себе, особенно французский. И ничего. Как-то никто вопросов не задает. Русский язык тоже не идеальный и время от времени в нем что-то меняют. Что-то с не правильного становится со временем правильным.  Сейчас правильно ставить ударение в слове звонит на второй слог. Хотя люди всё больше ставят ударение на корень в глаголах, чем на окончание. И скорее всего это скоро станет официальным “правильным” вариантом, может уже стало, я не особо слежу за этим, давно об этом читал. В языках программирования, главное выдерживать стиль, чтобы твой код понимали другие. В обычных языках я считаю, это тоже самое главное. Пока тебя понимают — всё ок. Если докапываться до каждой буковки и до каждой запятой, то вместо диалога у людей будет вечное редактирование ошибок. Если ты хотел показать мне, что такое не приятно читать, то надо было стараться сильнее. Я привык даже вот к такому: “приФфки, а ти ни ХоТил Бы ню такъс чтобы нимноЖечка, поФфармить асечки  то Ж я баЮсь одна миня моГутЪ убиФфать там злие пвпсчеры а ток ти са мной будефф и мы всих убфьем, мурь?”
    • Спасибо за развернутый ответ. Поживу тогда с костылем. Того, что работает мне с головой хватает
      В любом случае благодарю за вашу работу. Скрипт шикарный. )
    • Вообще-то зашито. Все млекопитающие играют в игры. Естественно, животные не играют в компьютерные игры, как и люди не играли до изобретения компьютеров. Тоже неправильный пример, т.к. без еды прожить нельзя, а без близости с другим человеком можно.
    • Да, как я и предполагал, за исключением дополнения в виде наблюдателя времени друзей.

      Экосистема менеджеров (Tampermonkey, Greasemonkey, Violentmonkey и др.), а также сред выполнения скриптов, встроенных в другие расширения (как в AdGuard), довольно разнообразна. Да, все они служат одной цели, но их внутренние реализации могут существенно отличаться. В основе их работы лежит концепция песочницы - изолированной среды, которая создается из соображений безопасности, чтобы пользовательский скрипт не мог бесконтрольно хозяйничать на странице, например, похищая личные данные. Но строгость этой песочницы и набор инструментов, которые предоставляются скрипту для общения с внешним миром, сильно варьируются. Хотя все они стремятся следовать общему стандарту Greasemonkey API, их реализации отличаются. Tampermonkey, на сегодняшний день, является наиболее функционально полным и стабильным менеджером, который реализует даже самые специфические, но ставшие стандартом де-факто в сообществе, возможности API, такие как unsafeWindow и гибкое управление кросс-доменными запросами. Другие менеджеры зачастую являются форками (ответвлениями) более старых версий или независимыми разработками, которые догоняют “золотой стандарт” по функциональности с разной скоростью. Иногда это приводит к тому, что в них отсутствуют определённые функции.

      Например, некоторое время назад была проблема с работой другого моего скрипта в OrangeMonkey (который использовал наш главадмин SerGEAnt). Она была связана с тем, как расширение обрабатывало разрешения на кросс-доменные запросы и взаимодействие с веб-редактором CKEDITOR, который используется на многих форумах на движке Invasion Board. Скрипту требовался доступ к API редактора, но OrangeMonkey не предоставлял необходимого моста для выхода из “песочницы”, что приводило к ошибке. В то же время в Tampermonkey этой проблемы уже не было, так как его разработчики реализовали более продвинутые механизмы взаимодействия с контекстом страницы. Это классический пример рассинхронизации в разработке, где одно расширение уже адаптировалось под новые веб-технологии, а другое - ещё нет. AdGuard, конечно, довольно мощнейший инструмент для блокировки контента и защита приватности, но выполнение пользовательских скриптов является его вторичной, хоть и очень полезной, функцией. Поэтому вполне объяснимо, что его песочница может быть более строгой, а среда выполнения не предоставляет некоторые узкоспециализированные, но критически важные для сложных скриптов API, такие как unsafeWindow. Это не столько недостаток, сколько фундаментальное различие в философии разработки: приоритет отдается максимальной безопасности, иногда в ущерб расширенной функциональности пользовательских скриптов. Теперь давайте пройдёмся по результатам. Это как раз то, о чём я писал в предыдущем сообщении. Во время разработки скрипт все еще мог получить список игр из window, но где-то с полторы недели назад Valve немного изменила свой фронтенд. Они всё активнее используют современные фреймворки, которые строят страницу динамически, а данные хранят внутри своей инкапсулированной экосистемы (состояние компонентов). Раньше переменные могли просто объявляться в глобальной области видимости, теперь же они "живут" внутри фреймворка, и доступ к ним снаружи затруднен. В какой-то момент массив с ID игр из списка желаемого (g_rgWishlistData), который раньше был легко доступен, стал инициализироваться таким образом, что его можно прочитать только через прямой доступ к JavaScript-контексту самой страницы. Именно для этого понадобился unsafeWindow. Он как ключ, который позволяет скрипту, работающему в изолированной песочнице, дотянуться до переменных на основной странице. Костыль (var unsafeWindow = window;) - это хороший фикс для предотвращения падения скрипта от ReferenceError, но он лишь создаёт псевдоним для window песочницы, в которой g_rgWishlistData по-прежнему не существует. AdGuard не предоставляет этот ключ, поэтому скрипт не может найти ID и сообщает об ошибке. Здесь причина схожа, но связана не столько с доступом к переменным, сколько с изоляцией сессии аутентификации. Ваше тестирование подтверждает, что среда AdGuard, скорее всего, выполняет скрипты в настолько изолированном контексте, что они не имеют полного доступа к вашей браузерной сессии на сайтах Steam. Для работы этих модулей необходима авторизация. Её отсутствие или изоляция приводят к неработоспособности: Наблюдатель: Его основная задача - отслеживать изменения в вашем списке желаемого и библиотеке. Для этого скрипт обращается к эндпоинту Steam /dynamicstore/userdata/:
      https://store.steampowered.com/dynamicstore/userdata/
      Когда вы авторизованы, сервер Steam отдает специальный JSON-файл, содержащий ID ваших игр из rgWishlist, rgOwnedApps и т.д. (в этом JSON также содержатся ваши настройки персонализации магазина, но нет и не может быть логина, хэша пароля, платёжной информации или токенов аутентификации). Скрипт использует эти ID, чтобы затем сделать отдельные, публичные запросы к API Steam и получить информацию по каждой конкретной игре. Когда скрипт через GM_xmlhttpRequest делает запрос к /userdata/, этот запрос должен содержать ваши аутентификационные данные. Если среда выполнения (AdGuard) не передает их, для сервера Steam этот запрос выглядит как анонимный, и он возвращает пустой ответ. Таким образом, у модуля просто нет исходных данных для работы - он не знает, за какими играми ему нужно следить, и его панель остается пустой. Время друзей: Механизм абсолютно такой же. Чтобы показать, сколько времени ваши друзья провели в игре, скрипт должен сначала узнать, кто ваши друзья. Эта информация находится на персонализированной странице сообщества Steam (friendsthatplay), например:
      https://steamcommunity.com/my/friendsthatplay/1245620
      она генерируется сервером динамически, специально для вашего аккаунта. Для анонимного пользователя или для скрипта, работающего в изолированной сессии без доступа к актуальным данным, такой страницы не существует - Steam просто не вернет нужные данные. Соответственно, без доступа к этой странице скрипт не может извлечь имена друзей и их наигранные часы и делает логичный вывод - “друзья не играли”. Фильтр “Только ваши DLC”: Этот фильтр в каталоге поиска полностью зависит от вашей личной библиотеки. Его механизм прост: при отображении каждого товара скрипт проверяет, является ли он дополнением (DLC). Если да, он определяет ID основной игры (parent_appid) и ищет его в вашем списке rgOwnedApps, полученном из того же /userdata/. Если вы не авторизованы или сессия недоступна, список rgOwnedApps пуст, и фильтр просто не сможет найти ни одного подходящего DLC. Помощники подарков (Gift Helpers): И на странице игры, и в списке желаемого, для корректной работы им необходима точка отсчета - цена и валюта в вашем регионе. Эту информацию Steam предоставляет пользователю через переменные g_strCountryCode и g_rgWalletInfo. Без них скрипт не может запросить локальную цену и выполнить правильную конвертацию для сравнения с ценой друга. Тем не менее, как вы и заметили, помощник на странице игры у вас сработал. Это связано с наличием в этом модуле специального костыля: если скрипт не может определить данные текущего пользователя, он по умолчанию использует данные для российского региона в качестве базовых. Это позволяет функции работать, но сравнение цен может быть неточным, если вы на самом деле находитесь в другом регионе. Для помощника в списке желаемого этот костыль уже не помогает, так как тот модуль при попытке получить ID игр со страницы. Вот как-то так.
  • Изменения статусов

    • Дмитрий Соснов  »  Tirniel

      Привет! ты разбираешься в компьютерном железе, сможешь помочь с советом по апгрейду старого компа?
      · 1 ответ
    • SHAMAH

      Куда вход на сайт убрали и ЗАЧЕМ? Хотел файл скачать, там только медленная загрузка и “зарегистрируйтесь”. Все. Пришлось вручную страницу входа прописывать.
      · 0 ответов
    • Nosferatu  »  behar

      Добрый вечер.
      Подскажите пожалуйста, у вас не осталось случайно исходников для фикса на широкоформатные мониторы для игры Vampire The Masquerade Redemption?
      Если да, то не могли бы вы ими поделиться, а если нет, то прошу прощенья что побеспокоил.
      Заранее спасибо.
      · 0 ответов
    • AlcoKolyic  »  makc_ar

      Здраствуйте! Извините, а можно попросить ссылку на место где можно взять перевод (патч или образ игры с переводом) El Shaddai: Ascension of the Metatron для ps3, пожалуйста? А то в теме к этой игре у меня не получилось найти работающие ссылки… Первая ведет в группу в которой удалены большинство постов, а пост с этой игрой ведет на сайт https://psnext.ru который сейчас не имеет отношения к видеоиграм. 
      · 0 ответов
    • oleg72  »  Boor

      https://www.skidrowcodex.net/fate-reawakened-goldberg/
      · 0 ответов
  • Лучшие авторы


Zone of Games © 2003–2025 | Реклама на сайте.

×