我目前正试图通过Steam登录获取我的sessionid和cookie。
当我手动登录并检查网络响应时,我可以看到我需要的信息。它主要位于 dologin /
http://imgur.com/a/ZFwAQ - 第一张图片是 getrsakey / ,第二张图片是 dologin /
在第二张图片上,我用红色框标记了我需要的东西。我想我只需要 browserid 和 steamMachineAuth 。
$url = "https://steamcommunity.com/login/getrsakey/";
$params = ['username' => "MyUsername", 'password' => "MyPassword"];
$cookie_jar = tempnam('/tmp', 'cookie');
$session = curl_init($url);
curl_setopt($session, CURLOPT_POST, true);
curl_setopt($session, CURLOPT_POSTFIELDS, $params);
curl_setopt($session, CURLOPT_HEADER, 1);
curl_setopt($session, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($session, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($session, CURLOPT_TIMEOUT, 30);
curl_setopt($session, CURLOPT_MAXREDIRS, 10);
curl_setopt($session, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($session, CURLOPT_COOKIEJAR, $cookie_jar);
$response = curl_exec($session);
die(var_dump($cookie_jar));
curl_close($session);
有了上面的卷曲,似乎我只是因为显而易见的原因而获得 getrsakey / 统计数据。我尝试用我制作的cookiejar做第二次卷曲请求,然后请求 dologin / 但是我回来的是
"{"success":false}bool(true)}"
TLDR:我需要 dologin / 中的 browserid 和 steamMachineAuth - 如果可能,请参阅上面的链接(第二张图片)基本上整个Cookie
答案 0 :(得分:0)
我知道问题被添加后已经过了一段时间,但我认为有人可能仍然需要回答。
正如您所说,您需要提出第二个请求 dologin / ,但不能使用您制作的cookiejar。
首先,当您向 getrsakey / 发送请求时,您只需要用户名参数(不需要密码)。
比响应你得到rsa密钥需要使用RSA方法加密密码(密钥分为密钥模数和密钥指数)。
RSA加密密码需要使用 base64 进行编码,这是您发送到 dologin /
的密码参数但不幸的是,如果帐户受到保护,STEAM可能希望获得Captcha代码和/或SteamGuard代码,因此您也需要实现它。
我没有使用PHP代码,但您可以查看使用C#编写的SteamBot并根据它编写代码。在SteamWeb.cs
文件中搜索 Dologin 方法:
https://github.com/Jessecar96/SteamBot/blob/master/SteamTrade/SteamWeb.cs#L88