From 6146103942e50b5b8b7eccbc9e69e7c56a5fdd32 Mon Sep 17 00:00:00 2001 From: "Joseph D. Marhee" Date: Fri, 24 May 2019 10:52:17 -0500 Subject: [PATCH] adds handling for 2fa code command-line argument --- deletefb/deletefb.py | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/deletefb/deletefb.py b/deletefb/deletefb.py index 01dd660..7d260ce 100755 --- a/deletefb/deletefb.py +++ b/deletefb/deletefb.py @@ -41,6 +41,15 @@ def run_delete(): help="The link to your Facebook profile, e.g. https://www.facebook.com/your.name" ) + parser.add_argument( + "-F", + "--two-factor", + required=False, + dest="two_factor_token", + type=str, + help="The code generated by your 2FA device for Facebook" + ) + parser.add_argument( "-H", "--headless", @@ -58,13 +67,15 @@ def run_delete(): user_email_address=args.email, user_password=args_user_password, user_profile_url=args.profile_url, - is_headless=args.is_headless + is_headless=args.is_headless, + two_factor_token=args.two_factor_token ) def delete_posts(user_email_address, user_password, user_profile_url, - is_headless): + is_headless, + two_factor_token): """ user_email_address: str Your Email user_password: str Your password @@ -89,6 +100,7 @@ def delete_posts(user_email_address, email = "email" password = "pass" login = "loginbutton" + approvals_code = "approvals_code" emailelement = driver.find_element_by_name(email) passwordelement = driver.find_element_by_name(password) @@ -100,10 +112,25 @@ def delete_posts(user_email_address, loginelement.click() if "two-factor authentication" in driver.page_source.lower(): - # Allow time to enter 2FA code - print("Pausing to enter 2FA code") - time.sleep(20) - print("Continuing execution") + + if two_factor_token: + + twofactorelement = driver.find_element_by_name(approvals_code) + twofactorelement.send_keys(two_factor_token) + + #Submits after the code is passed into the form, does not validate 2FA code. + contelement = driver.find_element_by_id("checkpointSubmitButton") + contelement.click() + + #Defaults to saving this new browser, this occurs on each new automated login. + save_browser = driver.find_element_by_id("checkpointSubmitButton") + save_browser.click() + else: + # Allow time to enter 2FA code + print("Pausing to enter 2FA code") + time.sleep(20) + print("Continuing execution") + driver.get(user_profile_url) for _ in range(MAX_POSTS):