在 Centos 下搭建 ArchiSteamFarm (ASF) 实现云挂卡并开启网页界面 (Web UI)一文中我已经介绍了ASF在Linux系统下安装并启用网页界面的方法。但在实际使用中大部分的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>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将重新请求二步验证码并重新创建登录信息
转载请标注来源
大佬请问一下挂机途中想玩游戏,之后想重新挂卡是不是本机退出steam后每次都要去vps上重启下服务?? 有手机令牌
大佬我输入指令它提示 This function is available only in headless mode!怎么办