Как можно определить gsclient не устанавливая authemu, или еще лучше определить версию браузера клиента (поддерживает ли JS)

Сообщения
207
Реакции
120
Помог
11 раз(а)
Можно ли как то определить версию движка браузера CS 1.6 клиента , что бы понимать поддерживает он js или нет.
На крайняк решил ограничиться steam и gsclient там проверял js работает.
Но если стим определяется легко, то как определить gsclient не ставя authemu не нашел примеров. Подскажите, кто что знает, плз ...
 
Сообщения
207
Реакции
120
Помог
11 раз(а)
Не знаю на сколько такое определение gsclient будет верным ...
Попробовал тот что у меня на диске валяется и reunion выдает ему префикс 2 :

Код:
# OldRevEmu_Prefix1 (int)
# STEAM_a:b:c
# first prefix (a) for authids generated by old RevEmu
OldRevEmu_Prefix1 = 2;
Будет ли толк от такого топорного определения по префиксу STEAM_2 считать что это gsclient, или же я заблуждаюсь, так как обладаю слишком мылым количеством информации по данной теме.
 
Сообщения
207
Реакции
120
Помог
11 раз(а)
Не знаю на сколько такое определение gsclient будет верным ...
Попробовал тот что у меня на диске валяется и reunion выдает ему префикс 2 :

Код:
# OldRevEmu_Prefix1 (int)
# STEAM_a:b:c
# first prefix (a) for authids generated by old RevEmu
OldRevEmu_Prefix1 = 2;
Будет ли толк от такого топорного определения по префиксу STEAM_2 считать что это gsclient, или же я заблуждаюсь, так как обладаю слишком мылым количеством информации по данной теме.
Отвечаю на свои же вопросы, так как больше ответов не от кого ждать.
Кроме gsсlient с префиксом STEAM_2 могут и другие попадать ноу стимы с таким эмулятором ...

Все же через жопу, но можно определить старая/новая версия веб движка клиента, получая данные useragent в php.

Например в amxbans motd показывается через ban.php там можно добавить проверку $_SERVER['HTTP_USER_AGENT'] и потом вариативно занести результат проверки в БД либо отправить через rcon команду серверу.
 
Сообщения
1,016
Реакции
818
Помог
10 раз(а)
murlemur, моник гсм так же у тебя определится как гск в данном случае
 

d3m37r4

111111
Сообщения
1,428
Реакции
1,169
Помог
10 раз(а)
можно добавить проверку $_SERVER['HTTP_USER_AGENT'] и потом вариативно занести результат проверки в БД либо отправить через rcon команду серверу.
Или пойти лесом, когда протектор задетектит php содержимое в motd окне и заблочит открытие
 
Сообщения
77
Реакции
111
Помог
4 раз(а)
d3m37r4, ну да, php это же опасно, как минимум так считают некоторые разработчики протекторов.
Это так, первые ссылки с SO
Код:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

Код:
RewriteEngine on
RewriteBase /

RewriteCond %{THE_REQUEST} (.*)\.html
RewriteRule ^(.*)\.html $1.php [L]
 
Сообщения
47
Реакции
194
Помог
1 раз(а)
Я чет не очень понял, php же на сервере выполняется, к клиенту php код не попадает 🤔
 
Сообщения
207
Реакции
120
Помог
11 раз(а)
Или пойти лесом, когда протектор задетектит php содержимое в motd окне и заблочит открытие
Ну и если под таким протектором сидит старый браузер - то на этот алгоритм это вообще никак не повлияет, а я пока только такие сборки и видел.

Проверил на практике и вижу что это работает, вижу по консоли как заходят ноустимы с билдами в которых новый браузер.
То есть теперь кроме стимов я гарантированно могу показать и этим клиентам более красивые motd для тех же топ15, остальным буду показывать стандарный вид.

Если кому-то еще это будет интересно, могу более подробно описать пример реализации с кучками кода.
 
Сообщения
203
Реакции
324
Помог
3 раз(а)
murlemur, user-agent может содержать необходимую информацию. Если нужно надежно проверить, что js есть, то просто в motd окно добавь javascript код, который сделает запрос на твой бекенд (к примеру, можно iframe создать или другой ресурс подгрузить через DOM API). В моей системе идентификации игроков проверка на поддержку JS уже давно реализована подобным образом.
5 Сен 2022
а по поводу php кода — если в url на конце не будет .php, то нельзя узнать, выполнялся ли php код для клиента или нет, потому что код выполняется на бекенде. Достаточно правильно реврайты настроить для веб-сервера, чтобы скрыть php расширение
 
Сообщения
207
Реакции
120
Помог
11 раз(а)
В lite bans добавил при проверке куков для ноустимов параметр nost=1 что бы за него цепляться и проверять user agent:

Код:
if (is_user_steam(msgEnt))
    formatex(szBuffer, charsmax(szBuffer), "%s?check=1&steam=%s", g_Cvars[cookie_link], szAuth);
else
    formatex(szBuffer, charsmax(szBuffer), "%s?check=1&nost=1&steam=%s", g_Cvars[cookie_link], szAuth);
В ban.php добавил проверку на user agenta и если проходит то посылаю команду серверу add_user_nb "steamid" через rcon :

PHP:
if(isset($_GET['check']) && isset($_GET['nost']) && strpos($_SERVER['HTTP_USER_AGENT'],'Valve Half-Life')!== false)
{
    $steam = filter_input(INPUT_GET, 'steam', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
    $command = 'add_user_nb "'.$steam.'"';
   
    $command отправляю на сервер
}
Пример отправки команды на сервер через PHP

Ну и простенький плагин который ловит это все дело и позволяет через натив потом проверить :

Код:
#include <amxmodx>

static Trie:nb_users;

public plugin_natives()
    register_native("is_user_nb", "is_user_newbrowser", false);

public plugin_init()
{
    register_plugin("nb clients", "1.0.0", "MurLemur");
    register_concmd("add_user_nb", "add_user_newbrowser");
    nb_users = TrieCreate();
}

public is_user_newbrowser(plugin_id,params)
{
    new id = get_param(1), m_authid[30], i;
    get_user_authid(id, m_authid, charsmax(m_authid))
    return TrieGetCell(nb_users, m_authid, i)
}

public add_user_newbrowser()
{
    new szParseAuthid[30]
    read_argv(1, szParseAuthid, charsmax( szParseAuthid ));
    TrieSetCell(nb_users,szParseAuthid,1);
    return PLUGIN_HANDLED;
}
Ну и на всякий случай в htaccess сделал :

RewriteRule ^ban.html$ ban.php [L]
 
  • Нравится
Реакции: ssx

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу