<?php
function getRobloxUser($username) {
$ch = curl_init();
// Новый официальный API-эндпоинт (работает июль 2024)
$url = "https://users.roblox.com/v1/users/search?keyword=".urlencode($username)."&limit=1";
// Критически важные настройки SSL
$ssl_options = [
CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1_2,
CURLOPT_SSL_CIPHER_LIST => 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256',
CURLOPT_CERTINFO => true,
CURLOPT_CAINFO => __DIR__.'/cacert.pem' // Скачать https://curl.se/ca/cacert.pem
];
// Настройки запроса
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_TIMEOUT => 15,
CURLOPT_HTTPHEADER => [
'Accept: application/json',
'User-Agent: RobloxClient/2024.07.1',
'Origin: https://www.roblox.com',
'Referer: https://www.roblox.com/search/users?keyword='.urlencode($username)
],
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_DNS_SERVERS => '8.8.8.8,1.1.1.1'
] + $ssl_options);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch)) {
$error = [
'error' => 'CURL Error: '.curl_error($ch),
'ssl_info' => curl_getinfo($ch, CURLINFO_SSL_VERIFYRESULT),
'effective_url' => curl_getinfo($ch, CURLINFO_EFFECTIVE_URL)
];
curl_close($ch);
return $error;
}
curl_close($ch);
// Обработка ответа
$data = json_decode($response, true);
if (empty($data['data'][0]['id'])) {
return [
'error' => 'User not found',
'http_code' => $httpCode,
'response' => $data
];
}
return $data['data'][0]['id'];
}
// Тестирование
header('Content-Type: text/html; charset=utf-8');
echo "<h2>Roblox User ID Resolver</h2>";
$test_usernames = ['veskermen', 'Builderman', 'John Doe'];
foreach ($test_usernames as $username) {
$result = getRobloxUser($username);
if (is_array($result) && isset($result['error'])) {
echo "<div style='color:red; margin:10px; padding:15px; border:1px solid #f99;'>";
echo "<b>{$username}:</b> ".htmlspecialchars($result['error']);
if (isset($result['ssl_info'])) {
echo "<br>SSL Verify: ".$result['ssl_info'];
}
echo "</div>";
} else {
echo "<div style='color:green; margin:10px; padding:15px; border:1px solid #9f9;'>";
echo "<b>{$username}:</b> Found ID {$result}";
echo "<br><img src='https://thumbnails.roblox.com/v1/users/avatar?userIds={$result}&size=100x100&format=png' style='margin-top:5px;'>";
echo "</div>";
}
}
?>