ValvePython / steam

☁️ Python package for interacting with Steam
http://steam.readthedocs.io
MIT License
1.05k stars 127 forks source link

[BUG]Can't login on latest version #422

Open Left024 opened 1 year ago

Left024 commented 1 year ago

Description Can't login on latest version

Steps to Reproduce the behavior My repo to save steam game saves automatically: https://github.com/Left024/GameSaves You can see all the codes

Expected behavior client should login and no error print to console

Screenshots image

Versions Report

python -m steam.versions_report (Run python -m steam.versions_report and paste the output below) ```yaml steam: 1.4.4 Dependencies: vdf: 3.4 protobuf: 3.20.3 requests: 2.28.1 cachetools: 5.2.0 gevent: 22.10.2 gevent-eventemitter: 2.1 pycryptodomex: 3.16.0 enum34: Not Installed win-inet-pton: Not Installed Python runtime: executable: /opt/hostedtoolcache/Python/3.10.9/x64/bin/python3 version: 3.10.9 (main, Dec 7 2022, 08:16:13) [GCC 11.3.0] platform: linux System info: system: Linux machine: x86_64 release: 5.[15](https://github.com/Left024/GameSaves/actions/runs/3762787975/jobs/6395795156#step:5:16).0-1024-azure version: #30-Ubuntu SMP Wed Nov [16](https://github.com/Left024/GameSaves/actions/runs/3762787975/jobs/6395795156#step:5:17) 23:37:59 UTC [20](https://github.com/Left024/GameSaves/actions/runs/3762787975/jobs/6395795156#step:5:21)[22](https://github.com/Left024/GameSaves/actions/runs/3762787975/jobs/6395795156#step:5:23) ```
jethro1412 commented 1 year ago

Version 1.4.3 also affected

steam: 1.4.3

Dependencies:
                 vdf: 3.4
            protobuf: Not Installed
            requests: 2.25.1
          cachetools: 5.2.0
              gevent: Not Installed
 gevent-eventemitter: Not Installed
       pycryptodomex: 3.15.0
              enum34: Not Installed
       win-inet-pton: Not Installed

Python runtime:
          executable: /usr/bin/python3
             version: 3.10.6 (main, Nov 14 2022, 16:10:14) [GCC 11.3.0]
            platform: linux

System info:
              system: Linux
             machine: x86_64
             release: 5.15.0-1019-aws
             version: #23-Ubuntu SMP Wed Aug 17 18:33:13 UTC 2022
Marcelzocker999 commented 1 year ago

Same for me using WebAuth

/usr/lib/python3.8/json/decoder.py in raw_decode(self, s, idx) 353 obj, end = self.scan_once(s, idx) 354 except StopIteration as err: --> 355 raise JSONDecodeError("Expecting value", s, err.value) from None 356 return obj, end

JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Gobot1234 commented 1 year ago

I think the easiest fix for this ATM is to change the post to a get request and switch to using params instead of data, that seems to work for me

Marcelzocker999 commented 1 year ago

Fixed it by replacing WebAuth with login as Steam Client, but it's cookies expires fast, like 3-4 mins for me, so added relogin() func every time it did

UPD: noticed that relogin isn't refresh cookies, so it needs full relog using login() or cli_login(), that causes some bad feeling because of 2FA codes. Waiting for fix or another suggestions what to do Mabye somebody knows how to login using shared_secred code or steamguard file?

Mije36 commented 1 year ago

Same issue with me, I think Steam is trying to reduce bot recently. I check reciving message from WebAuth post to "https://steamcommunity.com/login/dologin/", and got "429 Too Many Requests". So json parser can't work properly.

Gobot1234 commented 1 year ago

It is entirely possible that Steam are just phasing out this endpoint considering AFAIK it's not used by official code anymore

rossengeorgiev commented 1 year ago

Can't replicate the OPs error, I get the correct data from the RSA, but login responds with 429. My guess is that they've decomissioned the old login flow. This mean I have to investigate the new one, and see how that works.

Fixed it by replacing WebAuth with login as Steam Client, but it's cookies expires fast, like 3-4 mins for me, so added relogin() func every time it did

That web sessions is bound the the steam client session, which I'm guessing you didn't keep alive, thus it timed out and both were expired. Calling client.idle() every minute or so, should be sufficient to keep it alive.

Marcelzocker999 commented 1 year ago

Can't replicate the OPs error, I get the correct data from the RSA, but login responds with 429. My guess is that they've decomissioned the old login flow. This mean I have to investigate the new one, and see how that works.

Fixed it by replacing WebAuth with login as Steam Client, but it's cookies expires fast, like 3-4 mins for me, so added relogin() func every time it did

That web sessions is bound the the steam client session, which I'm guessing you didn't keep alive, thus it timed out and both were expired. Calling client.idle() every minute or so, should be sufficient to keep it alive.

Seems like client.idle() worked for me, but anyway i'll wait for new webauth, because it is more suitable for my project. Btw, can you explain what does actually idle() does?

rossengeorgiev commented 1 year ago

Btw, can you explain what does actually idle() does?

SteamClient uses gevent for cooperative multasking, you need to yield to the event loop so other tasks can be processed, such as sending/receiving messages, client heartbeat, etc.

Kein commented 1 year ago

idle()

So is it like RunCallbacks in the original SDK/API?