Skip to content

Commit a0cbf82

Browse files
committed
feat: fix log in
1 parent acf853f commit a0cbf82

2 files changed

Lines changed: 36 additions & 33 deletions

File tree

src/meta_ai_api/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
__version__ = "1.2.1"
1+
__version__ = "1.2.2"
22
from .main import MetaAI # noqa

src/meta_ai_api/utils.py

Lines changed: 35 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ def format_response(response: dict) -> str:
8282

8383
# Function to perform the login
8484
def get_fb_session(email, password, proxies=None):
85-
login_url = "https://mbasic.facebook.com/login/"
85+
login_url = "https://www.facebook.com/login/?next"
8686
headers = {
8787
"authority": "mbasic.facebook.com",
8888
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
@@ -104,59 +104,60 @@ def get_fb_session(email, password, proxies=None):
104104
# Parse necessary parameters from the login form
105105
lsd = soup.find("input", {"name": "lsd"})["value"]
106106
jazoest = soup.find("input", {"name": "jazoest"})["value"]
107-
li = soup.find("input", {"name": "li"})["value"]
108-
m_ts = soup.find("input", {"name": "m_ts"})["value"]
109107

110108
# Define the URL and body for the POST request to submit the login form
111-
post_url = "https://mbasic.facebook.com/login/device-based/regular/login/?refsrc=deprecated&lwv=100"
109+
post_url = "https://www.facebook.com/login/?next"
112110
data = {
113111
"lsd": lsd,
114112
"jazoest": jazoest,
115-
"m_ts": m_ts,
116-
"li": li,
117-
"try_number": "0",
118-
"unrecognized_tries": "0",
113+
"login_source": "comet_headerless_login",
119114
"email": email,
120115
"pass": password,
121-
"login": "Log In",
122-
"bi_xrwh": "0",
116+
"login": "1",
117+
"next": None,
123118
}
124119

125120
headers = {
126-
"authority": "mbasic.facebook.com",
127-
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
128-
"accept-language": "en-US,en;q=0.9",
129-
"cache-control": "no-cache",
130-
"content-type": "application/x-www-form-urlencoded",
131-
"cookie": f"datr={response.cookies.get('datr')}; sb={response.cookies.get('sb')}; ps_n=1; ps_l=1",
132-
"dpr": "2",
133-
"origin": "https://mbasic.facebook.com",
134-
"pragma": "no-cache",
135-
"referer": "https://mbasic.facebook.com/login/",
136-
"sec-fetch-site": "same-origin",
137-
"sec-fetch-user": "?1",
138-
"upgrade-insecure-requests": "1",
139-
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
140-
"viewport-width": "1728",
121+
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:132.0) Gecko/20100101 Firefox/132.0",
122+
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
123+
"Accept-Language": "en-US,en;q=0.5",
124+
"Accept-Encoding": None,
125+
"Referer": "https://www.facebook.com/",
126+
"Content-Type": "application/x-www-form-urlencoded",
127+
"Origin": "https://www.facebook.com",
128+
"DNT": "1",
129+
"Sec-GPC": "1",
130+
"Connection": "keep-alive",
131+
"cookie": f"datr={response.cookies.get('datr')};",
132+
"Upgrade-Insecure-Requests": "1",
133+
"Sec-Fetch-Dest": "document",
134+
"Sec-Fetch-Mode": "navigate",
135+
"Sec-Fetch-Site": "same-origin",
136+
"Sec-Fetch-User": "?1",
137+
"Priority": "u=0, i",
141138
}
142139

140+
from requests import cookies
141+
143142
# Send the POST request
144143
session = requests.session()
144+
jar = cookies.RequestsCookieJar()
145145
session.proxies = proxies
146+
session.cookies = jar
146147

147148
result = session.post(post_url, headers=headers, data=data)
148-
if "sb" not in session.cookies:
149+
if "sb" not in jar:
149150
raise FacebookInvalidCredentialsException(
150151
"Was not able to login to Facebook. Please check your credentials. "
151152
"You may also have been rate limited. Try to connect to Facebook manually."
152153
)
153154

154155
cookies = {
155156
**result.cookies.get_dict(),
156-
"sb": session.cookies["sb"],
157-
"xs": session.cookies["xs"],
158-
"fr": session.cookies["fr"],
159-
"c_user": session.cookies["c_user"],
157+
"sb": jar["sb"],
158+
"xs": jar["xs"],
159+
"fr": jar["fr"],
160+
"c_user": jar["c_user"],
160161
}
161162

162163
response_login = {
@@ -184,7 +185,9 @@ def get_fb_session(email, password, proxies=None):
184185
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
185186
}
186187

187-
response = requests.request("POST", url, headers=headers, data=payload, proxies=proxies)
188+
response = requests.request(
189+
"POST", url, headers=headers, data=payload, proxies=proxies
190+
)
188191

189192
state = extract_value(response.text, start_str='"state":"', end_str='"')
190193

@@ -195,7 +198,7 @@ def get_fb_session(email, password, proxies=None):
195198
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
196199
"accept-language": "en-US,en;q=0.9",
197200
"cache-control": "no-cache",
198-
"cookie": f"datr={response_login['cookies']['datr']}; sb={response_login['cookies']['sb']}; c_user={response_login['cookies']['c_user']}; xs={response_login['cookies']['xs']}; fr={response_login['cookies']['fr']}; m_page_voice={response_login['cookies']['m_page_voice']}; abra_csrf={meta_ai_cookies['abra_csrf']};",
201+
"cookie": f"datr={response_login['cookies']['datr']}; sb={response_login['cookies']['sb']}; c_user={response_login['cookies']['c_user']}; xs={response_login['cookies']['xs']}; fr={response_login['cookies']['fr']}; abra_csrf={meta_ai_cookies['abra_csrf']};",
199202
"sec-fetch-dest": "document",
200203
"sec-fetch-mode": "navigate",
201204
"sec-fetch-site": "cross-site",

0 commit comments

Comments
 (0)