Comments (17)
- control_error_mode
- DailyScores
- DelGameButton
- KG_AccurateSpeedo
- KG_CancelRaceShortcut
- KG_ChatHotkey
- KG_ComplexityPanel
- KG_ErrorWork
- KG_ExactSpeed
- KG_GameLog
- KG_SaveGameResult
- KG_SeparateGameLink
- KG_TimeoutAlert
- KG_YandexTranslator
- NoErrorCounter
- RecentGames
- save_race_in_blog
from kgscripts.
Я, к сожалению, в ближайшее время не смогу заняться адаптацией скриптов под новые клавогонки. Слишком мало свободного времени :(
from kgscripts.
Fenex, а не подскажешь, какой теперь самый простой способ получить игроков заезда и их результаты?
from kgscripts.
@P-h-e-m-m-e-r , через обращение к DOM: document.querySelectorAll('#players .player')
from kgscripts.
Исправил KG_YandexTranslator и KG_ComplexityPanel. На остальные пока нет свободного времени :(
from kgscripts.
KG_ChatHotkey тоже легко исправляется. "Game." поменять на другой объект. Знающие, исправьте на что-нибудь приемлемое, а то не уверен на что можно.
from kgscripts.
@P-h-e-m-m-e-r, там будет лучше использовать просто локальную переменную, чем делать «monkey patch» существующих глобальных объектов. Не знаю, о чем я вообще думал два года назад :(
from kgscripts.
KG_ComplexityPanel - в одиночном режиме пока все так же не работает, в дружеских, открытых - работает
from kgscripts.
Мда, действительно. Спасибо, исправлю как только появится время (KG_YandexTranslator это тоже касается, к слову).
from kgscripts.
Пока хватило времени лишь на анализ масштаба проблемы. Ситуация хуже, чем я думал.
Скрипт | Использование объектов game и Game |
Возможное решение |
---|---|---|
control_error_mode | Параметры заезда и статистика ошибок во время набора | Работа с DOM |
DailyScores | Параметры заезда и количество полученных очков при его завершении | Работа с DOM |
DelGameButton | Параметры заезда, статус его завершения, метод game.delresult |
Параметры и статус — из DOM, POST-запрос на /g/{game_id}.delresult |
KG_AccurateSpeedo | Текст заезда, время его начала и окончания | Переписать полностью. POST-запрос на /g/{game_id}.info с параметром need_text: 1 |
KG_CancelRaceShortcut | Метод game.delresult , статус завершения заезда |
Мониторинг DOM, POST-запрос на /g/{game_id}.delresult |
KG_ChatHotkey | monkey-patch объекта Game |
Убрать monkey-patch |
KG_ComplexityPanel | Текст заезда (до старта) | POST-запрос на /g/{game_id}.info с параметром need_text: 1 |
KG_ErrorWork | Методы Game.prototype.finish и Game.prototype.doErrorWork , поле game.isReadyForErrorWork |
Переписать полностью или удалить |
KG_ExactSpeed | Длина текста заезда, время начала и окончания заезда, статус окончания заезда | Переписать полностью. POST-запрос на /g/{game_id}.info с параметром need_text: 1 |
KG_GameLog | Все данные объекта game |
Переписать полностью или удалить |
KG_SaveGameResult | Все данные объекта game |
Переписать полностью или удалить |
KG_SeparateGameLink | monkey-patch объекта game , параметры заезда |
Параметры заезда — из DOM, убрать monkey-patch |
KG_TimeoutAlert | monkey-patch объекта game , параметры заезда |
Параметры заезда — из DOM, убрать monkey-patch |
KG_YandexTranslator | Текст заезда (до старта) | POST-запрос на /g/{game_id}.info с параметром need_text: 1 |
NoErrorCounter | Параметры заезда, статистика ошибок во время набора | Работа с DOM |
RecentGames | Параметры заезда | Работа с DOM |
hide_cars | Проверка на существование game |
Убрать или заменить проверку |
save_race_in_blog | Параметры заезда, статистика его завершения | Работа с DOM, monkey-patch XMLHttpRequest, POST-запрос на /api/profile/add-journal-post с объектом {userId: %USER_ID%, text: %TEXT%, hidden: false} |
from kgscripts.
Метод game.delresult
я скоро сделаю доступным, поэтому DelGameButton
и KG_CancelRaceShortcut
переделывать не нужно.
Уточнение: вызов game.delresult
можно не переделывать, но помимо этого в скриптах используется обращение к другим частям game
: это уже придётся переделать :(.
from kgscripts.
@Fenex, а зачем вообще нужно было делать их недоступными?
from kgscripts.
Метод
game.delresult
я скоро сделаю доступным, поэтомуDelGameButton
иKG_CancelRaceShortcut
переделывать не нужно.
Метод game.delresult
как раз было повторить проще всего. А вот публичные данные заезда (тип, допускаемые ранги, таймаут и т.д.), которые нужны многим скриптам, сейчас получить в разы сложнее.
@Fenex, правильно ли я понимаю, что старый код был вынесен в отдельный scope с целью создания некой защиты от читеров школьников, использовавших game.text
?
from kgscripts.
Да, одна из основных целей скрытия переменной - это чтобы нельзя было так легко просматривать текст перед заездом. Мне понравилось как подытожил унч эти изменения:
Это отвадит пионеров, которые научились, как макаки, тыкать в game.text
Убрать в замыкание переменную совсем не сложно и к тому же это не усложняет код, зато большинству теперь подглядеть текст будет негде.
От читов эти изменения естественно не спасут. Весь код работает на клиенте, поэтому чит написать можно в любом случае и при этом довольно легко. По умолчанию нельзя доверять результатам без капчи (квалификация) или TS.
from kgscripts.
Убрать в замыкание переменную совсем не сложно и к тому же это не усложняет код, зато большинству теперь подглядеть текст будет негде.
Здесь я согласен — даже такую элементарную защиту обойти будет многим не под силу.
Меня только несколько пугает объем изменений, которые необходимо будет внести в существующие скрипты (которые, в общем-то, game.text
и не использовали, за редкими исключениями).
И как бы потом все эти новые костыли в виде MutationObserver
-ов и monkey патчинга XMLHttpRequest
не вышли боком (как в плане производительности, так и в плане «читаемости» кода).
from kgscripts.
Может тогда стоит выставить в открытый доступ копию переменной game без поля text?
from kgscripts.
Ну что ж вполне "рациональный" подход, навтыкать палок в колеса, чтобы передвигаться потом пешком.) От читеров это все равно не спасет, зато наживаете себе и другим кучу геммороя) Я так понимаю, вариант открыть тексты перед заездом не рассматривался вообще? Или поиск какой-то разумной альтернативы.
P.s. По хорошему, вам стоило бы давно взять под крыло все эти скрипты и реализовать в основном интерфейсе. Или самим пораскинуть мозгами над юзабильностью сайта. Люди вам медвежью услугу оказали оптимизировав сайт и сделав его более удобным, а вы так наплевательски отнеслись.
from kgscripts.
Related Issues (20)
- http://klavogonki.ru/ Не могу восстановить свой пароль HOT 5
- Добавить klavogonki в About → Topics проекта на GitHub HOT 2
- HTTPS не работает при использовании KlavoTools. HOT 1
- Кнопки вместо выпадающих списков в статистике
- Выбор и приближение определенных периодов в статистике HOT 1
- Блок достижений и кликабельность застекольного содержимого БИО HOT 3
- Одновременно графики скорости и ошибок в статистике
- Улучшение работы над ошибками HOT 1
- Конфигурационный файл для klavotools HOT 25
- Переводчик для английских словарей HOT 5
- Относительные пути к скриншотам
- Функциональные тесты
- Некорректная работа скриптов на страницах с ангуляр-маршрутизацией
- Сайт на github pages HOT 1
- Вставка ника для шепота в чате по Shift + LeftClick HOT 5
- DailyScores: в klavotools kango не работает рейтинг за день
- Ожидаемое место в скрипте SortResults
- Bug KlavoEvents
- RecentGames: дублируется «закрепленный» тип заезда
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kgscripts.