Почему я не могу использовать php curl для получения профилей пользователей Steam и как получить изображение значка Steam?

В настоящее время я использую php для разработки веб-сайта о steam, который может загружать профиль пользователя, создавать карты игроков и так далее. Я использую Steam Web Api, чтобы получить необходимую информацию. Проблема в том, что, когда я собираюсь получить значки пользователя, я использую API «IPlayerService / GetBadges / v1», и он возвращает данные json, например:

{
"response": {
"badges": [
{
"badgeid": 23,
"level": 300,
"completion_time": 1434209651,
"xp": 125,
"scarcity": 0
},
{
"badgeid": 18,
"level": 15,
"completion_time": 1404061200,
"xp": 100,
"scarcity": 102167
},
{
"badgeid": 2,
"level": 3,
"completion_time": 1457872741,
"xp": 500,
"scarcity": 1334304
},
{
"badgeid": 13,
"level": 57,
"completion_time": 1356099851,
"xp": 260,
"scarcity": 5832743
},
{
"badgeid": 1,
"level": 3,
"completion_time": 1356099851,
"xp": 150,
"scarcity": 76725893
},
{
"badgeid": 1,
"appid": 231430,
"level": 3,
"completion_time": 1455540973,
"xp": 300,
"communityitemid": "817099833",
"border_color": 0,
"scarcity": 20438
},
{
"badgeid": 1,
"appid": 24010,
"level": 1,
"completion_time": 1403487961,
"xp": 100,
"communityitemid": "828384582",
"border_color": 0,
"scarcity": 15404
},
{
"badgeid": 1,
"appid": 35450,
"level": 1,
"completion_time": 1403573788,
"xp": 100,
"communityitemid": "842044372",
"border_color": 0,
"scarcity": 122236
},
{
"badgeid": 1,
"appid": 63380,
"level": 1,
"completion_time": 1403574599,
"xp": 100,
"communityitemid": "842169975",
"border_color": 0,
"scarcity": 222048
},
{
"badgeid": 1,
"appid": 303700,
"level": 1,
"completion_time": 1403743093,
"xp": 100,
"communityitemid": "866824198",
"border_color": 0,
"scarcity": 998614
},
{
"badgeid": 17,
"appid": 335590,
"level": 1,
"completion_time": 1420075581,
"xp": 100,
"communityitemid": "1438441936",
"border_color": 0,
"scarcity": 858393
},
{
"badgeid": 1,
"appid": 105450,
"level": 1,
"completion_time": 1451207235,
"xp": 100,
"communityitemid": "2454848086",
"border_color": 0,
"scarcity": 49755
},
{
"badgeid": 1,
"appid": 220200,
"level": 1,
"completion_time": 1451207275,
"xp": 100,
"communityitemid": "2454853894",
"border_color": 0,
"scarcity": 100821
},
{
"badgeid": 2,
"appid": 425280,
"level": 3,
"completion_time": 1451805075,
"xp": 300,
"communityitemid": "2483562201",
"border_color": 0,
"scarcity": 297565
},
{
"badgeid": 1,
"appid": 206440,
"level": 1,
"completion_time": 1451805331,
"xp": 100,
"communityitemid": "2549522337",
"border_color": 0,
"scarcity": 43807
},
{
"badgeid": 1,
"appid": 391220,
"level": 1,
"completion_time": 1455372224,
"xp": 100,
"communityitemid": "2699515873",
"border_color": 0,
"scarcity": 16843
},
{
"badgeid": 1,
"appid": 287390,
"level": 1,
"completion_time": 1457355907,
"xp": 100,
"communityitemid": "2764853882",
"border_color": 0,
"scarcity": 35158
}
]
,
"player_xp": 2735,
"player_level": 18,
"player_xp_needed_to_level_up": 65,
"player_xp_needed_current_level": 2600
}
}

Эти возвращенные данные говорят мне только о значке и appid и ничего не говорят об URL-адресе изображения значка. Я проверил изображение значка на Steam, это URL-адрес, как http://cdn.akamai.steamstatic.com/steamcommunity/public/images/items/105450/472be31927c4e77721fcba33bbd04b1331272e7e.PNG

поэтому я не могу получить URL только по appid.
Поскольку API-интерфейс Steam не может выполнить мое намерение, я пытаюсь использовать php curl для запроса страницы профиля пользователя Steam и страницы значка для получения необходимой информации, и мой код:

$url='http://steamcommunity.com/profile/76561198078931851';
$postFields='';
$cookie='';
$header=array('Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*//*;q=0.8', 'Accept-Encoding:gzip, deflate, sdch', 'Accept-Language:zh-CN,zh;q=0.8', 'Cache-Control:max-age=0', 'Connection:keep-alive','Host:steamcommunity.com', 'Upgrade-Insecure-Requests: 1','User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36');

$btch=curl_init($url);

curl_setopt($btch, CURLOPT_FAILONERROR, 0);
curl_setopt($btch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($btch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($btch, CURLOPT_TIMEOUT, 1);
curl_setopt($btch, CURLOPT_ENCODING, 'gzip,deflate,sdch');          //  防止乱码
curl_setopt($btch, CURLOPT_HEADER, 1);
curl_setopt($btch, CURLOPT_COOKIE, $cookie);
curl_setopt($btch, CURLOPT_HTTPHEADER, $header);
curl_setopt($btch, CURLOPT_HTTPGET, 1);

try{
$result=curl_exec($btch);
}
catch(exception $e)
{
echo $e->getMessage();
}
if(!$result)
{
echo 'false!';
}
echo '<pre>';
print_r($result);
echo '</pre>';

curl_close($btch);

Завиток сработал, но steam никогда не возвращает страницу профиля пользователя и вместо этого всегда перенаправляет запрос на домашнюю страницу сообщества steam и просит меня войти в систему. Поэтому я не могу приступить к загрузке профиля пользователя.
Я прочитал следующий связанный вопрос:
Steam Web API получает URL-адрес значка изображения
Кто-нибудь знает что-нибудь о том, как решить эту проблему, и не могли бы вы мне помочь? Большое спасибо заранее!

1

Решение

Кажется, я сам нашел способ решить проблему … просто используя
file_get_contents() вместо curl запросить страницу профиля пользователя steam. 🙂

0

Другие решения

Других решений пока нет …