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



我目前正在尝试从steam登录获得我的sessionid和cookie。

当我手动登录并检查网络响应时,我可以看到我需要的信息。它主要位于目录中/

https://i.stack.imgur.com/z0YjG.jpg -第一张图片是getrsakey/,第二张图片是dologin/

在第二张图片中,我用一个红框标记了我需要的东西。我想我只需要browseridsteamMachineAuth
$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);

使用上面的curl,由于显而易见的原因,我似乎只能得到getrsakey/ stats。我试着用我做的cookiejar做第二个curl请求,然后请求dologin/,但是我得到的都是

"{"success":false}bool(true)}"

TLDR:我需要browseridsteamMachineAuth来自dologin/ -见上面的链接(第二张图)如果可能的话,基本上是整个cookie

我知道问题添加后已经有一段时间了,但我想有人可能还需要一个答案。

就像你说的,你需要再次请求dologin/,但不是用你做的cookiejar。

首先,当您发送请求到getrsakey/时,您只需要username参数(不需要密码)。

Than in response你得到rsa密钥,你需要用rsa方法加密你的密码(密钥分为密钥模数密钥指数)。

RSA加密密码需要用base64进行编码,即发送给dologin/密码参数。

但不幸的是,如果帐户受到保护,STEAM可能想要获得验证码和/或SteamGuard代码,所以你也需要实现它。

我没有工作的PHP代码,但你可以看看用c#写的SteamBot,并根据它写你的代码。在SteamWeb.cs文件中搜索Dologin方法:https://github.com/Jessecar96/SteamBot/blob/master/SteamTrade/SteamWeb.cs L88

最新更新