Ваш код рабочий, если не считать последней строчки, где вы к строке плюсуете байты. Ответ вы не получаете потому, что запрос составлен неправильно, но это уже вопрос не языка программирования или сокетов, а формата запросов и ответов. Запрос должен начинаться с четырёх 'FF' байт.
import socket
IP = '195.62.53.149'
PORT = 27015
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.connect((IP, PORT))
sock.send(b'\xff\xff\xff\xffTSource Engine Query')
sock.settimeout(120)
text = sock.recv(1024)
print(b'res ->' + text)
> python cs_udp.py
b'recv -> \xff\xff\xff\xffI0Euro-Cs.Ru | Public | 1000FPS\x00de_dust2_2x2\x00cstrike\x00Counter-Strike\x00\n\x00\x03\x14\x00dl\x00\x011.1.2.7/Stdio\x00\x80\x87i'
UPD:
Я никогда не работал с этим форматом. Есть библиотека pytho-valve. Первый же пример из её документации отлично отрабатывает с твоим сервером без лишних телодвижений.
import valve.source.a2s
SERVER_ADDRESS = ('195.62.53.149', 27015)
with valve.source.a2s.ServerQuerier(SERVER_ADDRESS) as server:
info = server.info()
players = server.players()
print("{player_count}/{max_players} {server_name}".format(**info))
for player in sorted(players["players"],
key=lambda p: p["score"], reverse=True):
print("{score} {name}".format(**player))
> python udp_client.py
4/20 Euro-Cs.Ru | Public | 1000FPS
39 1UP|mam?a
31 zakeman4
16 Cosmodesant
0 (А.У.Е.ШПАНА) хуй
Ссылка на документацию