Steam curl登录 - 获取cookie + sessionid(多个请求?)

时间:2015-07-13 22:27:52

标签: php curl steam

我目前正试图通过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

1 个答案:

答案 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