/
/
本命令由自动生成,请配合[ go get
-
u gitee.com
/
anyueyinluo
/
Efunc ]库使用。
func (集
*
Api) D登录_登录()
bool
{
局_网址 :
=
`https:
/
/
api.steampowered.com
/
IAuthenticationService
/
BeginAuthSessionViaCredentials
/
v1`
Http请求 :
=
集.Http客户端.EnableDumpAll().R()
Http请求.SetHeader(`Accept`, `application
/
json, text
/
plain,
*
/
*
`)
Http请求.SetHeader(`Accept
-
Language`, `zh
-
CN,zh;q
=
0.9
`)
Http请求.SetHeader(`Cache
-
Control`, `no
-
cache`)
Http请求.SetHeader(`Content
-
Type
`, `multipart
/
form
-
data; boundary
=
-
-
-
-
WebKitFormBoundarybxBPD59cJtdK0xKS`)
Http请求.SetHeader(`Origin`, `https:
/
/
store.steampowered.com`)
Http请求.SetHeader(`Pragma`, `no
-
cache`)
Http请求.SetHeader(`Referer`, `https:
/
/
store.steampowered.com
/
login
/
?redir
=
&redir_ssl
=
1
&snr
=
1_4_4__global
-
header`)
局_设备信息 :
=
[]
*
__.DeviceDetails{{
DeviceFriendlyName:
"Pixel"
,
PlatformType:
3
,
}}
局_pb :
=
__.EMsg9804{
AccountName: 集.账号,
EncryptedPassword: 密码加密(集.密码, 集.Rsa.PublicKey, 集.Rsa.MoShu),
EncryptionTimestamp: 集.Rsa.SuiJiShu,
SetPersistence: true,
SetRememberLogin:
1
,
WebsiteId:
"Mobile"
,
Language:
6
,
DeviceDetails: 局_设备信息,
}
局_pb字节集, err :
=
proto.Marshal(&局_pb)
if
err !
=
nil {
集.错误信息
=
"登录信息序列化失败:"
+
err.Error()
return
false
}
局_post :
=
map
[string]string{
"input_protobuf_encoded"
: base64.StdEncoding.EncodeToString(局_pb字节集),
}
Http请求.EnableForceMultipart().SetFormData(局_post)
var 局_请求结果
*
req.Response
for
i :
=
0
; i <
3
; i
+
+
{
/
/
重试三次防止意外
局_请求结果, err
=
Http请求.Post(局_网址)
if
len
(局_请求结果.Bytes()) >
0
|| err !
=
nil {
break
}
}
fmt.Printf(
"X-eresult:%s\n"
, 局_请求结果.GetHeader(
"X-eresult"
))
if
局_请求结果.GetHeader(
"X-eresult"
) !
=
"1"
{
i, _ :
=
strconv.Atoi(局_请求结果.GetHeader(
"X-eresult"
))
switch i {
default:
集.错误信息
=
局_请求结果.GetHeader(
"X-eresult"
)
+
局_请求结果.String()
fmt.
Print
(
"\n"
, 局_请求结果.Dump())
case
2
:
集.错误信息
=
"#Login_RefreshReason_Generic"
集.错误信息
=
"#请再次登录"
case
7
:
集.错误信息
=
"#Login_RefreshReason_Generic"
集.错误信息
=
"#请再次登录"
case
6
:
集.错误信息
=
"#Login_RefreshReason_LoggedInElsewhere"
集.错误信息
=
"#此帐户已在另一台计算机上登录"
case
34
:
集.错误信息
=
"#Login_RefreshReason_LogonSessionReplaced"
集.错误信息
=
"#此帐户已在别处登录"
case
5
:
集.错误信息
=
"#Login_RefreshReason_InvalidPassword"
集.错误信息
=
"您的帐户凭据已更改,密码错误"
case
26
:
集.错误信息
=
"#Login_RefreshReason_Revoked"
集.错误信息
=
"#您的会话已结束"
case
27
:
集.错误信息
=
"#Login_RefreshReason_Expired"
集.错误信息
=
"#您的会话已过期"
case
49
:
集.错误信息
=
"#Login_RefreshReason_PasswordRequiredToKickSession"
集.错误信息
=
"#确认您的凭据以从另一台计算机退出"
case
43
:
集.错误信息
=
"#Login_RefreshReason_AccountDisabled"
集.错误信息
=
"#您的帐户已被禁用"
case
69
:
集.错误信息
=
"#Login_RefreshReason_ParentalControlRestricted"
集.错误信息
=
"#您帐户的家长控制要求您确认凭据"
case
84
:
集.错误信息
=
"#Login_Error_RateLimit_Description"
集.错误信息
=
"#短期内来自您所在位置的失败登录过多。请稍后再试。"
}
return
false
}
fmt.Printf(
"登录响应Hex:%s\n"
,
hex
.EncodeToString(局_请求结果.Bytes()))
err
=
proto.Unmarshal(局_请求结果.Bytes(), &集.Response_EMsg147)
if
err !
=
nil {
集.错误信息
=
"登录结果反序列化失败:"
+
err.Error()
return
false
}
fmt.
Print
(
"\n"
, 局_请求结果.Dump())
if
集.Response_EMsg147.Steamid
=
=
0
{
return
false
}
return
true
}