在实际使用中大部分的 Steam 帐号都启用了二步验证的,这使得帐号操作在 Linux 系统中的 ASF 操作起来比较麻烦,尤其是当本地网络和服务器的 SSH 连接不稳定时。实际上 ASF 的 headless 模式已经考虑到这一情况并给出了解决方案。
启用 IPC 和 Headless 模式
- 在 ASF 目录下的
config
子目录中打开ASF.json
全局配置文件 - 在文件中增加两行内容:
"Headless":true,
和"IPC":true
- IPC 在上一文中我已经介绍了,就是 ASF 的网页界面模式
- Headless 是 ASF 针对程序跑在服务器中的场景做出的优化,当 Headless 模式启动时程序不会尝试向用户界面(也就是 Windows CMD 或 Linux Shell)发出用户输入请求。当出现需要用户输入的情景时,比如二步验证输入,程序会自动终止。
- 这时候你的文件应该大致是这样子的
- 以
--process-required
为参数启动 ASF 程序
-
./ArchiSteamFarm --process-required
- 这个参数的用途是让 ASF 程序在处于 Headless 模式下遇到有用户输入的情况时不要停止程序,而是跳过错误,仅仅禁用相关 BOT
- 需要注意的是这个参数必须每次启动都带上,所以你需要修改开机启动时的命令
储存登录信息
- 和 Steam 客户端中的 “保存我的登录信息” 一样,当令牌被正确输入后,ASF 会储存用户的登录信息。在未来登录信息尚未过期之前,ASF 中的这个账号无论几次重新登录都只会以缓存的登录信息登录而不需要再次请求令牌
- 在 ASF IPC 界面中创建一个新的机器人,在这里我们将其命名为 agt 作为样例
- 创建机器人时做好各种内容配置,但将 "Enabled" 设置为 False,因为我们不需要其立刻启动
- 保存机器人配置,关闭窗口后点击网页左侧的 “命令”
- 在网页控制台中输入令牌
- 所有原本应在 Shell 中输入的内容在网页控制台中以 "input" 命令开头
- 控制台命令格式为
input [Bots] <Type> <Value>
,其中 Bots 为机器人名,Type 为输入类型,Value 为值
-
- 假设此时 agt 机器人的手机令牌显示二步验证码为
ABCDE
则输入内容为input agt TwoFactorAuthentication ABCDE
- 假设此时 agt 机器人的手机令牌显示二步验证码为
- 键入命令,控制台会返回
<agt>Done!
的提示
- 启用机器人,
start agt
- 此时你就会发现你启用二步验证的机器人已经直接登录完成了
- 事实上,Steam 的令牌验证似乎是可以验证过去时的令牌内容。比如说我在 2020 年 4 月 20 日 14 点整通过命令输入了令牌值为 ABCDE。当在过了一段时间后才启用机器人,这个时候 Steam 令牌已经成为了另一个值,但这个 Steam 帐号却可以直接验证通过。这意味着 ASF 储存了你输入命令那一时间点的 Steam 帐号和令牌信息并以此向 Steam 服务器请求验证,而 Steam 的服务器是可以接受这种 “过期的” 令牌值,只要这个 “过期的” 令牌值符合过期前的时间点即可。
邮箱验证方法
- 有些人并没有启用 Steam 手机令牌而使用邮箱验证码,这其实也是可以通过 ASF 验证的
- 首先不输入验证码,直接在 ASF 中登录一次帐号
- Steam 会向邮箱发送验证码,而 ASF 将会因为这次登录没有验证码而失败
- 和上一节的方法一样将邮箱验证码在控制台中输入
- 再次请求 ASF 登录账户,这时候你的 Steam 帐号就可以直接验证通过并登录成功了
删除登录信息
- 大多数情况下 ASF 缓存的登录信息都不需要删除,但一些特例情况下比如在有缓存信息的情况下仍然请求用户输入验证码,说明缓存登录信息可能过期,这时候就有可能需要删除缓存内容
- 只需要在 ASF 的
config
目录下删除机器人名的 bin 和 db 拓展名文件即可- 在本文的例子中就是
agt.db
和agt.bin
两个文件
- 在本文的例子中就是
- 在下次登录时,ASF 将重新请求二步验证码并重新创建登录信息