API now need a fake user agent
authorBenoît Fontaine <benoitfontaine.ba@gmail.com>
Sat, 3 Dec 2022 20:02:48 +0000 (21:02 +0100)
committerBenoît Fontaine <benoitfontaine.ba@gmail.com>
Sat, 3 Dec 2022 20:02:48 +0000 (21:02 +0100)
getmyancestors/classes/session.py
requirements.txt
setup.cfg

index 0cc60992d6e7dcf29ec046c4325c2f3251e2558c..d7e795e0acac96db4940bdde1c6ad29ec67d2797 100644 (file)
@@ -3,6 +3,7 @@ import sys
 import time
 
 import requests
+from fake_useragent import UserAgent
 
 # local imports
 from getmyancestors.classes.translation import translations
@@ -24,6 +25,7 @@ class Session:
         self.timeout = timeout
         self.fid = self.lang = self.display_name = None
         self.counter = 0
+        self.headers = {"User-Agent": UserAgent().firefox}
         self.logged = self.login()
 
     def write_log(self, text):
@@ -42,10 +44,15 @@ class Session:
             try:
                 url = "https://www.familysearch.org/auth/familysearch/login"
                 self.write_log("Downloading: " + url)
-                r = requests.get(url, params={"ldsauth": False}, allow_redirects=False)
+                r = requests.get(
+                    url,
+                    params={"ldsauth": False},
+                    allow_redirects=False,
+                    headers=self.headers,
+                )
                 url = r.headers["Location"]
                 self.write_log("Downloading: " + url)
-                r = requests.get(url, allow_redirects=False)
+                r = requests.get(url, allow_redirects=False, headers=self.headers)
                 idx = r.text.index('name="params" value="')
                 span = r.text[idx + 21 :].index('"')
                 params = r.text[idx + 21 : idx + 21 + span]
@@ -60,6 +67,7 @@ class Session:
                         "password": self.password,
                     },
                     allow_redirects=False,
+                    headers=self.headers,
                 )
 
                 if "The username or password was incorrect" in r.text:
@@ -73,7 +81,7 @@ class Session:
 
                 url = r.headers["Location"]
                 self.write_log("Downloading: " + url)
-                r = requests.get(url, allow_redirects=False)
+                r = requests.get(url, allow_redirects=False, headers=self.headers)
                 self.fssessionid = r.cookies["fssessionid"]
             except requests.exceptions.ReadTimeout:
                 self.write_log("Read timed out")
@@ -103,6 +111,7 @@ class Session:
         self.counter += 1
         if headers is None:
             headers = {"Accept": "application/x-gedcomx-v1+json"}
+        headers.update(self.headers)
         while True:
             try:
                 self.write_log("Downloading: " + url)
index b202a57e9457d6e0acfc69620cbebfd0f5863d68..8c53acc87182898913652badf1e072deb491c45b 100644 (file)
@@ -1,3 +1,4 @@
 babelfish==0.6.0
 diskcache==5.2.1
 requests==2.25.1
+fake-useragent==1.1.0
index 098fc989fca163c8a29b22f82db284e8c4ba7ab5..92d8d72184cf8fa66385aaee152e95f1f901b0c0 100644 (file)
--- a/setup.cfg
+++ b/setup.cfg
@@ -18,6 +18,7 @@ install_requires =
   babelfish==0.6.0
   diskcache==5.2.1
   requests==2.25.1
+  fake-useragent==1.1.0
 
 [options.package_data]
 * = fstogedcom.png