geel9 / steamauth Goto Github PK
View Code? Open in Web Editor NEWA C# library that provides vital Steam Mobile Authenticator functionality
License: MIT License
A C# library that provides vital Steam Mobile Authenticator functionality
License: MIT License
Hello. I've been inspecting the library just to get to know what requests should be used to link authenticator. Making a request to the https://steamcommunity.com/login/dologin results in such a response:
{'requires_twofactor': False, 'success': True, 'transfer_urls': ['https://store.steampowered.com/login/transfer', 'https://help.steampowered.com/login/transfer'], 'login_complete': True, 'transfer_parameters': {'remember_login': False, 'token': 'B05BCB25462C53AC9C0EF04E0EE16788C15CD819', 'token_secure': '5D9DC10A228229464E03CF7914958742BEB580D6', 'auth': '674d0b6c53d3889102219cf040cc0f24', 'steamid': '76561198349014164'}}
and no property called auth_token in order to use it in https://api.steampowered.com/ITwoFactorService/AddAuthenticator/v0001/
Can anybody help me here? Cookies and headers are exactly the same as in this library.
An unhandled exception of type 'System.NullReferenceException' occurred in SteamBot.exe
Additional information: Object reference not set to an instance of an object.
SteamGuardAccount.Session is null upon reaching:
SteamGuardAccount.Session.SteamLogin = SteamWeb.Token; // Line 734 of Bot.cs
This is happening with both the nuget version of SteamAuth and a fresh compile from github.
My .auth file contains the following(it's what I dumped back when I was planning to use node-steam)
{"shared_secret":"JxxxxxxxxxxxxxpUxxxxxxx/xxo=","serial_number":"18000000000000000002","revocation_code":"000000","uri":"otpauth://totp/Steam:0000000000000?secret=E50000000000000000000RG0000000E2&issuer=Steam","server_time":"1456917892","account_name":"d000000000002","token_gid":"b00000000000009","identity_secret":"Hxxxxxxxxxxxxxxxxxxxxxxxxxk=","secret_1":"xxxxxxxxxxxxxxxxxxxxxxxxxxx=","status":1}
Cant log in to account that already has a Mobile Authenticator - endlessly requesting Steam Guard code: http://take.ms/Ta8Hd
Geel, I'm reading through the code right now, and you are a visionary, I don't know how you even found these undocumented methods. I can sorta understand the code so if you get lazy and want someone to document the library, I can lend a hand.
Anyways, this happens when attempting to add a new account that fails because it already has mobile auth enabled on another account. It's after it asks me for an encryption key even though the login failed - which is probably the issue. Might want to catch that exception.
************** Exception Text **************
System.ArgumentException: Password is empty
at Steam_Desktop_Authenticator.FileEncryptor.DecryptData(String password, String passwordSalt, String IV, String encryptedData)
at Steam_Desktop_Authenticator.Manifest.GetAllAccounts(String passKey)
at Steam_Desktop_Authenticator.Manifest.VerifyPasskey(String passkey)
at Steam_Desktop_Authenticator.MainForm.loadAccountsList()
at Steam_Desktop_Authenticator.MainForm.btnSteamLogin_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Exception Text **************
System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\XXXX\Downloads\SDA1.0.5\steamguard'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileSystemEnumerableIterator1.CommonInit() at System.IO.FileSystemEnumerableIterator
1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)
at System.IO.Directory.EnumerateFiles(String path)
at Steam_Desktop_Authenticator.PhoneBridge.PullJsonNoRoot(String id)
at Steam_Desktop_Authenticator.PhoneBridge.ExtractSteamGuardAccount(String id, Boolean skipChecks)
at Steam_Desktop_Authenticator.PhoneExtractForm.Extract()
at Steam_Desktop_Authenticator.PhoneExtractForm.CheckDevice()
at Steam_Desktop_Authenticator.PhoneExtractForm.PhoneExtractForm_Shown(Object sender, EventArgs e)
at System.Windows.Forms.Form.OnShown(EventArgs e)
at System.Windows.Forms.Form.CallShownEvent()
at System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbacks()
I've made change to framework(4.5 from 4.5.2) and ran mono testbed.exe
Unhandled Exception:
System.Net.WebException: Error getting response stream (Write: The authentication or decryption has failed.): SendFailure ---> System.IO.IOException: The authentication or decryption has failed. ---> Mono.Security.Protocol.Tls.TlsException: Invalid certificate received from server. Error code: 0xffffffff800b010a
at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.RemoteValidation (Mono.Security.Protocol.Tls.ClientContext context, AlertDescription description) [0x00000] in :0
at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.validateCertificates (Mono.Security.X509.X509CertificateCollection certificates) [0x00000] in :0
at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.ProcessAsTls1 () [0x00000] in :0
at Mono.Security.Protocol.Tls.Handshake.HandshakeMessage.Process () [0x00000] in :0
at (wrapper remoting-invoke-with-check) Mono.Security.Protocol.Tls.Handshake.HandshakeMessage:Process ()
at Mono.Security.Protocol.Tls.ClientRecordProtocol.ProcessHandshakeMessage (Mono.Security.Protocol.Tls.TlsStream handMsg) [0x00000] in :0
at Mono.Security.Protocol.Tls.RecordProtocol.InternalReceiveRecordCallback (IAsyncResult asyncResult) [0x00000] in :0
--- End of inner exception stack trace ---
at Mono.Security.Protocol.Tls.SslStreamBase.AsyncHandshakeCallback (IAsyncResult asyncResult) [0x00000] in :0
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.EndGetRequestStream (IAsyncResult asyncResult) [0x00000] in :0
at System.Net.HttpWebRequest.GetRequestStream () [0x00000] in :0
at SteamAuth.SteamWeb.Request (System.String url, System.String method, System.Collections.Specialized.NameValueCollection data, System.Net.CookieContainer cookies, System.Collections.Specialized.NameValueCollection headers, System.String referer) [0x00000] in :0
at SteamAuth.SteamWeb.MobileLoginRequest (System.String url, System.String method, System.Collections.Specialized.NameValueCollection data, System.Net.CookieContainer cookies, System.Collections.Specialized.NameValueCollection headers) [0x00000] in :0
at SteamAuth.UserLogin.DoLogin () [0x00000] in :0
at TestBed.Program.Main (System.String[] args) [0x00000] in :0
[ERROR] FATAL UNHANDLED EXCEPTION: System.Net.WebException: Error getting response stream (Write: The authentication or decryption has failed.): SendFailure ---> System.IO.IOException: The authentication or decryption has failed. ---> Mono.Security.Protocol.Tls.TlsException: Invalid certificate received from server. Error code: 0xffffffff800b010a
at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.RemoteValidation (Mono.Security.Protocol.Tls.ClientContext context, AlertDescription description) [0x00000] in :0
at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.validateCertificates (Mono.Security.X509.X509CertificateCollection certificates) [0x00000] in :0
at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.ProcessAsTls1 () [0x00000] in :0
at Mono.Security.Protocol.Tls.Handshake.HandshakeMessage.Process () [0x00000] in :0
at (wrapper remoting-invoke-with-check) Mono.Security.Protocol.Tls.Handshake.HandshakeMessage:Process ()
at Mono.Security.Protocol.Tls.ClientRecordProtocol.ProcessHandshakeMessage (Mono.Security.Protocol.Tls.TlsStream handMsg) [0x00000] in :0
at Mono.Security.Protocol.Tls.RecordProtocol.InternalReceiveRecordCallback (IAsyncResult asyncResult) [0x00000] in :0
--- End of inner exception stack trace ---
at Mono.Security.Protocol.Tls.SslStreamBase.AsyncHandshakeCallback (IAsyncResult asyncResult) [0x00000] in :0
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.EndGetRequestStream (IAsyncResult asyncResult) [0x00000] in :0
at System.Net.HttpWebRequest.GetRequestStream () [0x00000] in :0
at SteamAuth.SteamWeb.Request (System.String url, System.String method, System.Collections.Specialized.NameValueCollection data, System.Net.CookieContainer cookies, System.Collections.Specialized.NameValueCollection headers, System.String referer) [0x00000] in :0
at SteamAuth.SteamWeb.MobileLoginRequest (System.String url, System.String method, System.Collections.Specialized.NameValueCollection data, System.Net.CookieContainer cookies, System.Collections.Specialized.NameValueCollection headers) [0x00000] in :0
at SteamAuth.UserLogin.DoLogin () [0x00000] in :0
at TestBed.Program.Main (System.String[] args) [0x00000] in :0
Hey,
I'm using SteamBot with SteamAuth. I want to link SteamBot with my account to be able to trade. Email confirmation is working. On setting SMS-Code an error occurs: "BadSMSCode". I'm sure to type the correct code :D
Any tips on how to fix it?
PS: My account is just 1 day old and I linken and unlinked SteamDesktopAuthenticator. Could this be an issue? If yes, can I create a new account and link it with SteamBot or are there any limitations.
Thanks for your help :)
Hi,
Is this a known bug?
Thanks.
I swear I authenticated an account fine just this morning but now I must have tried it 50+ times and I'm getting GeneralFailure whenever it gets to the part where it's supposed to send an SMS code to the phone number. I've tried multiple phone numbers and account and even on different computers. I've even tried using the Steam Desktop Authenticator and it just goes to the main menu whenever the SMS code is supposed to be sent.
Is this an issue with steam servers or the steamauth program?
Its saying Login Failed to generate 2FA code. Make sure you have linked the authenticator via Steambot.
How do I link the authenticator via steambot?
what is it http://i.imgur.com/8Cb9cCh.png
The format of the deviceID generated by the SteamAuth library appears to be different than the type generated by Steam. Steam's deviceIDs appear to be random hex characters in groups of 8-4-4-4-12 seperated by a hyphen each.
Steam doesn't appear to be checking these atm, but we have to shift anyway to be on the safe side.
Its been working fine up until now no trade offers pop up anymore? even the confirm all button doesn't work it does the beep noise but nothing happends? i've got no idea what to do or how to fix it help please
Hi, about half month ago, I am able to use FetchConfirmations to get confirmation list and accept those confirmations. But now FetchConfirmations can't work. could you please take a look? Thanks in advance.
...
Sorry for stupid question, but how do I get mobile auth code here:
case LoginResult.Need2FA:
Console.WriteLine("Please enter your mobile authenticator code: ");
code = Console.ReadLine();
login.TwoFactorCode = code;
break;
Hello!
i got this error:
Unhandled Exception:
System.Net.WebException: Error getting response stream (Write: The authentication or decryption has failed.): SendFailure ---> System.IO.IOException: The authentication or decryption has failed. --->
what can i need to do?
Can someone give me an example of how to fetch confirmations with the .maFile? There is only a short description on the page and its not working for me at the moment. Would appreciated it.
When I trying to 'Setup new account'.
during first time setup (using SteamDesktopAuthenticator) the program carshes because it detects there is a phone connected (but there isnt) this is the text from the crash
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.InvalidOperationException: No process is associated with this object.
at System.Diagnostics.Process.EnsureState(State state)
at System.Diagnostics.Process.EnsureState(State state)
at System.Diagnostics.Process.GetProcessHandle(Int32 access, Boolean throwIfExited)
at System.Diagnostics.Process.WaitForExit(Int32 milliseconds)
at System.Diagnostics.Process.WaitForExit()
at Steam_Desktop_Authenticator.PhoneExtractForm.ResetAll()
at Steam_Desktop_Authenticator.PhoneExtractForm.Bridge_PhoneBridgeError(String msg)
at Steam_Desktop_Authenticator.PhoneBridge.OnPhoneBridgeError(String msg)
at Steam_Desktop_Authenticator.PhoneBridge.ExtractSteamGuardAccount(String id, Boolean skipChecks)
at Steam_Desktop_Authenticator.PhoneExtractForm.Extract()
at Steam_Desktop_Authenticator.PhoneExtractForm.CheckDevice()
at Steam_Desktop_Authenticator.PhoneExtractForm.PhoneExtractForm_Shown(Object sender, EventArgs e)
at System.Windows.Forms.Form.OnShown(EventArgs e)
at System.Windows.Forms.Form.CallShownEvent()
at System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbacks()
************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1063.1 built by: NETFXREL3STAGE
Steam Desktop Authenticator
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0
System
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1038.0 built by: NETFXREL2
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1038.0 built by: NETFXREL2
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1038.0 built by: NETFXREL2
Newtonsoft.Json
Assembly Version: 7.0.0.0
Win32 Version: 7.0.1.18622
SteamAuth
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1038.0 built by: NETFXREL2
System.Numerics
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1038.0 built by: NETFXREL2
System.Runtime.Serialization
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1038.0 built by: NETFXREL2
System.Xml.Linq
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1038.0 built by: NETFXREL2
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1038.0 built by: NETFXREL2
System.Data
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1038.0 built by: NETFXREL2
System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1038.0 built by: NETFXREL2
Accessibility
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1038.0 built by: NETFXREL2
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
Can I use it as bot on jackpot site ? If yes then how ?
Is it accepts trades automatically.
Hey
One of the reason i decide to rewrite steambot was of return antipatern there. The worst scenario is something like
bool CreateTradeOffer(params notImportant, out tradeOfferId)
{
//only example
if (params is wrong)
{
return false;
}
try
{
//call steam api
//tradeOfferId = callApi(params);
}
catch
{
return false;
}
}
This solutions has many disadvanates
I undersntand is in SteamBot, because it is make mostly for newbs, or people which just need their account accepts treadeoffer autmaticaly during hole day.
SteamBot can not be used in any serios project, it is excelent knowledge source. And newbs programmers wont handle exceptions, so they call if(call) then, its more or less understable.
But SteamAuth is library. its not for newbs its for programmers. It should look like
long CreateTradeOffer(params notImportant)
{
//only example
if (params is wrong)
{
throw new OurValidationException(what is wrong);
}
try
{
//call steam api
//tradeOfferId = callApi(params);
return tradeOfferId;
}
catch(Exception ex)
{
_log.Error(params + ex.ToString())
throw;
}
}
I know now it is too late for change, and this library was made in rush to cover the 2fa mobile needs.
Now i dont know if i have rewrite it too or not :-))). Perhaps not, cos im rly lazy and set mobile auth is only one step. I will watch that confirmations.
If you read till here, you re rly persistent :-) I just need to split it out, thx for watching.
With the newest update you are able to confirm multiple confirmations.
I have fiddled the request and here is it.
Tested on Motorola MotoG3.
I hope i decrypted all secret parameters :)
More than a week can not adding phone in Steam Desktop Authenticator.
It will be a fix or fix can not wait ?
Check this: JustArchiNET/ArchiSteamFarm#80
And this: Jessecar96/SteamDesktopAuthenticator#193
FinalizeAddAuthenticator()
always returns BadSMSCode
Hi, i am making trade bot in php, and i need somehow confirm withdrawing trade. I saw some links and with them you can confirm it. But no link is working.
https://steamcommunity.com/mobileconf/details/?p=android:{ANDROID ID}&a={SOMETHINK}&k={SOMETHINK}&t=$result&m=android&tag=conf. This is the link i am using now.
My question is, how your program confirms the trade? And can your program make new account and add Steam Guard to him (fully working bot)? Sorry for my bad english 👍
As in title. I'm using Steam Desktop Authenticator (can't find the issues page there, I'm assuming it's supposed to go here), and allowing the computer to sleep, or unplugging a network cable, results in the error:
Unhandled exception has occurred in your application. If you click Continue, the application will ignore this error and attempt to continue. If you click Quit, the application will close immediately.
The remote name could not be resolved: 'api.steampowered.com'.
I've attached the error log here.
I have 5 accounts linked to my android phone, but only my main account SteamAuth is having trouble with. That's because its status
property is set to null
:
{
"shared_secret" : "hidden",
"serial_number" : "hidden",
"revocation_code" : "hidden",
"uri" : "hidden",
"server_time" : "1449433185",
"account_name" : "hidden",
"token_gid" : "hidden",
"identity_secret" : "hidden",
"secret_1" : "hidden",
"status": null,
"steamguard_scheme": 2,
"steamid" : "XXXXXXXXXXXXXXXXX"
}
All my other accounts have status
set to 1
. Don't ask me why, I'm a simple end-user. :~
So programs that uses SteamAuth (ArchiSteamFarm, SteamDesktopAuthenticator) always fail to import this particular account, throwing this error (from SteamDesktopAuthenticator):
http://pastebin.com/raw/npnTqX3h
I should also note that using WinAuth to import this account from my phone, works fine.
Title says it all. PLEASE HELP.
Thank you.
I've been getting this error every time I try to input the SMS sent to my phone. I've tried different phone numbers and different accounts but I still get this error every time. Did valve change something with adding authenticators?
Okay so I have 2 accounts, my trade confirmation doesn't work on 1 account and I can't refresh the session because it says Failed to refresh session. Please try again soon. AND on the other account I can do everything what's going on? And I don't wanna wait for another 7 days. Please help
For any query. (except for authorization) an error
"An unhandled exception of type "System.NullReferenceException" in SteamAuth.dll
For more information: Object reference not set to an instance of the object."
*Get the latest version from the hub
This error appears on the functions:
RefreshSession()
FetchConfirmations()
then could not check
code:
static void Main(string[] args)
{
Console.WriteLine("Имя аккаунта:");
string account = Console.ReadLine();
string guardFile = System.IO.File.ReadAllText(account + ".maFile");
SteamGuardAccount guard = JsonConvert.DeserializeObject(guardFile);
Console.WriteLine("Тип запуска(code,trades):");
string type = Console.ReadLine();
Console.Clear();
switch (type)
{
case "code":
{
while (true)
{
string code = guard.GenerateSteamGuardCode();
Console.WriteLine("{0}", code);
System.Threading.Thread.Sleep(30000);
}
}
case "trades":
{
while (true)
{
if (guard != null)
guard.RefreshSession();
Confirmation[] tradeRequests = guard.FetchConfirmations();
foreach (Confirmation conf in tradeRequests)
{
guard.AcceptConfirmation(conf);
}
System.Threading.Thread.Sleep(20000);
}
}
}
}
It doesn't look like there's any way to tell the difference between the login results from an incorrect login with valid captcha and a valid login with incorrect captcha. they both return NeedCaptcha.
I realize valve don't have a separate flag on the login response, but the message returned is different between the two.
Valve return "Please verify your humanity by re-entering the characters below." if the login was correct but the captcha was wrong, and "Incorrect login." if the login was wrong and the captcha correct.
Out of curiosity, how would we save the file? It can never reach the step where the file is saved, for obvious reasons. Is this because Steam will only ever save the linked file once after linking mobile? Is the only available solution to unlink and relink using this library in order to capture the data?
string response for _hasPhoneAttached() is
{"success":false,"error_text":"Missing or invalid form session key","fatal":false}
so it ends with HasPhone as false, always.
Hey,
is it possible to add this to a steambot so he works the as before without escrow.
So login into a 2FA Account, Accept and Decline offers.
This issue is simlar to #51 so we can probably produce a fix at the same time.
I was able to catch this exception during debugging. The original HTML is like this.
<!DOCTYPE html>
<html class=" responsive touch" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
<meta name="theme-color" content="#171a21">
<title>Steam Community :: Confirmations</title>
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<link href="https://steamcommunity-a.akamaihd.net/public/shared/css/motiva_sans.css?v=LdCeTJr_TZ6A" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/shared/css/buttons.css?v=DqDbwtwoUvC4" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/shared/css/shared_global.css?v=zTXBgMbKPLMZ" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/globalv2.css?v=xwH7fFZlzxJe" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/skin_1/modalContent.css?v=.vXD4gU69vdZP" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/mobile/styles_mobileconf.css?v=7eOknd5U_Oiy" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/shared/css/motiva_sans.css?v=LdCeTJr_TZ6A" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/skin_1/html5.css?v=.MtSlvoLZL0Tb" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/skin_1/economy.css?v=iQbF3P_l9GzK" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/skin_1/trade.css?v=waXflBHgCJM2" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/skin_1/profile_tradeoffers.css?v=dV0KLdJys6M3" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/shared/css/shared_responsive.css?v=fnIXQFFIqv9g" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/skin_1/header.css?v=zVGNlnB7-F9B" rel="stylesheet" type="text/css" >
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-33779068-1', 'auto', {
'sampleRate': 0.4 });
ga('set', 'dimension1', true );
ga('set', 'dimension2', 'Steam Mobile App' );
ga('set', 'dimension3', 'mobileconf' );
ga('set', 'dimension4', "mobileconf\/conf" );
ga('send', 'pageview');
</script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/prototype-1.7.js?v=.55t44gwuwgvw"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/scriptaculous/_combined.js?v=9XVsa_Ni33oN&l=english&load=effects,controls,slider,dragdrop"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/global.js?v=Rnp1sQq2nwPg&l=english"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/jquery-1.11.1.min.js?v=.isFTSRckeNhC"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/shared/javascript/tooltip.js?v=._0UFXFGgvme-"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/shared/javascript/shared_global.js?v=tVoURzwqxPuO&l=english"></script>
<script type="text/javascript">$J = jQuery.noConflict();
if ( typeof JSON != 'object' || !JSON.stringify || !JSON.parse ) { document.write( "<scr" + "ipt type=\"text\/javascript\" src=\"https:\/\/steamcommunity-a.akamaihd.net\/public\/javascript\/json2.js?v=pmScf4470EZP&l=english\"><\/script>\n" ); };
</script><script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/jquery-ui-1.9.2.min.js?v=.ILEZTVPIP_6a"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/mobile/mobileconf.js?v=gzsr7wSdWAPR&l=english&mobileClientType=android"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/economy_common.js?v=tsXdRVB0yEaR&l=english"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/economy.js?v=6XKs2vVBvxm9&l=english"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/modalv2.js?v=dfMhuy-Lrpyo&l=english"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/modalContent.js?v=O5vbf725l6-I&l=english"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/shared/javascript/shared_responsive_adapter.js?v=qLEcRmcHn-kc&l=english"></script>
<link rel="image_src" href="https://steamcommunity-a.akamaihd.net/public/shared/images/responsive/share_steam_logo.png">
<script type="text/javascript">
$J(function() {
window.location='steammobile://settitle?title=' + encodeURIComponent( "Confirmations" );
});
</script>
</head>
<body class=" responsive_page">
<div class="responsive_page_frame no_header">
<div class="responsive_local_menu_tab">
</div>
<div class="responsive_page_menu_ctn localmenu">
<div class="responsive_page_menu" id="responsive_page_local_menu">
<div class="localmenu_content">
</div>
</div>
</div>
<div class="responsive_page_content_overlay">
</div>
<div class="responsive_fixonscroll_ctn nonresponsive_hidden no_menu">
</div>
<div class="responsive_page_content">
<script type="text/javascript">
g_sessionID = "8888888888888888888888";
g_steamID = "88888888888888888";
// We always want to have the timezone cookie set for PHP to use
setTimezoneCookies();
$J( function() {
InitMiniprofileHovers();
InitEmoticonHovers();
window.BindCommunityTooltip = function( $Selector ) { $Selector.v_tooltip( {'tooltipClass': 'community_tooltip', 'dataName': 'communityTooltip' } ); };
BindCommunityTooltip( $J('[data-community-tooltip]') );
});
$J( function() { InitEconomyHovers( "https:\/\/steamcommunity-a.akamaihd.net\/public\/css\/skin_1\/economy.css?v=iQbF3P_l9GzK", "https:\/\/steamcommunity-a.akamaihd.net\/public\/javascript\/economy_common.js?v=tsXdRVB0yEaR&l=english", "https:\/\/steamcommunity-a.akamaihd.net\/public\/javascript\/economy.js?v=6XKs2vVBvxm9&l=english" );});</script>
<div class="responsive_page_template_content">
<div id="mobileconf_list">
<div class="mobileconf_list_entry" id="conf1080296709" data-confid="1080296709" data-key="18144518417433075267" data-cancel="Cancel" data-accept="Create Listing" >
<div class="mobileconf_list_entry_content">
<div class="mobileconf_list_entry_icon">
<div style="border: 1px solid transparent;border-color: #D2D2D2;"><img src="https://steamcommunity-a.akamaihd.net/economy/image/W_I_5GLm4wPcv9jJQ7z7tz_l_0sEIYUhRfbF4arNQkgGQGKd3kMuVo47AQVZrguDIH6Z2uFCePfbDjEtCJ3-VVGvMZKM-UWgSddCNIZkb2tNi4u6gkwRUyOBV-IQAdIptMzF1w25DgSULTY5zoxSg_rJicTKG_iHB4cJ89w/32fx32f" srcset="https://steamcommunity-a.akamaihd.net/economy/image/W_I_5GLm4wPcv9jJQ7z7tz_l_0sEIYUhRfbF4arNQkgGQGKd3kMuVo47AQVZrguDIH6Z2uFCePfbDjEtCJ3-VVGvMZKM-UWgSddCNIZkb2tNi4u6gkwRUyOBV-IQAdIptMzF1w25DgSULTY5zoxSg_rJicTKG_iHB4cJ89w/32fx32f 1x, https://steamcommunity-a.akamaihd.net/economy/image/W_I_5GLm4wPcv9jJQ7z7tz_l_0sEIYUhRfbF4arNQkgGQGKd3kMuVo47AQVZrguDIH6Z2uFCePfbDjEtCJ3-VVGvMZKM-UWgSddCNIZkb2tNi4u6gkwRUyOBV-IQAdIptMzF1w25DgSULTY5zoxSg_rJicTKG_iHB4cJ89w/32fx32fdpx2x 2x"></div> </div>
<!--div class="mobileconf_offers_summary_chevron">
〉
</div-->
<div class="mobileconf_list_checkbox">
<input id="multiconf_1080296709" data-confid="1080296709" data-key="18144518417433075267" value="1" type="checkbox">
</div>
<div class="mobileconf_list_entry_description">
<div>Sell - Immortal Treasure I 2016</div>
<div> ¥ 1,150 (¥ 1,000)</div>
<div>30 minutes ago</div>
</div>
</div>
<div class="mobileconf_list_entry_sep"></div>
</div>
</div>
<div id="mobileconf_done" class="mobileconf_done mobileconf_header" style="display: none">
<div>All done</div>
<div>You're all done, there's nothing left to confirm.</div>
</div>
<div id="mobileconf_details" style="display: none">
</div>
<div id="mobileconf_buttons" style="display: none">
<div>
<div class="mobileconf_button mobileconf_button_cancel">
</div><div class="mobileconf_button mobileconf_button_accept">
</div>
</div>
</div>
<div id="mobileconf_throbber" style="display: none">
<div style="text-align:center; margin: auto;">
<img src="https://steamcommunity-a.akamaihd.net/public/images/login/throbber.gif" alt="Loading">
</div>
</div>
</div> <!-- responsive_page_legacy_content -->
<div id="footer_spacer"></div>
<div id="footer_responsive_optin_spacer"></div>
<div id="footer">
<div class="footer_content">
<span id="footerLogo"><img src="https://steamcommunity-a.akamaihd.net/public/images/skin_1/footerLogo_valve.png?v=1" width="96" height="26" border="0" alt="Valve Logo" /></span>
<span id="footerText">
© Valve Corporation. All rights reserved. All trademarks are property of their respective owners in the US and other countries.<br/>Some geospatial data on this website is provided by <a href="https://steamcommunity.com/linkfilter/?url=http://www.geonames.org" target="_blank" rel="noreferrer">geonames.org</a>. <br>
<span class="valve_links">
<a href="http://store.steampowered.com/privacy_agreement/" target="_blank">Privacy Policy</a>
| <a href="http://www.valvesoftware.com/legal.htm" target="_blank">Legal</a>
| <a href="http://store.steampowered.com/subscriber_agreement/" target="_blank">Steam Subscriber Agreement</a>
</span>
</span>
</div>
<div class="responsive_optin_link">
<div class="btn_medium btnv6_grey_black" onclick="Responsive_RequestMobileView()">
<span>View mobile website</span>
</div>
</div>
</div>
</div> <!-- responsive_page_content -->
</div> <!-- responsive_page_frame -->
</body>
</html>
I repeatedly called this method on the same steam account and it produced the same result. So i guess this isn't a random case. It's just the way Steam generate its HTML and we should take that into consideration when parsing it.
As you can see from the HTML above there are two data-confid and two data-key attribute per confirmation. But only 1 confDescRegex result.
Then, I added another confirmation to my account. Called FetchConfirmation and the HTML is like this
<!DOCTYPE html>
<html class=" responsive touch" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
<meta name="theme-color" content="#171a21">
<title>Steam Community :: Confirmations</title>
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<link href="https://steamcommunity-a.akamaihd.net/public/shared/css/motiva_sans.css?v=LdCeTJr_TZ6A" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/shared/css/buttons.css?v=DqDbwtwoUvC4" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/shared/css/shared_global.css?v=zTXBgMbKPLMZ" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/globalv2.css?v=xwH7fFZlzxJe" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/skin_1/modalContent.css?v=.vXD4gU69vdZP" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/mobile/styles_mobileconf.css?v=7eOknd5U_Oiy" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/shared/css/motiva_sans.css?v=LdCeTJr_TZ6A" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/skin_1/html5.css?v=.MtSlvoLZL0Tb" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/skin_1/economy.css?v=iQbF3P_l9GzK" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/skin_1/trade.css?v=waXflBHgCJM2" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/skin_1/profile_tradeoffers.css?v=dV0KLdJys6M3" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/shared/css/shared_responsive.css?v=fnIXQFFIqv9g" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/skin_1/header.css?v=zVGNlnB7-F9B" rel="stylesheet" type="text/css" >
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-33779068-1', 'auto', {
'sampleRate': 0.4 });
ga('set', 'dimension1', true );
ga('set', 'dimension2', 'Steam Mobile App' );
ga('set', 'dimension3', 'mobileconf' );
ga('set', 'dimension4', "mobileconf\/conf" );
ga('send', 'pageview');
</script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/prototype-1.7.js?v=.55t44gwuwgvw"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/scriptaculous/_combined.js?v=9XVsa_Ni33oN&l=english&load=effects,controls,slider,dragdrop"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/global.js?v=Rnp1sQq2nwPg&l=english"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/jquery-1.11.1.min.js?v=.isFTSRckeNhC"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/shared/javascript/tooltip.js?v=._0UFXFGgvme-"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/shared/javascript/shared_global.js?v=tVoURzwqxPuO&l=english"></script>
<script type="text/javascript">$J = jQuery.noConflict();
if ( typeof JSON != 'object' || !JSON.stringify || !JSON.parse ) { document.write( "<scr" + "ipt type=\"text\/javascript\" src=\"https:\/\/steamcommunity-a.akamaihd.net\/public\/javascript\/json2.js?v=pmScf4470EZP&l=english\"><\/script>\n" ); };
</script><script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/jquery-ui-1.9.2.min.js?v=.ILEZTVPIP_6a"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/mobile/mobileconf.js?v=gzsr7wSdWAPR&l=english&mobileClientType=android"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/economy_common.js?v=tsXdRVB0yEaR&l=english"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/economy.js?v=6XKs2vVBvxm9&l=english"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/modalv2.js?v=dfMhuy-Lrpyo&l=english"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/modalContent.js?v=O5vbf725l6-I&l=english"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/shared/javascript/shared_responsive_adapter.js?v=qLEcRmcHn-kc&l=english"></script>
<link rel="image_src" href="https://steamcommunity-a.akamaihd.net/public/shared/images/responsive/share_steam_logo.png">
<script type="text/javascript">
$J(function() {
window.location='steammobile://settitle?title=' + encodeURIComponent( "Confirmations" );
});
</script>
</head>
<body class=" responsive_page">
<div class="responsive_page_frame no_header">
<div class="responsive_local_menu_tab">
</div>
<div class="responsive_page_menu_ctn localmenu">
<div class="responsive_page_menu" id="responsive_page_local_menu">
<div class="localmenu_content">
</div>
</div>
</div>
<div class="responsive_page_content_overlay">
</div>
<div class="responsive_fixonscroll_ctn nonresponsive_hidden no_menu">
</div>
<div class="responsive_page_content">
<script type="text/javascript">
g_sessionID = "888888888888888888";
g_steamID = "88888888888888888";
// We always want to have the timezone cookie set for PHP to use
setTimezoneCookies();
$J( function() {
InitMiniprofileHovers();
InitEmoticonHovers();
window.BindCommunityTooltip = function( $Selector ) { $Selector.v_tooltip( {'tooltipClass': 'community_tooltip', 'dataName': 'communityTooltip' } ); };
BindCommunityTooltip( $J('[data-community-tooltip]') );
});
$J( function() { InitEconomyHovers( "https:\/\/steamcommunity-a.akamaihd.net\/public\/css\/skin_1\/economy.css?v=iQbF3P_l9GzK", "https:\/\/steamcommunity-a.akamaihd.net\/public\/javascript\/economy_common.js?v=tsXdRVB0yEaR&l=english", "https:\/\/steamcommunity-a.akamaihd.net\/public\/javascript\/economy.js?v=6XKs2vVBvxm9&l=english" );});</script>
<div class="responsive_page_template_content">
<div id="mobileconf_list">
<div class="mobileconf_list_entry" id="conf1080463377" data-confid="1080463377" data-key="18067422401992821592" data-cancel="Cancel" data-accept="Create Listing" >
<div class="mobileconf_list_entry_content">
<div class="mobileconf_list_entry_icon">
<div style="border: 1px solid transparent;border-color: #D2D2D2;"><img src="https://steamcommunity-a.akamaihd.net/economy/image/W_I_5GLm4wPcv9jJQ7z7tz_l_0sEIYUhRfbF4arNQkgGQGKd3kMuVo47AQVZrgyaZEie0NNAa-nVEDE8F5frT0eyOpLflhj3ZNxGaNNgdzYaitrr1BwQASjUU7NFXoMivcmWhwPsDAGQemA8zd0BgaaYg8TdX6TO6UywBArcUZM/32fx32f" srcset="https://steamcommunity-a.akamaihd.net/economy/image/W_I_5GLm4wPcv9jJQ7z7tz_l_0sEIYUhRfbF4arNQkgGQGKd3kMuVo47AQVZrgyaZEie0NNAa-nVEDE8F5frT0eyOpLflhj3ZNxGaNNgdzYaitrr1BwQASjUU7NFXoMivcmWhwPsDAGQemA8zd0BgaaYg8TdX6TO6UywBArcUZM/32fx32f 1x, https://steamcommunity-a.akamaihd.net/economy/image/W_I_5GLm4wPcv9jJQ7z7tz_l_0sEIYUhRfbF4arNQkgGQGKd3kMuVo47AQVZrgyaZEie0NNAa-nVEDE8F5frT0eyOpLflhj3ZNxGaNNgdzYaitrr1BwQASjUU7NFXoMivcmWhwPsDAGQemA8zd0BgaaYg8TdX6TO6UywBArcUZM/32fx32fdpx2x 2x"></div> </div>
<!--div class="mobileconf_offers_summary_chevron">
〉
</div-->
<div class="mobileconf_list_checkbox">
<input id="multiconf_1080463377" data-confid="1080463377" data-key="18067422401992821592" value="1" type="checkbox">
</div>
<div class="mobileconf_list_entry_description">
<div>Sell - The Manila Major 2016 Trophy Emoticon</div>
<div> ¥ 115 (¥ 100)</div>
<div>Just now</div>
</div>
</div>
<div class="mobileconf_list_entry_sep"></div>
</div>
<div class="mobileconf_list_entry" id="conf1080296709" data-confid="1080296709" data-key="18144518417433075267" data-cancel="Cancel" data-accept="Create Listing" >
<div class="mobileconf_list_entry_content">
<div class="mobileconf_list_entry_icon">
<div style="border: 1px solid transparent;border-color: #D2D2D2;"><img src="https://steamcommunity-a.akamaihd.net/economy/image/W_I_5GLm4wPcv9jJQ7z7tz_l_0sEIYUhRfbF4arNQkgGQGKd3kMuVo47AQVZrguDIH6Z2uFCePfbDjEtCJ3-VVGvMZKM-UWgSddCNIZkb2tNi4u6gkwRUyOBV-IQAdIptMzF1w25DgSULTY5zoxSg_rJicTKG_iHB4cJ89w/32fx32f" srcset="https://steamcommunity-a.akamaihd.net/economy/image/W_I_5GLm4wPcv9jJQ7z7tz_l_0sEIYUhRfbF4arNQkgGQGKd3kMuVo47AQVZrguDIH6Z2uFCePfbDjEtCJ3-VVGvMZKM-UWgSddCNIZkb2tNi4u6gkwRUyOBV-IQAdIptMzF1w25DgSULTY5zoxSg_rJicTKG_iHB4cJ89w/32fx32f 1x, https://steamcommunity-a.akamaihd.net/economy/image/W_I_5GLm4wPcv9jJQ7z7tz_l_0sEIYUhRfbF4arNQkgGQGKd3kMuVo47AQVZrguDIH6Z2uFCePfbDjEtCJ3-VVGvMZKM-UWgSddCNIZkb2tNi4u6gkwRUyOBV-IQAdIptMzF1w25DgSULTY5zoxSg_rJicTKG_iHB4cJ89w/32fx32fdpx2x 2x"></div> </div>
<!--div class="mobileconf_offers_summary_chevron">
〉
</div-->
<div class="mobileconf_list_checkbox">
<input id="multiconf_1080296709" data-confid="1080296709" data-key="18144518417433075267" value="1" type="checkbox">
</div>
<div class="mobileconf_list_entry_description">
<div>Sell - Immortal Treasure I 2016</div>
<div> ¥ 1,150 (¥ 1,000)</div>
<div>39 minutes ago</div>
</div>
</div>
<div class="mobileconf_list_entry_sep"></div>
</div>
</div>
<div id="mobileconf_done" class="mobileconf_done mobileconf_header" style="display: none">
<div>All done</div>
<div>You're all done, there's nothing left to confirm.</div>
</div>
<div id="mobileconf_details" style="display: none">
</div>
<div id="mobileconf_buttons" style="display: none">
<div>
<div class="mobileconf_button mobileconf_button_cancel">
</div><div class="mobileconf_button mobileconf_button_accept">
</div>
</div>
</div>
<div id="mobileconf_throbber" style="display: none">
<div style="text-align:center; margin: auto;">
<img src="https://steamcommunity-a.akamaihd.net/public/images/login/throbber.gif" alt="Loading">
</div>
</div>
</div> <!-- responsive_page_legacy_content -->
<div id="footer_spacer"></div>
<div id="footer_responsive_optin_spacer"></div>
<div id="footer">
<div class="footer_content">
<span id="footerLogo"><img src="https://steamcommunity-a.akamaihd.net/public/images/skin_1/footerLogo_valve.png?v=1" width="96" height="26" border="0" alt="Valve Logo" /></span>
<span id="footerText">
© Valve Corporation. All rights reserved. All trademarks are property of their respective owners in the US and other countries.<br/>Some geospatial data on this website is provided by <a href="https://steamcommunity.com/linkfilter/?url=http://www.geonames.org" target="_blank" rel="noreferrer">geonames.org</a>. <br>
<span class="valve_links">
<a href="http://store.steampowered.com/privacy_agreement/" target="_blank">Privacy Policy</a>
| <a href="http://www.valvesoftware.com/legal.htm" target="_blank">Legal</a>
| <a href="http://store.steampowered.com/subscriber_agreement/" target="_blank">Steam Subscriber Agreement</a>
</span>
</span>
</div>
<div class="responsive_optin_link">
<div class="btn_medium btnv6_grey_black" onclick="Responsive_RequestMobileView()">
<span>View mobile website</span>
</div>
</div>
</div>
</div> <!-- responsive_page_content -->
</div> <!-- responsive_page_frame -->
</body>
</html>
This is when I got totally confused. What? two data-confid and two data-key attribute again?! If the HTML code Steam is returning has always been like this, it's not possible that FetchConfirmation() can work without throwing an exception.
For reliability we'd probably be better off using a proper HTML parser like HTMLAgilityPack.
So is it true that you cant use this with a Linux bot?
Getting this on my Ubuntu VPS when using the linkauth command from SteamBot:
Unhandled Exception:
System.Security.Cryptography.CryptographicException: Private/public key mismatch
at Mono.Security.Cryptography.RSAManaged.ImportParameters (RSAParameters parameters) [0x00000] in <filename unknown>:0
at System.Security.Cryptography.RSACryptoServiceProvider.ImportParameters (RSAParameters parameters) [0x00000] in <filename unknown>:0
at SteamAuth.UserLogin.DoLogin () [0x00000] in <filename unknown>:0
at SteamBot.Bot.<LinkMobileAuth>b__63_0 () [0x00000] in <filename unknown>:0
at System.Threading.Thread.StartInternal () [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.Security.Cryptography.CryptographicException: Private/public key mismatch
at Mono.Security.Cryptography.RSAManaged.ImportParameters (RSAParameters parameters) [0x00000] in <filename unknown>:0
at System.Security.Cryptography.RSACryptoServiceProvider.ImportParameters (RSAParameters parameters) [0x00000] in <filename unknown>:0
at SteamAuth.UserLogin.DoLogin () [0x00000] in <filename unknown>:0
at SteamBot.Bot.<LinkMobileAuth>b__63_0 () [0x00000] in <filename unknown>:0
at System.Threading.Thread.StartInternal () [0x00000] in <filename unknown>:0
The same command works fine on my Windows computer. Do you think it's a mono issue or something you can fix?
Edit: Found this. Looks to be a bug with mono.
hi,
i use fetchConfirmation from your API and i have a problem because steam server response to me "steammobile://nologin" i'm a login and this problem is every time (1 day after login)
Thanks for help
Szymon / Simon
Currently trying to link an authenticator on steam-parental restricted account results in general failure.
Are there any plans on adding proper support for unlocking steam parental prior to linking new authenticator? I think that a good idea would be to provide extra argument in UserLogin
constructor that would accept string-based parental pin that can unlock given account.
See JustArchiNET/ArchiSteamFarm#113 for issue.
Check https://github.com/JustArchi/ArchiSteamFarm/blob/master/ArchiSteamFarm/ArchiWebHandler.cs#L545 for example of how I dealt with the issue of unlocking such accounts in my ASF.
Thank you in advance.
Anybody can help?
Hi! Do not accept a trade offer! And i have this error, what could be the problem?
http://imgur.com/a/mWlvE
When i open the authenticator, i have to write down the encryption code, but when i do it, an error occours. Than i have two opions: 1 Leave the authenticator running 2 Close it. System.ArgumentNullException: Der Wert darf nicht NULL sein.
Parametername: inputBuffer
When i leave it running, it wont show the login token. When i try to copy it anyway the following error occours:
System.ArgumentNullException: Der Wert darf nicht NULL sein.
Parametername: text
I cant login until i get my login-token. Until the error is fixed i cant login into my steam accout. Im sure im in big trouble i really need your help and fast support. I did this only to try to stop the trade hold and for scrap.tf2.
I documentated everything via lightshots, maybe it'll help
Since it is now RTM, is there a chance that this library is getting updated to support .net core?
While the program works great with most shared secrets, i found one particular problem when using a shared secret having "" Backslash in it. The program throws exception at line
byte[] sharedSecretArray = Convert.FromBase64String(this.SharedSecret);
Because the character "" is not a valid base64 and hence it cannot be converted. Any idea on how to achieve it ?
Hey guys, I keep getting the following exception when I try to fetch trade offers : "Cannot handle redirect from HTTP/HTTPS protocols to other dissimilar ones."
It happens intermittently. Does anybody knows what is the problem?
Happens when you have nothing to confirm (the regexes still match despise no id keys being present, occurs randomly.
I have dumped the response, and it does contain the
Temporary workaround: Added "contains (nothing to confirm)" to the first IF statement. Will test if it fixes the issue.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.