aws-google-auth: aws-google-auth failing after captcha with AttributeError

This worked this morning, but has just started failing recently. Perhaps Google have changed something recently.

$ aws-google-auth -k -a --idp-id ****** --sp-id ****** -R eu-west-1 -u andrew@***** -p **** -d 28800

Please visit the following URL to view your CAPTCHA: https://accounts.google.com/Captcha?v=2&ctoken=AAWk9lTZPTWjw0H2qZslq_5iOYNMgwYAp4YyWclEZ7tcbNSygw1uwrJBsuHN1x5ixClImPWivlzxazufFjr9czxGPpP30RnFLxAPCLiWo0gM6zEkj_5KHTzdJaPyQrUZJaq8A4fxPPkeG3PQkNC40tpjKDWGjkPfAg
Captcha (case insensitive): plingsmsp
ERROR:root:'NoneType' object has no attribute 'find_all'
Traceback (most recent call last):
  File "/Users/andrewlongwill/.pyenv/versions/3.9.10/envs/aws-google-auth-3.9.10/lib/python3.9/site-packages/aws_google_auth/__init__.py", line 79, in cli
    process_auth(args, config)
  File "/Users/andrewlongwill/.pyenv/versions/3.9.10/envs/aws-google-auth-3.9.10/lib/python3.9/site-packages/aws_google_auth/__init__.py", line 243, in process_auth
    google_client.do_login()
  File "/Users/andrewlongwill/.pyenv/versions/3.9.10/envs/aws-google-auth-3.9.10/lib/python3.9/site-packages/aws_google_auth/google.py", line 291, in do_login
    sess = self.handle_captcha(sess, payload)
  File "/Users/andrewlongwill/.pyenv/versions/3.9.10/envs/aws-google-auth-3.9.10/lib/python3.9/site-packages/aws_google_auth/google.py", line 432, in handle_captcha
    for tag in form.find_all('input'):
AttributeError: 'NoneType' object has no attribute 'find_all'

versions

python --version
Python 3.9.10
pip list                                                                                                                                                        ─╯
Package               Version
--------------------- -----------
aws-google-auth       0.0.37
beautifulsoup4        4.10.0
boto3                 1.20.51
botocore              1.23.51
certifi               2021.10.8
charset-normalizer    2.0.11
configparser          5.2.0
filelock              3.4.2
idna                  3.3
importlib-metadata    4.10.1
jmespath              0.10.0
keyring               23.5.0
keyrings.alt          4.1.0
lxml                  4.7.1
Pillow                9.0.1
pip                   22.0.4
python-dateutil       2.8.2
pytz-deprecation-shim 0.1.0.post0
requests              2.27.1
s3transfer            0.5.1
setuptools            58.1.0
six                   1.16.0
soupsieve             2.3.1
tabulate              0.8.9
tzdata                2021.5
tzlocal               4.1
urllib3               1.26.8
zipp                  3.7.0

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Reactions: 38
  • Comments: 22 (1 by maintainers)

Most upvoted comments

Simple fix based on the PR #250 -

Edit this file site-packages/aws_google_auth/google.py, and add those code lines in line 268 -

        # Set bg_response in request payload to passwd challenge
        if self.config.bg_response:
            payload['bgresponse'] = self.config.bg_response

You can take the absolute path from the error above in your machine -

ERROR:root:'NoneType' object has no attribute 'find_all'
Traceback (most recent call last):
  File "/home/bityob/.local/lib/python3.8/site-packages/aws_google_auth/__init__.py", line 79, in cli
    process_auth(args, config)
  File "/home/bityob/.local/lib/python3.8/site-packages/aws_google_auth/__init__.py", line 243, in process_auth
    google_client.do_login()
  File "/home/bityob/.local/lib/python3.8/site-packages/aws_google_auth/google.py", line 291, in do_login
    sess = self.handle_captcha(sess, payload)
  File "/home/bityob/.local/lib/python3.8/site-packages/aws_google_auth/google.py", line 432, in handle_captcha
    for tag in form.find_all('input'):
AttributeError: 'NoneType' object has no attribute 'find_all'

“/home/bityob/.local/lib/python3.8/site-packages/aws_google_auth/google.py”

Example -

image

If you installed aws-google-auth via homebrew, you can directly replace the file mentioned in the error above with the one from the PR. My path was different than the one above so use the path in the error. Url to file from PR: https://github.com/ezequielsbarros/aws-google-auth/blob/d7d70010bac0494a5902e92a3bd7e124611cd6c1/aws_google_auth/google.py

I was having this issue last week and followed the fix in here

I’m using this tool now. No need to deal w/ captcha and MFA as well. you guys can check https://www.leapp.cloud/

You need to apply the fix, something like this (uninstall old one first):

git clone git@github.com:ezequielsbarros/aws-google-auth.git
Cloning into 'aws-google-auth'...
    ...

cd aws-google-auth 
git checkout fix-js-background-param-in-challenge 
    ...

pip3 install -e .

then after install had to symlink to the bin which on my system is this:

cd /usr/local/bin
ln -s  /usr/local/Cellar/python@3.9/3.9.12/Frameworks/Python.framework/Versions/3.9/bin/aws-google-auth

then also add the --bg-response js_enabled param to the actual call to updated binary, thats how we’re doing it. Or just replace file directly however you have it installed.

My entire team is having issues with aws-google-auth today. I tried resetting user cookies, uninstalled & installed aws-google-auth but none of the solution did not fix the issue. Can some one shed the light what is going on. Error:

Google Password: ERROR:root:‘NoneType’ object has no attribute ‘get’ Traceback (most recent call last): File “/Users//Library/Python/3.8/lib/python/site-packages/aws_google_auth/init.py", line 79, in cli process_auth(args, config) File "/Users//Library/Python/3.8/lib/python/site-packages/aws_google_auth/init.py”, line 243, in process_auth google_client.do_login() File “/Users/***/Library/Python/3.8/lib/python/site-packages/aws_google_auth/google.py”, line 256, in do_login passwd_challenge_url = ‘https://accounts.google.com’ + form.get(‘action’) AttributeError: ‘NoneType’ object has no attribute ‘get’

Can you update the docker image on dockerhub to reflect the latest change?

Yea, setting up a venv to see if we can regex the URL to image or something, the tag parsing seems fragile